{"version":3,"file":"js/chunk-vendors-legacy.360ff59e.js","mappings":"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","sources":["webpack://web/./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://web/./node_modules/ansi-to-html/lib/ansi_to_html.js","webpack://web/./node_modules/axios/index.js","webpack://web/./node_modules/axios/lib/adapters/xhr.js","webpack://web/./node_modules/axios/lib/axios.js","webpack://web/./node_modules/axios/lib/cancel/Cancel.js","webpack://web/./node_modules/axios/lib/cancel/CancelToken.js","webpack://web/./node_modules/axios/lib/cancel/isCancel.js","webpack://web/./node_modules/axios/lib/core/Axios.js","webpack://web/./node_modules/axios/lib/core/InterceptorManager.js","webpack://web/./node_modules/axios/lib/core/buildFullPath.js","webpack://web/./node_modules/axios/lib/core/createError.js","webpack://web/./node_modules/axios/lib/core/dispatchRequest.js","webpack://web/./node_modules/axios/lib/core/enhanceError.js","webpack://web/./node_modules/axios/lib/core/mergeConfig.js","webpack://web/./node_modules/axios/lib/core/settle.js","webpack://web/./node_modules/axios/lib/core/transformData.js","webpack://web/./node_modules/axios/lib/defaults.js","webpack://web/./node_modules/axios/lib/helpers/bind.js","webpack://web/./node_modules/axios/lib/helpers/buildURL.js","webpack://web/./node_modules/axios/lib/helpers/combineURLs.js","webpack://web/./node_modules/axios/lib/helpers/cookies.js","webpack://web/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://web/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://web/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://web/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://web/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://web/./node_modules/axios/lib/helpers/spread.js","webpack://web/./node_modules/axios/lib/helpers/validator.js","webpack://web/./node_modules/axios/lib/utils.js","webpack://web/./node_modules/codemirror/addon/display/placeholder.js","webpack://web/./node_modules/codemirror/addon/lint/json-lint.js","webpack://web/./node_modules/codemirror/addon/mode/multiplex.js","webpack://web/./node_modules/codemirror/addon/mode/overlay.js","webpack://web/./node_modules/codemirror/addon/mode/simple.js","webpack://web/./node_modules/codemirror/lib/codemirror.js","webpack://web/./node_modules/codemirror/mode/coffeescript/coffeescript.js","webpack://web/./node_modules/codemirror/mode/css/css.js","webpack://web/./node_modules/codemirror/mode/handlebars/handlebars.js","webpack://web/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://web/./node_modules/codemirror/mode/javascript/javascript.js","webpack://web/./node_modules/codemirror/mode/pug/pug.js","webpack://web/./node_modules/codemirror/mode/sass/sass.js","webpack://web/./node_modules/codemirror/mode/stylus/stylus.js","webpack://web/./node_modules/codemirror/mode/vue/vue.js","webpack://web/./node_modules/codemirror/mode/xml/xml.js","webpack://web/./node_modules/core-js/internals/a-callable.js","webpack://web/./node_modules/core-js/internals/a-constructor.js","webpack://web/./node_modules/core-js/internals/a-possible-prototype.js","webpack://web/./node_modules/core-js/internals/add-to-unscopables.js","webpack://web/./node_modules/core-js/internals/advance-string-index.js","webpack://web/./node_modules/core-js/internals/an-instance.js","webpack://web/./node_modules/core-js/internals/an-object.js","webpack://web/./node_modules/core-js/internals/array-buffer-non-extensible.js","webpack://web/./node_modules/core-js/internals/array-fill.js","webpack://web/./node_modules/core-js/internals/array-for-each.js","webpack://web/./node_modules/core-js/internals/array-from.js","webpack://web/./node_modules/core-js/internals/array-includes.js","webpack://web/./node_modules/core-js/internals/array-iteration.js","webpack://web/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://web/./node_modules/core-js/internals/array-method-is-strict.js","webpack://web/./node_modules/core-js/internals/array-slice-simple.js","webpack://web/./node_modules/core-js/internals/array-slice.js","webpack://web/./node_modules/core-js/internals/array-sort.js","webpack://web/./node_modules/core-js/internals/array-species-constructor.js","webpack://web/./node_modules/core-js/internals/array-species-create.js","webpack://web/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://web/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://web/./node_modules/core-js/internals/classof-raw.js","webpack://web/./node_modules/core-js/internals/classof.js","webpack://web/./node_modules/core-js/internals/clear-error-stack.js","webpack://web/./node_modules/core-js/internals/collection-strong.js","webpack://web/./node_modules/core-js/internals/collection.js","webpack://web/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://web/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://web/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://web/./node_modules/core-js/internals/create-html.js","webpack://web/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://web/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://web/./node_modules/core-js/internals/create-property-descriptor.js","webpack://web/./node_modules/core-js/internals/create-property.js","webpack://web/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://web/./node_modules/core-js/internals/define-built-in.js","webpack://web/./node_modules/core-js/internals/define-built-ins.js","webpack://web/./node_modules/core-js/internals/define-global-property.js","webpack://web/./node_modules/core-js/internals/define-iterator.js","webpack://web/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://web/./node_modules/core-js/internals/delete-property-or-throw.js","webpack://web/./node_modules/core-js/internals/descriptors.js","webpack://web/./node_modules/core-js/internals/document-create-element.js","webpack://web/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://web/./node_modules/core-js/internals/dom-iterables.js","webpack://web/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://web/./node_modules/core-js/internals/engine-ff-version.js","webpack://web/./node_modules/core-js/internals/engine-is-browser.js","webpack://web/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://web/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://web/./node_modules/core-js/internals/engine-is-ios.js","webpack://web/./node_modules/core-js/internals/engine-is-node.js","webpack://web/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://web/./node_modules/core-js/internals/engine-user-agent.js","webpack://web/./node_modules/core-js/internals/engine-v8-version.js","webpack://web/./node_modules/core-js/internals/engine-webkit-version.js","webpack://web/./node_modules/core-js/internals/enum-bug-keys.js","webpack://web/./node_modules/core-js/internals/error-stack-installable.js","webpack://web/./node_modules/core-js/internals/export.js","webpack://web/./node_modules/core-js/internals/fails.js","webpack://web/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://web/./node_modules/core-js/internals/flatten-into-array.js","webpack://web/./node_modules/core-js/internals/freezing.js","webpack://web/./node_modules/core-js/internals/function-apply.js","webpack://web/./node_modules/core-js/internals/function-bind-context.js","webpack://web/./node_modules/core-js/internals/function-bind-native.js","webpack://web/./node_modules/core-js/internals/function-bind.js","webpack://web/./node_modules/core-js/internals/function-call.js","webpack://web/./node_modules/core-js/internals/function-name.js","webpack://web/./node_modules/core-js/internals/function-uncurry-this.js","webpack://web/./node_modules/core-js/internals/get-built-in.js","webpack://web/./node_modules/core-js/internals/get-iterator-method.js","webpack://web/./node_modules/core-js/internals/get-iterator.js","webpack://web/./node_modules/core-js/internals/get-method.js","webpack://web/./node_modules/core-js/internals/get-substitution.js","webpack://web/./node_modules/core-js/internals/global.js","webpack://web/./node_modules/core-js/internals/has-own-property.js","webpack://web/./node_modules/core-js/internals/hidden-keys.js","webpack://web/./node_modules/core-js/internals/host-report-errors.js","webpack://web/./node_modules/core-js/internals/html.js","webpack://web/./node_modules/core-js/internals/ie8-dom-define.js","webpack://web/./node_modules/core-js/internals/indexed-object.js","webpack://web/./node_modules/core-js/internals/inherit-if-required.js","webpack://web/./node_modules/core-js/internals/inspect-source.js","webpack://web/./node_modules/core-js/internals/install-error-cause.js","webpack://web/./node_modules/core-js/internals/internal-metadata.js","webpack://web/./node_modules/core-js/internals/internal-state.js","webpack://web/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://web/./node_modules/core-js/internals/is-array.js","webpack://web/./node_modules/core-js/internals/is-callable.js","webpack://web/./node_modules/core-js/internals/is-constructor.js","webpack://web/./node_modules/core-js/internals/is-data-descriptor.js","webpack://web/./node_modules/core-js/internals/is-forced.js","webpack://web/./node_modules/core-js/internals/is-object.js","webpack://web/./node_modules/core-js/internals/is-pure.js","webpack://web/./node_modules/core-js/internals/is-regexp.js","webpack://web/./node_modules/core-js/internals/is-symbol.js","webpack://web/./node_modules/core-js/internals/iterate.js","webpack://web/./node_modules/core-js/internals/iterator-close.js","webpack://web/./node_modules/core-js/internals/iterators-core.js","webpack://web/./node_modules/core-js/internals/iterators.js","webpack://web/./node_modules/core-js/internals/length-of-array-like.js","webpack://web/./node_modules/core-js/internals/make-built-in.js","webpack://web/./node_modules/core-js/internals/math-sign.js","webpack://web/./node_modules/core-js/internals/math-trunc.js","webpack://web/./node_modules/core-js/internals/microtask.js","webpack://web/./node_modules/core-js/internals/native-symbol-registry.js","webpack://web/./node_modules/core-js/internals/native-symbol.js","webpack://web/./node_modules/core-js/internals/native-weak-map.js","webpack://web/./node_modules/core-js/internals/new-promise-capability.js","webpack://web/./node_modules/core-js/internals/normalize-string-argument.js","webpack://web/./node_modules/core-js/internals/not-a-regexp.js","webpack://web/./node_modules/core-js/internals/object-assign.js","webpack://web/./node_modules/core-js/internals/object-create.js","webpack://web/./node_modules/core-js/internals/object-define-properties.js","webpack://web/./node_modules/core-js/internals/object-define-property.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://web/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://web/./node_modules/core-js/internals/object-is-extensible.js","webpack://web/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://web/./node_modules/core-js/internals/object-keys-internal.js","webpack://web/./node_modules/core-js/internals/object-keys.js","webpack://web/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://web/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://web/./node_modules/core-js/internals/object-to-array.js","webpack://web/./node_modules/core-js/internals/object-to-string.js","webpack://web/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://web/./node_modules/core-js/internals/own-keys.js","webpack://web/./node_modules/core-js/internals/path.js","webpack://web/./node_modules/core-js/internals/perform.js","webpack://web/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://web/./node_modules/core-js/internals/promise-native-constructor.js","webpack://web/./node_modules/core-js/internals/promise-resolve.js","webpack://web/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://web/./node_modules/core-js/internals/proxy-accessor.js","webpack://web/./node_modules/core-js/internals/queue.js","webpack://web/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://web/./node_modules/core-js/internals/regexp-exec.js","webpack://web/./node_modules/core-js/internals/regexp-flags.js","webpack://web/./node_modules/core-js/internals/regexp-get-flags.js","webpack://web/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://web/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://web/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://web/./node_modules/core-js/internals/require-object-coercible.js","webpack://web/./node_modules/core-js/internals/same-value.js","webpack://web/./node_modules/core-js/internals/set-species.js","webpack://web/./node_modules/core-js/internals/set-to-string-tag.js","webpack://web/./node_modules/core-js/internals/shared-key.js","webpack://web/./node_modules/core-js/internals/shared-store.js","webpack://web/./node_modules/core-js/internals/shared.js","webpack://web/./node_modules/core-js/internals/species-constructor.js","webpack://web/./node_modules/core-js/internals/string-html-forced.js","webpack://web/./node_modules/core-js/internals/string-multibyte.js","webpack://web/./node_modules/core-js/internals/string-repeat.js","webpack://web/./node_modules/core-js/internals/string-trim-forced.js","webpack://web/./node_modules/core-js/internals/string-trim.js","webpack://web/./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack://web/./node_modules/core-js/internals/task.js","webpack://web/./node_modules/core-js/internals/this-number-value.js","webpack://web/./node_modules/core-js/internals/to-absolute-index.js","webpack://web/./node_modules/core-js/internals/to-indexed-object.js","webpack://web/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://web/./node_modules/core-js/internals/to-length.js","webpack://web/./node_modules/core-js/internals/to-object.js","webpack://web/./node_modules/core-js/internals/to-primitive.js","webpack://web/./node_modules/core-js/internals/to-property-key.js","webpack://web/./node_modules/core-js/internals/to-string-tag-support.js","webpack://web/./node_modules/core-js/internals/to-string.js","webpack://web/./node_modules/core-js/internals/try-to-string.js","webpack://web/./node_modules/core-js/internals/uid.js","webpack://web/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://web/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://web/./node_modules/core-js/internals/validate-arguments-length.js","webpack://web/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://web/./node_modules/core-js/internals/well-known-symbol.js","webpack://web/./node_modules/core-js/internals/whitespaces.js","webpack://web/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://web/./node_modules/core-js/modules/es.array.concat.js","webpack://web/./node_modules/core-js/modules/es.array.fill.js","webpack://web/./node_modules/core-js/modules/es.array.filter.js","webpack://web/./node_modules/core-js/modules/es.array.find-index.js","webpack://web/./node_modules/core-js/modules/es.array.find.js","webpack://web/./node_modules/core-js/modules/es.array.flat.js","webpack://web/./node_modules/core-js/modules/es.array.from.js","webpack://web/./node_modules/core-js/modules/es.array.includes.js","webpack://web/./node_modules/core-js/modules/es.array.iterator.js","webpack://web/./node_modules/core-js/modules/es.array.join.js","webpack://web/./node_modules/core-js/modules/es.array.map.js","webpack://web/./node_modules/core-js/modules/es.array.slice.js","webpack://web/./node_modules/core-js/modules/es.array.sort.js","webpack://web/./node_modules/core-js/modules/es.array.splice.js","webpack://web/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://web/./node_modules/core-js/modules/es.error.cause.js","webpack://web/./node_modules/core-js/modules/es.function.name.js","webpack://web/./node_modules/core-js/modules/es.json.stringify.js","webpack://web/./node_modules/core-js/modules/es.json.to-string-tag.js","webpack://web/./node_modules/core-js/modules/es.map.constructor.js","webpack://web/./node_modules/core-js/modules/es.map.js","webpack://web/./node_modules/core-js/modules/es.math.cbrt.js","webpack://web/./node_modules/core-js/modules/es.math.sign.js","webpack://web/./node_modules/core-js/modules/es.math.to-string-tag.js","webpack://web/./node_modules/core-js/modules/es.number.constructor.js","webpack://web/./node_modules/core-js/modules/es.number.is-nan.js","webpack://web/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://web/./node_modules/core-js/modules/es.object.assign.js","webpack://web/./node_modules/core-js/modules/es.object.freeze.js","webpack://web/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://web/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://web/./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack://web/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://web/./node_modules/core-js/modules/es.object.is.js","webpack://web/./node_modules/core-js/modules/es.object.keys.js","webpack://web/./node_modules/core-js/modules/es.object.to-string.js","webpack://web/./node_modules/core-js/modules/es.object.values.js","webpack://web/./node_modules/core-js/modules/es.promise.all.js","webpack://web/./node_modules/core-js/modules/es.promise.catch.js","webpack://web/./node_modules/core-js/modules/es.promise.constructor.js","webpack://web/./node_modules/core-js/modules/es.promise.finally.js","webpack://web/./node_modules/core-js/modules/es.promise.js","webpack://web/./node_modules/core-js/modules/es.promise.race.js","webpack://web/./node_modules/core-js/modules/es.promise.reject.js","webpack://web/./node_modules/core-js/modules/es.promise.resolve.js","webpack://web/./node_modules/core-js/modules/es.reflect.construct.js","webpack://web/./node_modules/core-js/modules/es.reflect.get.js","webpack://web/./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack://web/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://web/./node_modules/core-js/modules/es.regexp.dot-all.js","webpack://web/./node_modules/core-js/modules/es.regexp.exec.js","webpack://web/./node_modules/core-js/modules/es.regexp.sticky.js","webpack://web/./node_modules/core-js/modules/es.regexp.test.js","webpack://web/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://web/./node_modules/core-js/modules/es.string.anchor.js","webpack://web/./node_modules/core-js/modules/es.string.ends-with.js","webpack://web/./node_modules/core-js/modules/es.string.fixed.js","webpack://web/./node_modules/core-js/modules/es.string.includes.js","webpack://web/./node_modules/core-js/modules/es.string.iterator.js","webpack://web/./node_modules/core-js/modules/es.string.link.js","webpack://web/./node_modules/core-js/modules/es.string.match.js","webpack://web/./node_modules/core-js/modules/es.string.repeat.js","webpack://web/./node_modules/core-js/modules/es.string.replace.js","webpack://web/./node_modules/core-js/modules/es.string.search.js","webpack://web/./node_modules/core-js/modules/es.string.small.js","webpack://web/./node_modules/core-js/modules/es.string.split.js","webpack://web/./node_modules/core-js/modules/es.string.starts-with.js","webpack://web/./node_modules/core-js/modules/es.string.trim.js","webpack://web/./node_modules/core-js/modules/es.symbol.async-iterator.js","webpack://web/./node_modules/core-js/modules/es.symbol.constructor.js","webpack://web/./node_modules/core-js/modules/es.symbol.description.js","webpack://web/./node_modules/core-js/modules/es.symbol.for.js","webpack://web/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://web/./node_modules/core-js/modules/es.symbol.js","webpack://web/./node_modules/core-js/modules/es.symbol.key-for.js","webpack://web/./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack://web/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://web/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://web/./node_modules/entities/lib/decode.js","webpack://web/./node_modules/entities/lib/decode_codepoint.js","webpack://web/./node_modules/entities/lib/encode.js","webpack://web/./node_modules/entities/lib/index.js","webpack://web/./node_modules/moment/locale/af.js","webpack://web/./node_modules/moment/locale/ar-dz.js","webpack://web/./node_modules/moment/locale/ar-kw.js","webpack://web/./node_modules/moment/locale/ar-ly.js","webpack://web/./node_modules/moment/locale/ar-ma.js","webpack://web/./node_modules/moment/locale/ar-sa.js","webpack://web/./node_modules/moment/locale/ar-tn.js","webpack://web/./node_modules/moment/locale/ar.js","webpack://web/./node_modules/moment/locale/az.js","webpack://web/./node_modules/moment/locale/be.js","webpack://web/./node_modules/moment/locale/bg.js","webpack://web/./node_modules/moment/locale/bm.js","webpack://web/./node_modules/moment/locale/bn-bd.js","webpack://web/./node_modules/moment/locale/bn.js","webpack://web/./node_modules/moment/locale/bo.js","webpack://web/./node_modules/moment/locale/br.js","webpack://web/./node_modules/moment/locale/bs.js","webpack://web/./node_modules/moment/locale/ca.js","webpack://web/./node_modules/moment/locale/cs.js","webpack://web/./node_modules/moment/locale/cv.js","webpack://web/./node_modules/moment/locale/cy.js","webpack://web/./node_modules/moment/locale/da.js","webpack://web/./node_modules/moment/locale/de-at.js","webpack://web/./node_modules/moment/locale/de-ch.js","webpack://web/./node_modules/moment/locale/de.js","webpack://web/./node_modules/moment/locale/dv.js","webpack://web/./node_modules/moment/locale/el.js","webpack://web/./node_modules/moment/locale/en-au.js","webpack://web/./node_modules/moment/locale/en-ca.js","webpack://web/./node_modules/moment/locale/en-gb.js","webpack://web/./node_modules/moment/locale/en-ie.js","webpack://web/./node_modules/moment/locale/en-il.js","webpack://web/./node_modules/moment/locale/en-in.js","webpack://web/./node_modules/moment/locale/en-nz.js","webpack://web/./node_modules/moment/locale/en-sg.js","webpack://web/./node_modules/moment/locale/eo.js","webpack://web/./node_modules/moment/locale/es-do.js","webpack://web/./node_modules/moment/locale/es-mx.js","webpack://web/./node_modules/moment/locale/es-us.js","webpack://web/./node_modules/moment/locale/es.js","webpack://web/./node_modules/moment/locale/et.js","webpack://web/./node_modules/moment/locale/eu.js","webpack://web/./node_modules/moment/locale/fa.js","webpack://web/./node_modules/moment/locale/fi.js","webpack://web/./node_modules/moment/locale/fil.js","webpack://web/./node_modules/moment/locale/fo.js","webpack://web/./node_modules/moment/locale/fr-ca.js","webpack://web/./node_modules/moment/locale/fr-ch.js","webpack://web/./node_modules/moment/locale/fr.js","webpack://web/./node_modules/moment/locale/fy.js","webpack://web/./node_modules/moment/locale/ga.js","webpack://web/./node_modules/moment/locale/gd.js","webpack://web/./node_modules/moment/locale/gl.js","webpack://web/./node_modules/moment/locale/gom-deva.js","webpack://web/./node_modules/moment/locale/gom-latn.js","webpack://web/./node_modules/moment/locale/gu.js","webpack://web/./node_modules/moment/locale/he.js","webpack://web/./node_modules/moment/locale/hi.js","webpack://web/./node_modules/moment/locale/hr.js","webpack://web/./node_modules/moment/locale/hu.js","webpack://web/./node_modules/moment/locale/hy-am.js","webpack://web/./node_modules/moment/locale/id.js","webpack://web/./node_modules/moment/locale/is.js","webpack://web/./node_modules/moment/locale/it-ch.js","webpack://web/./node_modules/moment/locale/it.js","webpack://web/./node_modules/moment/locale/ja.js","webpack://web/./node_modules/moment/locale/jv.js","webpack://web/./node_modules/moment/locale/ka.js","webpack://web/./node_modules/moment/locale/kk.js","webpack://web/./node_modules/moment/locale/km.js","webpack://web/./node_modules/moment/locale/kn.js","webpack://web/./node_modules/moment/locale/ko.js","webpack://web/./node_modules/moment/locale/ku.js","webpack://web/./node_modules/moment/locale/ky.js","webpack://web/./node_modules/moment/locale/lb.js","webpack://web/./node_modules/moment/locale/lo.js","webpack://web/./node_modules/moment/locale/lt.js","webpack://web/./node_modules/moment/locale/lv.js","webpack://web/./node_modules/moment/locale/me.js","webpack://web/./node_modules/moment/locale/mi.js","webpack://web/./node_modules/moment/locale/mk.js","webpack://web/./node_modules/moment/locale/ml.js","webpack://web/./node_modules/moment/locale/mn.js","webpack://web/./node_modules/moment/locale/mr.js","webpack://web/./node_modules/moment/locale/ms-my.js","webpack://web/./node_modules/moment/locale/ms.js","webpack://web/./node_modules/moment/locale/mt.js","webpack://web/./node_modules/moment/locale/my.js","webpack://web/./node_modules/moment/locale/nb.js","webpack://web/./node_modules/moment/locale/ne.js","webpack://web/./node_modules/moment/locale/nl-be.js","webpack://web/./node_modules/moment/locale/nl.js","webpack://web/./node_modules/moment/locale/nn.js","webpack://web/./node_modules/moment/locale/oc-lnc.js","webpack://web/./node_modules/moment/locale/pa-in.js","webpack://web/./node_modules/moment/locale/pl.js","webpack://web/./node_modules/moment/locale/pt-br.js","webpack://web/./node_modules/moment/locale/pt.js","webpack://web/./node_modules/moment/locale/ro.js","webpack://web/./node_modules/moment/locale/ru.js","webpack://web/./node_modules/moment/locale/sd.js","webpack://web/./node_modules/moment/locale/se.js","webpack://web/./node_modules/moment/locale/si.js","webpack://web/./node_modules/moment/locale/sk.js","webpack://web/./node_modules/moment/locale/sl.js","webpack://web/./node_modules/moment/locale/sq.js","webpack://web/./node_modules/moment/locale/sr-cyrl.js","webpack://web/./node_modules/moment/locale/sr.js","webpack://web/./node_modules/moment/locale/ss.js","webpack://web/./node_modules/moment/locale/sv.js","webpack://web/./node_modules/moment/locale/sw.js","webpack://web/./node_modules/moment/locale/ta.js","webpack://web/./node_modules/moment/locale/te.js","webpack://web/./node_modules/moment/locale/tet.js","webpack://web/./node_modules/moment/locale/tg.js","webpack://web/./node_modules/moment/locale/th.js","webpack://web/./node_modules/moment/locale/tk.js","webpack://web/./node_modules/moment/locale/tl-ph.js","webpack://web/./node_modules/moment/locale/tlh.js","webpack://web/./node_modules/moment/locale/tr.js","webpack://web/./node_modules/moment/locale/tzl.js","webpack://web/./node_modules/moment/locale/tzm-latn.js","webpack://web/./node_modules/moment/locale/tzm.js","webpack://web/./node_modules/moment/locale/ug-cn.js","webpack://web/./node_modules/moment/locale/uk.js","webpack://web/./node_modules/moment/locale/ur.js","webpack://web/./node_modules/moment/locale/uz-latn.js","webpack://web/./node_modules/moment/locale/uz.js","webpack://web/./node_modules/moment/locale/vi.js","webpack://web/./node_modules/moment/locale/x-pseudo.js","webpack://web/./node_modules/moment/locale/yo.js","webpack://web/./node_modules/moment/locale/zh-cn.js","webpack://web/./node_modules/moment/locale/zh-hk.js","webpack://web/./node_modules/moment/locale/zh-mo.js","webpack://web/./node_modules/moment/locale/zh-tw.js","webpack://web/./node_modules/moment/moment.js","webpack://web/./node_modules/sortablejs/modular/sortable.esm.js","webpack://web/../../../src/mixins/transitionable/index.ts","webpack://web/../../../src/components/VAlert/VAlert.ts","webpack://web/../../../src/components/VApp/VApp.ts","webpack://web/../../../src/components/VAppBar/VAppBarNavIcon.ts","webpack://web/../../../src/components/VAutocomplete/VAutocomplete.ts","webpack://web/../../../src/components/VAvatar/VAvatar.ts","webpack://web/../../../src/components/VBottomSheet/VBottomSheet.ts","webpack://web/../../../src/components/VProgressCircular/index.ts","webpack://web/../../../src/components/VBtn/VBtn.ts","webpack://web/../../../src/components/VBtn/index.ts","webpack://web/../../../src/components/VCard/VCard.ts","webpack://web/../../../src/components/VCard/index.ts","webpack://web/../../../src/components/VCheckbox/VCheckbox.ts","webpack://web/../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack://web/../../../src/components/VChip/VChip.ts","webpack://web/../../../src/components/VChip/index.ts","webpack://web/../../../src/components/VChipGroup/VChipGroup.ts","webpack://web/../../../src/components/VData/VData.ts","webpack://web/../../../src/components/VDataIterator/VDataFooter.ts","webpack://web/../../../src/components/VDataIterator/VDataIterator.ts","webpack://web/../../../../src/components/VDataTable/mixins/header.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack://web/../../src/util/dedupeModelListeners.ts","webpack://web/../../src/util/rebuildFunctionalSlots.ts","webpack://web/../../../src/components/VDataTable/VDataTableHeader.ts","webpack://web/../../../src/components/VDataTable/Row.ts","webpack://web/../../../src/components/VDataTable/RowGroup.ts","webpack://web/../../../src/components/VDataTable/VSimpleTable.ts","webpack://web/../../../src/components/VDataTable/MobileRow.ts","webpack://web/../../../src/components/VDataTable/VDataTable.ts","webpack://web/../../../src/components/VDialog/VDialog.ts","webpack://web/../../../src/components/VForm/VForm.ts","webpack://web/../../../src/components/VGrid/VCol.ts","webpack://web/../../../src/components/VGrid/grid.ts","webpack://web/../../../src/components/VGrid/VContainer.ts","webpack://web/../../../src/components/VGrid/VRow.ts","webpack://web/../../../src/components/VGrid/VSpacer.ts","webpack://web/../../../src/components/VIcon/VIcon.ts","webpack://web/../../../src/components/VIcon/index.ts","webpack://web/../../../src/components/VResponsive/VResponsive.ts","webpack://web/../../../src/components/VResponsive/index.ts","webpack://web/../../../src/components/VImg/VImg.ts","webpack://web/../../../src/components/VMessages/VMessages.ts","webpack://web/../../../src/components/VMessages/index.ts","webpack://web/../../../src/components/VInput/VInput.ts","webpack://web/../../../src/components/VInput/index.ts","webpack://web/../../../src/components/VItemGroup/VItemGroup.ts","webpack://web/../../../src/components/VLabel/VLabel.ts","webpack://web/../../../src/components/VLabel/index.ts","webpack://web/../../../src/components/VList/VList.ts","webpack://web/../../../src/components/VList/VListItem.ts","webpack://web/../../../src/components/VList/VListItemAction.ts","webpack://web/../../../src/components/VList/VListItemIcon.ts","webpack://web/../../../src/components/VList/VListGroup.ts","webpack://web/../../../src/components/VList/VListItemGroup.ts","webpack://web/../../../src/components/VAvatar/index.ts","webpack://web/../../../src/components/VList/VListItemAvatar.ts","webpack://web/../../../src/components/VList/index.ts","webpack://web/../../../src/components/VMain/VMain.ts","webpack://web/../../../src/components/VMenu/VMenu.ts","webpack://web/../../../src/mixins/applicationable/index.ts","webpack://web/../../../src/components/VNavigationDrawer/VNavigationDrawer.ts","webpack://web/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://web/../../../src/components/VProgressLinear/VProgressLinear.ts","webpack://web/../../../src/components/VMenu/index.ts","webpack://web/../../../src/components/VDivider/VDivider.ts","webpack://web/../../../src/components/VDivider/index.ts","webpack://web/../../../src/components/VSubheader/index.ts","webpack://web/../../../src/components/VSelect/VSelectList.ts","webpack://web/../../../src/mixins/filterable/index.ts","webpack://web/../../../src/components/VSelect/VSelect.ts","webpack://web/../../../src/components/VSheet/VSheet.ts","webpack://web/../../../src/components/VSheet/index.ts","webpack://web/../../../src/components/VSlideGroup/VSlideGroup.ts","webpack://web/../../../src/components/VSnackbar/VSnackbar.ts","webpack://web/../../../src/components/VSubheader/VSubheader.ts","webpack://web/../../../src/components/VSwitch/VSwitch.ts","webpack://web/../../../src/components/VTabs/VTab.ts","webpack://web/../../../src/components/VTabs/VTabsBar.ts","webpack://web/../../../src/components/VWindow/VWindow.ts","webpack://web/../../../src/components/VTabs/VTabsItems.ts","webpack://web/../../../src/components/VTabs/VTabsSlider.ts","webpack://web/../../../src/components/VTabs/VTabs.ts","webpack://web/../../../src/components/VCounter/VCounter.ts","webpack://web/../../../src/components/VCounter/index.ts","webpack://web/../../../src/mixins/intersectable/index.ts","webpack://web/../../../src/components/VTextField/VTextField.ts","webpack://web/../../../src/components/VTextarea/VTextarea.ts","webpack://web/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://web/../../../src/components/VToolbar/VToolbar.ts","webpack://web/../../../src/components/VToolbar/index.ts","webpack://web/../../../src/components/VTooltip/VTooltip.ts","webpack://web/../../../src/components/transitions/createTransition.ts","webpack://web/../../../src/components/transitions/expand-transition.ts","webpack://web/../../../src/components/transitions/index.ts","webpack://web/../../../src/directives/click-outside/index.ts","webpack://web/../../../src/directives/intersect/index.ts","webpack://web/../../../src/directives/resize/index.ts","webpack://web/../../../src/directives/ripple/index.ts","webpack://web/../../../src/directives/touch/index.ts","webpack://web/../src/install.ts","webpack://web/../../src/locale/en.ts","webpack://web/../../../src/presets/default/index.ts","webpack://web/../../../src/services/presets/index.ts","webpack://web/../../../src/services/application/index.ts","webpack://web/../../../src/services/breakpoint/index.ts","webpack://web/../../../../src/services/icons/presets/mdi-svg.ts","webpack://web/../../../../src/services/icons/presets/md.ts","webpack://web/../../../../src/services/icons/presets/mdi.ts","webpack://web/../../../../src/services/icons/presets/fa.ts","webpack://web/../../../../src/services/icons/presets/fa4.ts","webpack://web/../../../../src/services/icons/presets/fa-svg.ts","webpack://web/../../../../src/services/icons/presets/index.ts","webpack://web/../../../src/services/icons/index.ts","webpack://web/../../../src/services/lang/index.ts","webpack://web/../../../src/util/color/transformSRGB.ts","webpack://web/../../../src/util/color/transformCIELAB.ts","webpack://web/../../../src/services/theme/utils.ts","webpack://web/../../../src/services/theme/index.ts","webpack://web/../src/framework.ts","webpack://web/../../../src/mixins/activatable/index.ts","webpack://web/../../../src/mixins/binds-attrs/index.ts","webpack://web/../../../src/mixins/bootable/index.ts","webpack://web/../../../src/mixins/colorable/index.ts","webpack://web/../../../src/mixins/comparable/index.ts","webpack://web/../../../src/mixins/delayable/index.ts","webpack://web/../../../src/mixins/dependent/index.ts","webpack://web/../../../src/mixins/detachable/index.ts","webpack://web/../../../src/mixins/elevatable/index.ts","webpack://web/../../../src/mixins/groupable/index.ts","webpack://web/../../../src/components/VProgressLinear/index.ts","webpack://web/../../../src/mixins/loadable/index.ts","webpack://web/../../../src/mixins/measurable/index.ts","webpack://web/../../../src/mixins/menuable/index.ts","webpack://web/../../../src/mixins/mobile/index.ts","webpack://web/../../../src/components/VOverlay/VOverlay.ts","webpack://web/../../../src/components/VOverlay/index.ts","webpack://web/../../../src/mixins/overlayable/index.ts","webpack://web/../../../src/mixins/positionable/index.ts","webpack://web/../../../src/mixins/proxyable/index.ts","webpack://web/../../../src/mixins/registrable/index.ts","webpack://web/../../../src/mixins/returnable/index.ts","webpack://web/../../../src/mixins/roundable/index.ts","webpack://web/../../../src/mixins/routable/index.ts","webpack://web/../../../src/mixins/rippleable/index.ts","webpack://web/../../../src/mixins/selectable/index.ts","webpack://web/../../../src/mixins/sizeable/index.ts","webpack://web/../../../src/mixins/ssr-bootable/index.ts","webpack://web/../../../src/mixins/stackable/index.ts","webpack://web/../../../src/mixins/themeable/index.ts","webpack://web/../../../src/mixins/toggleable/index.ts","webpack://web/../../../src/mixins/validatable/index.ts","webpack://web/../../../src/services/goto/easing-patterns.ts","webpack://web/../../../src/services/goto/util.ts","webpack://web/../../../src/services/goto/index.ts","webpack://web/../../../src/services/service/index.ts","webpack://web/../../src/util/colorUtils.ts","webpack://web/../../src/util/console.ts","webpack://web/../../src/util/dom.ts","webpack://web/../../src/util/helpers.ts","webpack://web/../../src/util/mergeData.ts","webpack://web/../../src/util/mixins.ts","webpack://web/./node_modules/vue-codemirror/dist/vue-codemirror.js","webpack://web/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://web/./node_modules/vue-router/dist/vue-router.esm.js","webpack://web/./node_modules/vue/dist/vue.runtime.esm.js","webpack://web/./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack://web/./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://web/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar entities = require('entities');\n\nvar defaults = {\n fg: '#FFF',\n bg: '#000',\n newline: false,\n escapeXML: false,\n stream: false,\n colors: getDefaultColors()\n};\n\nfunction getDefaultColors() {\n var colors = {\n 0: '#000',\n 1: '#A00',\n 2: '#0A0',\n 3: '#A50',\n 4: '#00A',\n 5: '#A0A',\n 6: '#0AA',\n 7: '#AAA',\n 8: '#555',\n 9: '#F55',\n 10: '#5F5',\n 11: '#FF5',\n 12: '#55F',\n 13: '#F5F',\n 14: '#5FF',\n 15: '#FFF'\n };\n range(0, 5).forEach(function (red) {\n range(0, 5).forEach(function (green) {\n range(0, 5).forEach(function (blue) {\n return setStyleColor(red, green, blue, colors);\n });\n });\n });\n range(0, 23).forEach(function (gray) {\n var c = gray + 232;\n var l = toHexString(gray * 10 + 8);\n colors[c] = '#' + l + l + l;\n });\n return colors;\n}\n/**\n * @param {number} red\n * @param {number} green\n * @param {number} blue\n * @param {object} colors\n */\n\n\nfunction setStyleColor(red, green, blue, colors) {\n var c = 16 + red * 36 + green * 6 + blue;\n var r = red > 0 ? red * 40 + 55 : 0;\n var g = green > 0 ? green * 40 + 55 : 0;\n var b = blue > 0 ? blue * 40 + 55 : 0;\n colors[c] = toColorHexString([r, g, b]);\n}\n/**\n * Converts from a number like 15 to a hex string like 'F'\n * @param {number} num\n * @returns {string}\n */\n\n\nfunction toHexString(num) {\n var str = num.toString(16);\n\n while (str.length < 2) {\n str = '0' + str;\n }\n\n return str;\n}\n/**\n * Converts from an array of numbers like [15, 15, 15] to a hex string like 'FFF'\n * @param {[red, green, blue]} ref\n * @returns {string}\n */\n\n\nfunction toColorHexString(ref) {\n var results = [];\n\n var _iterator = _createForOfIteratorHelper(ref),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var r = _step.value;\n results.push(toHexString(r));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return '#' + results.join('');\n}\n/**\n * @param {Array} stack\n * @param {string} token\n * @param {*} data\n * @param {object} options\n */\n\n\nfunction generateOutput(stack, token, data, options) {\n var result;\n\n if (token === 'text') {\n result = pushText(data, options);\n } else if (token === 'display') {\n result = handleDisplay(stack, data, options);\n } else if (token === 'xterm256Foreground') {\n result = pushForegroundColor(stack, options.colors[data]);\n } else if (token === 'xterm256Background') {\n result = pushBackgroundColor(stack, options.colors[data]);\n } else if (token === 'rgb') {\n result = handleRgb(stack, data);\n }\n\n return result;\n}\n/**\n * @param {Array} stack\n * @param {string} data\n * @returns {*}\n */\n\n\nfunction handleRgb(stack, data) {\n data = data.substring(2).slice(0, -1);\n var operation = +data.substr(0, 2);\n var color = data.substring(5).split(';');\n var rgb = color.map(function (value) {\n return ('0' + Number(value).toString(16)).substr(-2);\n }).join('');\n return pushStyle(stack, (operation === 38 ? 'color:#' : 'background-color:#') + rgb);\n}\n/**\n * @param {Array} stack\n * @param {number} code\n * @param {object} options\n * @returns {*}\n */\n\n\nfunction handleDisplay(stack, code, options) {\n code = parseInt(code, 10);\n var codeMap = {\n '-1': function _() {\n return '
';\n },\n 0: function _() {\n return stack.length && resetStyles(stack);\n },\n 1: function _() {\n return pushTag(stack, 'b');\n },\n 3: function _() {\n return pushTag(stack, 'i');\n },\n 4: function _() {\n return pushTag(stack, 'u');\n },\n 8: function _() {\n return pushStyle(stack, 'display:none');\n },\n 9: function _() {\n return pushTag(stack, 'strike');\n },\n 22: function _() {\n return pushStyle(stack, 'font-weight:normal;text-decoration:none;font-style:normal');\n },\n 23: function _() {\n return closeTag(stack, 'i');\n },\n 24: function _() {\n return closeTag(stack, 'u');\n },\n 39: function _() {\n return pushForegroundColor(stack, options.fg);\n },\n 49: function _() {\n return pushBackgroundColor(stack, options.bg);\n },\n 53: function _() {\n return pushStyle(stack, 'text-decoration:overline');\n }\n };\n var result;\n\n if (codeMap[code]) {\n result = codeMap[code]();\n } else if (4 < code && code < 7) {\n result = pushTag(stack, 'blink');\n } else if (29 < code && code < 38) {\n result = pushForegroundColor(stack, options.colors[code - 30]);\n } else if (39 < code && code < 48) {\n result = pushBackgroundColor(stack, options.colors[code - 40]);\n } else if (89 < code && code < 98) {\n result = pushForegroundColor(stack, options.colors[8 + (code - 90)]);\n } else if (99 < code && code < 108) {\n result = pushBackgroundColor(stack, options.colors[8 + (code - 100)]);\n }\n\n return result;\n}\n/**\n * Clear all the styles\n * @returns {string}\n */\n\n\nfunction resetStyles(stack) {\n var stackClone = stack.slice(0);\n stack.length = 0;\n return stackClone.reverse().map(function (tag) {\n return '' + tag + '>';\n }).join('');\n}\n/**\n * Creates an array of numbers ranging from low to high\n * @param {number} low\n * @param {number} high\n * @returns {Array}\n * @example range(3, 7); // creates [3, 4, 5, 6, 7]\n */\n\n\nfunction range(low, high) {\n var results = [];\n\n for (var j = low; j <= high; j++) {\n results.push(j);\n }\n\n return results;\n}\n/**\n * Returns a new function that is true if value is NOT the same category\n * @param {string} category\n * @returns {function}\n */\n\n\nfunction notCategory(category) {\n return function (e) {\n return (category === null || e.category !== category) && category !== 'all';\n };\n}\n/**\n * Converts a code into an ansi token type\n * @param {number} code\n * @returns {string}\n */\n\n\nfunction categoryForCode(code) {\n code = parseInt(code, 10);\n var result = null;\n\n if (code === 0) {\n result = 'all';\n } else if (code === 1) {\n result = 'bold';\n } else if (2 < code && code < 5) {\n result = 'underline';\n } else if (4 < code && code < 7) {\n result = 'blink';\n } else if (code === 8) {\n result = 'hide';\n } else if (code === 9) {\n result = 'strike';\n } else if (29 < code && code < 38 || code === 39 || 89 < code && code < 98) {\n result = 'foreground-color';\n } else if (39 < code && code < 48 || code === 49 || 99 < code && code < 108) {\n result = 'background-color';\n }\n\n return result;\n}\n/**\n * @param {string} text\n * @param {object} options\n * @returns {string}\n */\n\n\nfunction pushText(text, options) {\n if (options.escapeXML) {\n return entities.encodeXML(text);\n }\n\n return text;\n}\n/**\n * @param {Array} stack\n * @param {string} tag\n * @param {string} [style='']\n * @returns {string}\n */\n\n\nfunction pushTag(stack, tag, style) {\n if (!style) {\n style = '';\n }\n\n stack.push(tag);\n return \"<\".concat(tag).concat(style ? \" style=\\\"\".concat(style, \"\\\"\") : '', \">\");\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction pushStyle(stack, style) {\n return pushTag(stack, 'span', style);\n}\n\nfunction pushForegroundColor(stack, color) {\n return pushTag(stack, 'span', 'color:' + color);\n}\n\nfunction pushBackgroundColor(stack, color) {\n return pushTag(stack, 'span', 'background-color:' + color);\n}\n/**\n * @param {Array} stack\n * @param {string} style\n * @returns {string}\n */\n\n\nfunction closeTag(stack, style) {\n var last;\n\n if (stack.slice(-1)[0] === style) {\n last = stack.pop();\n }\n\n if (last) {\n return '' + style + '>';\n }\n}\n/**\n * @param {string} text\n * @param {object} options\n * @param {function} callback\n * @returns {Array}\n */\n\n\nfunction tokenize(text, options, callback) {\n var ansiMatch = false;\n var ansiHandler = 3;\n\n function remove() {\n return '';\n }\n\n function removeXterm256Foreground(m, g1) {\n callback('xterm256Foreground', g1);\n return '';\n }\n\n function removeXterm256Background(m, g1) {\n callback('xterm256Background', g1);\n return '';\n }\n\n function newline(m) {\n if (options.newline) {\n callback('display', -1);\n } else {\n callback('text', m);\n }\n\n return '';\n }\n\n function ansiMess(m, g1) {\n ansiMatch = true;\n\n if (g1.trim().length === 0) {\n g1 = '0';\n }\n\n g1 = g1.trimRight(';').split(';');\n\n var _iterator2 = _createForOfIteratorHelper(g1),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var g = _step2.value;\n callback('display', g);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return '';\n }\n\n function realText(m) {\n callback('text', m);\n return '';\n }\n\n function rgb(m) {\n callback('rgb', m);\n return '';\n }\n /* eslint no-control-regex:0 */\n\n\n var tokens = [{\n pattern: /^\\x08+/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[012]?K/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[\\(B/,\n sub: remove\n }, {\n pattern: /^\\x1b\\[[34]8;2;\\d+;\\d+;\\d+m/,\n sub: rgb\n }, {\n pattern: /^\\x1b\\[38;5;(\\d+)m/,\n sub: removeXterm256Foreground\n }, {\n pattern: /^\\x1b\\[48;5;(\\d+)m/,\n sub: removeXterm256Background\n }, {\n pattern: /^\\n/,\n sub: newline\n }, {\n pattern: /^\\r+\\n/,\n sub: newline\n }, {\n pattern: /^\\r/,\n sub: newline\n }, {\n pattern: /^\\x1b\\[((?:\\d{1,3};?)+|)m/,\n sub: ansiMess\n }, {\n // CSI n J\n // ED - Erase in Display Clears part of the screen.\n // If n is 0 (or missing), clear from cursor to end of screen.\n // If n is 1, clear from cursor to beginning of the screen.\n // If n is 2, clear entire screen (and moves cursor to upper left on DOS ANSI.SYS).\n // If n is 3, clear entire screen and delete all lines saved in the scrollback buffer\n // (this feature was added for xterm and is supported by other terminal applications).\n pattern: /^\\x1b\\[\\d?J/,\n sub: remove\n }, {\n // CSI n ; m f\n // HVP - Horizontal Vertical Position Same as CUP\n pattern: /^\\x1b\\[\\d{0,3};\\d{0,3}f/,\n sub: remove\n }, {\n // catch-all for CSI sequences?\n pattern: /^\\x1b\\[?[\\d;]{0,3}/,\n sub: remove\n }, {\n /**\n * extracts real text - not containing:\n * - `\\x1b' - ESC - escape (Ascii 27)\n * - '\\x08' - BS - backspace (Ascii 8)\n * - `\\n` - Newline - linefeed (LF) (ascii 10)\n * - `\\r` - Windows Carriage Return (CR)\n */\n pattern: /^(([^\\x1b\\x08\\r\\n])+)/,\n sub: realText\n }];\n\n function process(handler, i) {\n if (i > ansiHandler && ansiMatch) {\n return;\n }\n\n ansiMatch = false;\n text = text.replace(handler.pattern, handler.sub);\n }\n\n var results1 = [];\n var _text = text,\n length = _text.length;\n\n outer: while (length > 0) {\n for (var i = 0, o = 0, len = tokens.length; o < len; i = ++o) {\n var handler = tokens[i];\n process(handler, i);\n\n if (text.length !== length) {\n // We matched a token and removed it from the text. We need to\n // start matching *all* tokens against the new text.\n length = text.length;\n continue outer;\n }\n }\n\n if (text.length === length) {\n break;\n }\n\n results1.push(0);\n length = text.length;\n }\n\n return results1;\n}\n/**\n * If streaming, then the stack is \"sticky\"\n *\n * @param {Array} stickyStack\n * @param {string} token\n * @param {*} data\n * @returns {Array}\n */\n\n\nfunction updateStickyStack(stickyStack, token, data) {\n if (token !== 'text') {\n stickyStack = stickyStack.filter(notCategory(categoryForCode(data)));\n stickyStack.push({\n token: token,\n data: data,\n category: categoryForCode(data)\n });\n }\n\n return stickyStack;\n}\n\nvar Filter = /*#__PURE__*/function () {\n /**\n * @param {object} options\n * @param {string=} options.fg The default foreground color used when reset color codes are encountered.\n * @param {string=} options.bg The default background color used when reset color codes are encountered.\n * @param {boolean=} options.newline Convert newline characters to `
`.\n * @param {boolean=} options.escapeXML Generate HTML/XML entities.\n * @param {boolean=} options.stream Save style state across invocations of `toHtml()`.\n * @param {(string[] | {[code: number]: string})=} options.colors Can override specific colors or the entire ANSI palette.\n */\n function Filter(options) {\n _classCallCheck(this, Filter);\n\n options = options || {};\n\n if (options.colors) {\n options.colors = Object.assign({}, defaults.colors, options.colors);\n }\n\n this.options = Object.assign({}, defaults, options);\n this.stack = [];\n this.stickyStack = [];\n }\n /**\n * @param {string | string[]} input\n * @returns {string}\n */\n\n\n _createClass(Filter, [{\n key: \"toHtml\",\n value: function toHtml(input) {\n var _this = this;\n\n input = typeof input === 'string' ? [input] : input;\n var stack = this.stack,\n options = this.options;\n var buf = [];\n this.stickyStack.forEach(function (element) {\n var output = generateOutput(stack, element.token, element.data, options);\n\n if (output) {\n buf.push(output);\n }\n });\n tokenize(input.join(''), options, function (token, data) {\n var output = generateOutput(stack, token, data, options);\n\n if (output) {\n buf.push(output);\n }\n\n if (options.stream) {\n _this.stickyStack = updateStickyStack(_this.stickyStack, token, data);\n }\n });\n\n if (stack.length) {\n buf.push(resetStyles(stack));\n }\n\n return buf.join('');\n }\n }]);\n\n return Filter;\n}();\n\nmodule.exports = Filter;\n//# sourceMappingURL=ansi_to_html.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n CodeMirror.defineOption(\"placeholder\", \"\", function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.on(\"blur\", onBlur);\n cm.on(\"change\", onChange);\n cm.on(\"swapDoc\", onChange);\n CodeMirror.on(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose = function() { onComposition(cm) })\n onChange(cm);\n } else if (!val && prev) {\n cm.off(\"blur\", onBlur);\n cm.off(\"change\", onChange);\n cm.off(\"swapDoc\", onChange);\n CodeMirror.off(cm.getInputField(), \"compositionupdate\", cm.state.placeholderCompose)\n clearPlaceholder(cm);\n var wrapper = cm.getWrapperElement();\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\");\n }\n\n if (val && !cm.hasFocus()) onBlur(cm);\n });\n\n function clearPlaceholder(cm) {\n if (cm.state.placeholder) {\n cm.state.placeholder.parentNode.removeChild(cm.state.placeholder);\n cm.state.placeholder = null;\n }\n }\n function setPlaceholder(cm) {\n clearPlaceholder(cm);\n var elt = cm.state.placeholder = document.createElement(\"pre\");\n elt.style.cssText = \"height: 0; overflow: visible\";\n elt.style.direction = cm.getOption(\"direction\");\n elt.className = \"CodeMirror-placeholder CodeMirror-line-like\";\n var placeHolder = cm.getOption(\"placeholder\")\n if (typeof placeHolder == \"string\") placeHolder = document.createTextNode(placeHolder)\n elt.appendChild(placeHolder)\n cm.display.lineSpace.insertBefore(elt, cm.display.lineSpace.firstChild);\n }\n\n function onComposition(cm) {\n setTimeout(function() {\n var empty = false\n if (cm.lineCount() == 1) {\n var input = cm.getInputField()\n empty = input.nodeName == \"TEXTAREA\" ? !cm.getLine(0).length\n : !/[^\\u200b]/.test(input.querySelector(\".CodeMirror-line\").textContent)\n }\n if (empty) setPlaceholder(cm)\n else clearPlaceholder(cm)\n }, 20)\n }\n\n function onBlur(cm) {\n if (isEmpty(cm)) setPlaceholder(cm);\n }\n function onChange(cm) {\n var wrapper = cm.getWrapperElement(), empty = isEmpty(cm);\n wrapper.className = wrapper.className.replace(\" CodeMirror-empty\", \"\") + (empty ? \" CodeMirror-empty\" : \"\");\n\n if (empty) setPlaceholder(cm);\n else clearPlaceholder(cm);\n }\n\n function isEmpty(cm) {\n return (cm.lineCount() === 1) && (cm.getLine(0) === \"\");\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Depends on jsonlint.js from https://github.com/zaach/jsonlint\n\n// declare global: jsonlint\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"lint\", \"json\", function(text) {\n var found = [];\n if (!window.jsonlint) {\n if (window.console) {\n window.console.error(\"Error: window.jsonlint not defined, CodeMirror JSON linting cannot run.\");\n }\n return found;\n }\n // for jsonlint's web dist jsonlint is exported as an object with a single property parser, of which parseError\n // is a subproperty\n var jsonlint = window.jsonlint.parser || window.jsonlint\n jsonlint.parseError = function(str, hash) {\n var loc = hash.loc;\n found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column),\n to: CodeMirror.Pos(loc.last_line - 1, loc.last_column),\n message: str});\n };\n try { jsonlint.parse(text); }\n catch(e) {}\n return found;\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.multiplexingMode = function(outer /*, others */) {\n // Others should be {open, close, mode [, delimStyle] [, innerStyle] [, parseDelimiters]} objects\n var others = Array.prototype.slice.call(arguments, 1);\n\n function indexOf(string, pattern, from, returnEnd) {\n if (typeof pattern == \"string\") {\n var found = string.indexOf(pattern, from);\n return returnEnd && found > -1 ? found + pattern.length : found;\n }\n var m = pattern.exec(from ? string.slice(from) : string);\n return m ? m.index + from + (returnEnd ? m[0].length : 0) : -1;\n }\n\n return {\n startState: function() {\n return {\n outer: CodeMirror.startState(outer),\n innerActive: null,\n inner: null,\n startingInner: false\n };\n },\n\n copyState: function(state) {\n return {\n outer: CodeMirror.copyState(outer, state.outer),\n innerActive: state.innerActive,\n inner: state.innerActive && CodeMirror.copyState(state.innerActive.mode, state.inner),\n startingInner: state.startingInner\n };\n },\n\n token: function(stream, state) {\n if (!state.innerActive) {\n var cutOff = Infinity, oldContent = stream.string;\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n var found = indexOf(oldContent, other.open, stream.pos);\n if (found == stream.pos) {\n if (!other.parseDelimiters) stream.match(other.open);\n state.startingInner = !!other.parseDelimiters\n state.innerActive = other;\n\n // Get the outer indent, making sure to handle CodeMirror.Pass\n var outerIndent = 0;\n if (outer.indent) {\n var possibleOuterIndent = outer.indent(state.outer, \"\", \"\");\n if (possibleOuterIndent !== CodeMirror.Pass) outerIndent = possibleOuterIndent;\n }\n\n state.inner = CodeMirror.startState(other.mode, outerIndent);\n return other.delimStyle && (other.delimStyle + \" \" + other.delimStyle + \"-open\");\n } else if (found != -1 && found < cutOff) {\n cutOff = found;\n }\n }\n if (cutOff != Infinity) stream.string = oldContent.slice(0, cutOff);\n var outerToken = outer.token(stream, state.outer);\n if (cutOff != Infinity) stream.string = oldContent;\n return outerToken;\n } else {\n var curInner = state.innerActive, oldContent = stream.string;\n if (!curInner.close && stream.sol()) {\n state.innerActive = state.inner = null;\n return this.token(stream, state);\n }\n var found = curInner.close && !state.startingInner ?\n indexOf(oldContent, curInner.close, stream.pos, curInner.parseDelimiters) : -1;\n if (found == stream.pos && !curInner.parseDelimiters) {\n stream.match(curInner.close);\n state.innerActive = state.inner = null;\n return curInner.delimStyle && (curInner.delimStyle + \" \" + curInner.delimStyle + \"-close\");\n }\n if (found > -1) stream.string = oldContent.slice(0, found);\n var innerToken = curInner.mode.token(stream, state.inner);\n if (found > -1) stream.string = oldContent;\n else if (stream.pos > stream.start) state.startingInner = false\n\n if (found == stream.pos && curInner.parseDelimiters)\n state.innerActive = state.inner = null;\n\n if (curInner.innerStyle) {\n if (innerToken) innerToken = innerToken + \" \" + curInner.innerStyle;\n else innerToken = curInner.innerStyle;\n }\n\n return innerToken;\n }\n },\n\n indent: function(state, textAfter, line) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (!mode.indent) return CodeMirror.Pass;\n return mode.indent(state.innerActive ? state.inner : state.outer, textAfter, line);\n },\n\n blankLine: function(state) {\n var mode = state.innerActive ? state.innerActive.mode : outer;\n if (mode.blankLine) {\n mode.blankLine(state.innerActive ? state.inner : state.outer);\n }\n if (!state.innerActive) {\n for (var i = 0; i < others.length; ++i) {\n var other = others[i];\n if (other.open === \"\\n\") {\n state.innerActive = other;\n state.inner = CodeMirror.startState(other.mode, mode.indent ? mode.indent(state.outer, \"\", \"\") : 0);\n }\n }\n } else if (state.innerActive.close === \"\\n\") {\n state.innerActive = state.inner = null;\n }\n },\n\n electricChars: outer.electricChars,\n\n innerMode: function(state) {\n return state.inner ? {state: state.inner, mode: state.innerActive.mode} : {state: state.outer, mode: outer};\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Utility function that allows modes to be combined. The mode given\n// as the base argument takes care of most of the normal mode\n// functionality, but a second (typically simple) mode is used, which\n// can override the style of text. Both modes get to parse all of the\n// text, but when both assign a non-null style to a piece of code, the\n// overlay wins, unless the combine argument was true and not overridden,\n// or state.overlay.combineTokens was true, in which case the styles are\n// combined.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.overlayMode = function(base, overlay, combine) {\n return {\n startState: function() {\n return {\n base: CodeMirror.startState(base),\n overlay: CodeMirror.startState(overlay),\n basePos: 0, baseCur: null,\n overlayPos: 0, overlayCur: null,\n streamSeen: null\n };\n },\n copyState: function(state) {\n return {\n base: CodeMirror.copyState(base, state.base),\n overlay: CodeMirror.copyState(overlay, state.overlay),\n basePos: state.basePos, baseCur: null,\n overlayPos: state.overlayPos, overlayCur: null\n };\n },\n\n token: function(stream, state) {\n if (stream != state.streamSeen ||\n Math.min(state.basePos, state.overlayPos) < stream.start) {\n state.streamSeen = stream;\n state.basePos = state.overlayPos = stream.start;\n }\n\n if (stream.start == state.basePos) {\n state.baseCur = base.token(stream, state.base);\n state.basePos = stream.pos;\n }\n if (stream.start == state.overlayPos) {\n stream.pos = stream.start;\n state.overlayCur = overlay.token(stream, state.overlay);\n state.overlayPos = stream.pos;\n }\n stream.pos = Math.min(state.basePos, state.overlayPos);\n\n // state.overlay.combineTokens always takes precedence over combine,\n // unless set to null\n if (state.overlayCur == null) return state.baseCur;\n else if (state.baseCur != null &&\n state.overlay.combineTokens ||\n combine && state.overlay.combineTokens == null)\n return state.baseCur + \" \" + state.overlayCur;\n else return state.overlayCur;\n },\n\n indent: base.indent && function(state, textAfter, line) {\n return base.indent(state.base, textAfter, line);\n },\n electricChars: base.electricChars,\n\n innerMode: function(state) { return {state: state.base, mode: base}; },\n\n blankLine: function(state) {\n var baseToken, overlayToken;\n if (base.blankLine) baseToken = base.blankLine(state.base);\n if (overlay.blankLine) overlayToken = overlay.blankLine(state.overlay);\n\n return overlayToken == null ?\n baseToken :\n (combine && baseToken != null ? baseToken + \" \" + overlayToken : overlayToken);\n }\n };\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode = function(name, states) {\n CodeMirror.defineMode(name, function(config) {\n return CodeMirror.simpleMode(config, states);\n });\n };\n\n CodeMirror.simpleMode = function(config, states) {\n ensureState(states, \"start\");\n var states_ = {}, meta = states.meta || {}, hasIndentation = false;\n for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n var list = states_[state] = [], orig = states[state];\n for (var i = 0; i < orig.length; i++) {\n var data = orig[i];\n list.push(new Rule(data, states));\n if (data.indent || data.dedent) hasIndentation = true;\n }\n }\n var mode = {\n startState: function() {\n return {state: \"start\", pending: null,\n local: null, localState: null,\n indent: hasIndentation ? [] : null};\n },\n copyState: function(state) {\n var s = {state: state.state, pending: state.pending,\n local: state.local, localState: null,\n indent: state.indent && state.indent.slice(0)};\n if (state.localState)\n s.localState = CodeMirror.copyState(state.local.mode, state.localState);\n if (state.stack)\n s.stack = state.stack.slice(0);\n for (var pers = state.persistentStates; pers; pers = pers.next)\n s.persistentStates = {mode: pers.mode,\n spec: pers.spec,\n state: pers.state == state.localState ? s.localState : CodeMirror.copyState(pers.mode, pers.state),\n next: s.persistentStates};\n return s;\n },\n token: tokenFunction(states_, config),\n innerMode: function(state) { return state.local && {mode: state.local.mode, state: state.localState}; },\n indent: indentFunction(states_, meta)\n };\n if (meta) for (var prop in meta) if (meta.hasOwnProperty(prop))\n mode[prop] = meta[prop];\n return mode;\n };\n\n function ensureState(states, name) {\n if (!states.hasOwnProperty(name))\n throw new Error(\"Undefined state \" + name + \" in simple mode\");\n }\n\n function toRegex(val, caret) {\n if (!val) return /(?:)/;\n var flags = \"\";\n if (val instanceof RegExp) {\n if (val.ignoreCase) flags = \"i\";\n if (val.unicode) flags += \"u\"\n val = val.source;\n } else {\n val = String(val);\n }\n return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n }\n\n function asToken(val) {\n if (!val) return null;\n if (val.apply) return val\n if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n var result = [];\n for (var i = 0; i < val.length; i++)\n result.push(val[i] && val[i].replace(/\\./g, \" \"));\n return result;\n }\n\n function Rule(data, states) {\n if (data.next || data.push) ensureState(states, data.next || data.push);\n this.regex = toRegex(data.regex);\n this.token = asToken(data.token);\n this.data = data;\n }\n\n function tokenFunction(states, config) {\n return function(stream, state) {\n if (state.pending) {\n var pend = state.pending.shift();\n if (state.pending.length == 0) state.pending = null;\n stream.pos += pend.text.length;\n return pend.token;\n }\n\n if (state.local) {\n if (state.local.end && stream.match(state.local.end)) {\n var tok = state.local.endToken || null;\n state.local = state.localState = null;\n return tok;\n } else {\n var tok = state.local.mode.token(stream, state.localState), m;\n if (state.local.endScan && (m = state.local.endScan.exec(stream.current())))\n stream.pos = stream.start + m.index;\n return tok;\n }\n }\n\n var curState = states[state.state];\n for (var i = 0; i < curState.length; i++) {\n var rule = curState[i];\n var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n if (matches) {\n if (rule.data.next) {\n state.state = rule.data.next;\n } else if (rule.data.push) {\n (state.stack || (state.stack = [])).push(state.state);\n state.state = rule.data.push;\n } else if (rule.data.pop && state.stack && state.stack.length) {\n state.state = state.stack.pop();\n }\n\n if (rule.data.mode)\n enterLocalMode(config, state, rule.data.mode, rule.token);\n if (rule.data.indent)\n state.indent.push(stream.indentation() + config.indentUnit);\n if (rule.data.dedent)\n state.indent.pop();\n var token = rule.token\n if (token && token.apply) token = token(matches)\n if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n for (var j = 2; j < matches.length; j++)\n if (matches[j])\n (state.pending || (state.pending = [])).push({text: matches[j], token: rule.token[j - 1]});\n stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n return token[0];\n } else if (token && token.join) {\n return token[0];\n } else {\n return token;\n }\n }\n }\n stream.next();\n return null;\n };\n }\n\n function cmp(a, b) {\n if (a === b) return true;\n if (!a || typeof a != \"object\" || !b || typeof b != \"object\") return false;\n var props = 0;\n for (var prop in a) if (a.hasOwnProperty(prop)) {\n if (!b.hasOwnProperty(prop) || !cmp(a[prop], b[prop])) return false;\n props++;\n }\n for (var prop in b) if (b.hasOwnProperty(prop)) props--;\n return props == 0;\n }\n\n function enterLocalMode(config, state, spec, token) {\n var pers;\n if (spec.persistent) for (var p = state.persistentStates; p && !pers; p = p.next)\n if (spec.spec ? cmp(spec.spec, p.spec) : spec.mode == p.mode) pers = p;\n var mode = pers ? pers.mode : spec.mode || CodeMirror.getMode(config, spec.spec);\n var lState = pers ? pers.state : CodeMirror.startState(mode);\n if (spec.persistent && !pers)\n state.persistentStates = {mode: mode, spec: spec.spec, state: lState, next: state.persistentStates};\n\n state.localState = lState;\n state.local = {mode: mode,\n end: spec.end && toRegex(spec.end),\n endScan: spec.end && spec.forceEnd !== false && toRegex(spec.end, false),\n endToken: token && token.join ? token[token.length - 1] : token};\n }\n\n function indexOf(val, arr) {\n for (var i = 0; i < arr.length; i++) if (arr[i] === val) return true;\n }\n\n function indentFunction(states, meta) {\n return function(state, textAfter, line) {\n if (state.local && state.local.mode.indent)\n return state.local.mode.indent(state.localState, textAfter, line);\n if (state.indent == null || state.local || meta.dontIndentStates && indexOf(state.state, meta.dontIndentStates) > -1)\n return CodeMirror.Pass;\n\n var pos = state.indent.length - 1, rules = states[state.state];\n scan: for (;;) {\n for (var i = 0; i < rules.length; i++) {\n var rule = rules[i];\n if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n var m = rule.regex.exec(textAfter);\n if (m && m[0]) {\n pos--;\n if (rule.next || rule.push) rules = states[rule.next || rule.push];\n textAfter = textAfter.slice(m[0].length);\n continue scan;\n }\n }\n }\n break;\n }\n return pos < 0 ? 0 : state.indent[pos];\n };\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// This is CodeMirror (https://codemirror.net/5), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\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 = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.visibility = \"\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.visibility = \"hidden\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version >= 102) {\n if (cm.display.chromeScrollHack == null) { cm.display.sizer.style.pointerEvents = \"none\"; }\n else { clearTimeout(cm.display.chromeScrollHack); }\n cm.display.chromeScrollHack = setTimeout(function () {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = range.head == range.anchor ? newAnchor : skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput && cm.hasFocus())\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.6\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n/**\n * Link to the project's GitHub page:\n * https://github.com/pickhardt/coffeescript-codemirror-mode\n */\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"coffeescript\", function(conf, parserConf) {\n var ERRORCLASS = \"error\";\n\n function wordRegexp(words) {\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n var operators = /^(?:->|=>|\\+[+=]?|-[\\-=]?|\\*[\\*=]?|\\/[\\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\\|=?|\\^=?|\\~|!|\\?|(or|and|\\|\\||&&|\\?)=)/;\n var delimiters = /^(?:[()\\[\\]{},:`=;]|\\.\\.?\\.?)/;\n var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/;\n var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/;\n\n var wordOperators = wordRegexp([\"and\", \"or\", \"not\",\n \"is\", \"isnt\", \"in\",\n \"instanceof\", \"typeof\"]);\n var indentKeywords = [\"for\", \"while\", \"loop\", \"if\", \"unless\", \"else\",\n \"switch\", \"try\", \"catch\", \"finally\", \"class\"];\n var commonKeywords = [\"break\", \"by\", \"continue\", \"debugger\", \"delete\",\n \"do\", \"in\", \"of\", \"new\", \"return\", \"then\",\n \"this\", \"@\", \"throw\", \"when\", \"until\", \"extends\"];\n\n var keywords = wordRegexp(indentKeywords.concat(commonKeywords));\n\n indentKeywords = wordRegexp(indentKeywords);\n\n\n var stringPrefixes = /^('{3}|\\\"{3}|['\\\"])/;\n var regexPrefixes = /^(\\/{3}|\\/)/;\n var commonConstants = [\"Infinity\", \"NaN\", \"undefined\", \"null\", \"true\", \"false\", \"on\", \"off\", \"yes\", \"no\"];\n var constants = wordRegexp(commonConstants);\n\n // Tokenizers\n function tokenBase(stream, state) {\n // Handle scope changes\n if (stream.sol()) {\n if (state.scope.align === null) state.scope.align = false;\n var scopeOffset = state.scope.offset;\n if (stream.eatSpace()) {\n var lineOffset = stream.indentation();\n if (lineOffset > scopeOffset && state.scope.type == \"coffee\") {\n return \"indent\";\n } else if (lineOffset < scopeOffset) {\n return \"dedent\";\n }\n return null;\n } else {\n if (scopeOffset > 0) {\n dedent(stream, state);\n }\n }\n }\n if (stream.eatSpace()) {\n return null;\n }\n\n var ch = stream.peek();\n\n // Handle docco title comment (single line)\n if (stream.match(\"####\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle multi line comments\n if (stream.match(\"###\")) {\n state.tokenize = longComment;\n return state.tokenize(stream, state);\n }\n\n // Single line comment\n if (ch === \"#\") {\n stream.skipToEnd();\n return \"comment\";\n }\n\n // Handle number literals\n if (stream.match(/^-?[0-9\\.]/, false)) {\n var floatLiteral = false;\n // Floats\n if (stream.match(/^-?\\d*\\.\\d+(e[\\+\\-]?\\d+)?/i)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\d+\\.\\d*/)) {\n floatLiteral = true;\n }\n if (stream.match(/^-?\\.\\d+/)) {\n floatLiteral = true;\n }\n\n if (floatLiteral) {\n // prevent from getting extra . on 1..\n if (stream.peek() == \".\"){\n stream.backUp(1);\n }\n return \"number\";\n }\n // Integers\n var intLiteral = false;\n // Hex\n if (stream.match(/^-?0x[0-9a-f]+/i)) {\n intLiteral = true;\n }\n // Decimal\n if (stream.match(/^-?[1-9]\\d*(e[\\+\\-]?\\d+)?/)) {\n intLiteral = true;\n }\n // Zero by itself with no other piece of number.\n if (stream.match(/^-?0(?![\\dx])/i)) {\n intLiteral = true;\n }\n if (intLiteral) {\n return \"number\";\n }\n }\n\n // Handle strings\n if (stream.match(stringPrefixes)) {\n state.tokenize = tokenFactory(stream.current(), false, \"string\");\n return state.tokenize(stream, state);\n }\n // Handle regex literals\n if (stream.match(regexPrefixes)) {\n if (stream.current() != \"/\" || stream.match(/^.*\\//, false)) { // prevent highlight of division\n state.tokenize = tokenFactory(stream.current(), true, \"string-2\");\n return state.tokenize(stream, state);\n } else {\n stream.backUp(1);\n }\n }\n\n\n\n // Handle operators and delimiters\n if (stream.match(operators) || stream.match(wordOperators)) {\n return \"operator\";\n }\n if (stream.match(delimiters)) {\n return \"punctuation\";\n }\n\n if (stream.match(constants)) {\n return \"atom\";\n }\n\n if (stream.match(atProp) || state.prop && stream.match(identifiers)) {\n return \"property\";\n }\n\n if (stream.match(keywords)) {\n return \"keyword\";\n }\n\n if (stream.match(identifiers)) {\n return \"variable\";\n }\n\n // Handle non-detected items\n stream.next();\n return ERRORCLASS;\n }\n\n function tokenFactory(delimiter, singleline, outclass) {\n return function(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^'\"\\/\\\\]/);\n if (stream.eat(\"\\\\\")) {\n stream.next();\n if (singleline && stream.eol()) {\n return outclass;\n }\n } else if (stream.match(delimiter)) {\n state.tokenize = tokenBase;\n return outclass;\n } else {\n stream.eat(/['\"\\/]/);\n }\n }\n if (singleline) {\n if (parserConf.singleLineStringErrors) {\n outclass = ERRORCLASS;\n } else {\n state.tokenize = tokenBase;\n }\n }\n return outclass;\n };\n }\n\n function longComment(stream, state) {\n while (!stream.eol()) {\n stream.eatWhile(/[^#]/);\n if (stream.match(\"###\")) {\n state.tokenize = tokenBase;\n break;\n }\n stream.eatWhile(\"#\");\n }\n return \"comment\";\n }\n\n function indent(stream, state, type) {\n type = type || \"coffee\";\n var offset = 0, align = false, alignOffset = null;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (scope.type === \"coffee\" || scope.type == \"}\") {\n offset = scope.offset + conf.indentUnit;\n break;\n }\n }\n if (type !== \"coffee\") {\n align = null;\n alignOffset = stream.column() + stream.current().length;\n } else if (state.scope.align) {\n state.scope.align = false;\n }\n state.scope = {\n offset: offset,\n type: type,\n prev: state.scope,\n align: align,\n alignOffset: alignOffset\n };\n }\n\n function dedent(stream, state) {\n if (!state.scope.prev) return;\n if (state.scope.type === \"coffee\") {\n var _indent = stream.indentation();\n var matched = false;\n for (var scope = state.scope; scope; scope = scope.prev) {\n if (_indent === scope.offset) {\n matched = true;\n break;\n }\n }\n if (!matched) {\n return true;\n }\n while (state.scope.prev && state.scope.offset !== _indent) {\n state.scope = state.scope.prev;\n }\n return false;\n } else {\n state.scope = state.scope.prev;\n return false;\n }\n }\n\n function tokenLexer(stream, state) {\n var style = state.tokenize(stream, state);\n var current = stream.current();\n\n // Handle scope changes.\n if (current === \"return\") {\n state.dedent = true;\n }\n if (((current === \"->\" || current === \"=>\") && stream.eol())\n || style === \"indent\") {\n indent(stream, state);\n }\n var delimiter_index = \"[({\".indexOf(current);\n if (delimiter_index !== -1) {\n indent(stream, state, \"])}\".slice(delimiter_index, delimiter_index+1));\n }\n if (indentKeywords.exec(current)){\n indent(stream, state);\n }\n if (current == \"then\"){\n dedent(stream, state);\n }\n\n\n if (style === \"dedent\") {\n if (dedent(stream, state)) {\n return ERRORCLASS;\n }\n }\n delimiter_index = \"])}\".indexOf(current);\n if (delimiter_index !== -1) {\n while (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n if (state.scope.type == current)\n state.scope = state.scope.prev;\n }\n if (state.dedent && stream.eol()) {\n if (state.scope.type == \"coffee\" && state.scope.prev)\n state.scope = state.scope.prev;\n state.dedent = false;\n }\n\n return style;\n }\n\n var external = {\n startState: function(basecolumn) {\n return {\n tokenize: tokenBase,\n scope: {offset:basecolumn || 0, type:\"coffee\", prev: null, align: false},\n prop: false,\n dedent: 0\n };\n },\n\n token: function(stream, state) {\n var fillAlign = state.scope.align === null && state.scope;\n if (fillAlign && stream.sol()) fillAlign.align = false;\n\n var style = tokenLexer(stream, state);\n if (style && style != \"comment\") {\n if (fillAlign) fillAlign.align = true;\n state.prop = style == \"punctuation\" && stream.current() == \".\"\n }\n\n return style;\n },\n\n indent: function(state, text) {\n if (state.tokenize != tokenBase) return 0;\n var scope = state.scope;\n var closer = text && \"])}\".indexOf(text.charAt(0)) > -1;\n if (closer) while (scope.type == \"coffee\" && scope.prev) scope = scope.prev;\n var closes = closer && scope.type === text.charAt(0);\n if (scope.align)\n return scope.alignOffset - (closes ? 1 : 0);\n else\n return (closes ? scope.prev : scope).offset;\n },\n\n lineComment: \"#\",\n fold: \"indent\"\n };\n return external;\n});\n\n// IANA registered media type\n// https://www.iana.org/assignments/media-types/\nCodeMirror.defineMIME(\"application/vnd.coffeescript\", \"coffeescript\");\n\nCodeMirror.defineMIME(\"text/x-coffeescript\", \"coffeescript\");\nCodeMirror.defineMIME(\"text/coffeescript\", \"coffeescript\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\",\n \"dynamic-range\", \"video-dynamic-range\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\",\n \"standard\", \"high\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"conic-gradient\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-play-button\", \"media-slider\", \"media-sliderthumb\",\n \"media-volume-slider\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\",\n \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\", \"repeating-radial-gradient\",\n \"repeating-conic-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../../addon/mode/simple\"), require(\"../../addon/mode/multiplex\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../../addon/mode/simple\", \"../../addon/mode/multiplex\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineSimpleMode(\"handlebars-tags\", {\n start: [\n { regex: /\\{\\{\\{/, push: \"handlebars_raw\", token: \"tag\" },\n { regex: /\\{\\{!--/, push: \"dash_comment\", token: \"comment\" },\n { regex: /\\{\\{!/, push: \"comment\", token: \"comment\" },\n { regex: /\\{\\{/, push: \"handlebars\", token: \"tag\" }\n ],\n handlebars_raw: [\n { regex: /\\}\\}\\}/, pop: true, token: \"tag\" },\n ],\n handlebars: [\n { regex: /\\}\\}/, pop: true, token: \"tag\" },\n\n // Double and single quotes\n { regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/, token: \"string\" },\n { regex: /'(?:[^\\\\']|\\\\.)*'?/, token: \"string\" },\n\n // Handlebars keywords\n { regex: />|[#\\/]([A-Za-z_]\\w*)/, token: \"keyword\" },\n { regex: /(?:else|this)\\b/, token: \"keyword\" },\n\n // Numeral\n { regex: /\\d+/i, token: \"number\" },\n\n // Atoms like = and .\n { regex: /=|~|@|true|false/, token: \"atom\" },\n\n // Paths\n { regex: /(?:\\.\\.\\/)*(?:[A-Za-z_][\\w\\.]*)+/, token: \"variable-2\" }\n ],\n dash_comment: [\n { regex: /--\\}\\}/, pop: true, token: \"comment\" },\n\n // Commented code\n { regex: /./, token: \"comment\"}\n ],\n comment: [\n { regex: /\\}\\}/, pop: true, token: \"comment\" },\n { regex: /./, token: \"comment\" }\n ],\n meta: {\n blockCommentStart: \"{{--\",\n blockCommentEnd: \"--}}\"\n }\n });\n\n CodeMirror.defineMode(\"handlebars\", function(config, parserConfig) {\n var handlebars = CodeMirror.getMode(config, \"handlebars-tags\");\n if (!parserConfig || !parserConfig.base) return handlebars;\n return CodeMirror.multiplexingMode(\n CodeMirror.getMode(config, parserConfig.base),\n {open: \"{{\", close: /\\}\\}\\}?/, mode: handlebars, parseDelimiters: true}\n );\n });\n\n CodeMirror.defineMIME(\"text/x-handlebars-template\", \"handlebars\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\\\s*\" + tagName + \"\\\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../javascript/javascript\"), require(\"../css/css\"), require(\"../htmlmixed/htmlmixed\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../javascript/javascript\", \"../css/css\", \"../htmlmixed/htmlmixed\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"pug\", function (config) {\n // token types\n var KEYWORD = 'keyword';\n var DOCTYPE = 'meta';\n var ID = 'builtin';\n var CLASS = 'qualifier';\n\n var ATTRS_NEST = {\n '{': '}',\n '(': ')',\n '[': ']'\n };\n\n var jsMode = CodeMirror.getMode(config, 'javascript');\n\n function State() {\n this.javaScriptLine = false;\n this.javaScriptLineExcludesColon = false;\n\n this.javaScriptArguments = false;\n this.javaScriptArgumentsDepth = 0;\n\n this.isInterpolating = false;\n this.interpolationNesting = 0;\n\n this.jsState = CodeMirror.startState(jsMode);\n\n this.restOfLine = '';\n\n this.isIncludeFiltered = false;\n this.isEach = false;\n\n this.lastTag = '';\n this.scriptType = '';\n\n // Attributes Mode\n this.isAttrs = false;\n this.attrsNest = [];\n this.inAttributeName = true;\n this.attributeIsType = false;\n this.attrValue = '';\n\n // Indented Mode\n this.indentOf = Infinity;\n this.indentToken = '';\n\n this.innerMode = null;\n this.innerState = null;\n\n this.innerModeForLine = false;\n }\n /**\n * Safely copy a state\n *\n * @return {State}\n */\n State.prototype.copy = function () {\n var res = new State();\n res.javaScriptLine = this.javaScriptLine;\n res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;\n res.javaScriptArguments = this.javaScriptArguments;\n res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;\n res.isInterpolating = this.isInterpolating;\n res.interpolationNesting = this.interpolationNesting;\n\n res.jsState = CodeMirror.copyState(jsMode, this.jsState);\n\n res.innerMode = this.innerMode;\n if (this.innerMode && this.innerState) {\n res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);\n }\n\n res.restOfLine = this.restOfLine;\n\n res.isIncludeFiltered = this.isIncludeFiltered;\n res.isEach = this.isEach;\n res.lastTag = this.lastTag;\n res.scriptType = this.scriptType;\n res.isAttrs = this.isAttrs;\n res.attrsNest = this.attrsNest.slice();\n res.inAttributeName = this.inAttributeName;\n res.attributeIsType = this.attributeIsType;\n res.attrValue = this.attrValue;\n res.indentOf = this.indentOf;\n res.indentToken = this.indentToken;\n\n res.innerModeForLine = this.innerModeForLine;\n\n return res;\n };\n\n function javaScript(stream, state) {\n if (stream.sol()) {\n // if javaScriptLine was set at end of line, ignore it\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n }\n if (state.javaScriptLine) {\n if (state.javaScriptLineExcludesColon && stream.peek() === ':') {\n state.javaScriptLine = false;\n state.javaScriptLineExcludesColon = false;\n return;\n }\n var tok = jsMode.token(stream, state.jsState);\n if (stream.eol()) state.javaScriptLine = false;\n return tok || true;\n }\n }\n function javaScriptArguments(stream, state) {\n if (state.javaScriptArguments) {\n if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {\n state.javaScriptArguments = false;\n return;\n }\n if (stream.peek() === '(') {\n state.javaScriptArgumentsDepth++;\n } else if (stream.peek() === ')') {\n state.javaScriptArgumentsDepth--;\n }\n if (state.javaScriptArgumentsDepth === 0) {\n state.javaScriptArguments = false;\n return;\n }\n\n var tok = jsMode.token(stream, state.jsState);\n return tok || true;\n }\n }\n\n function yieldStatement(stream) {\n if (stream.match(/^yield\\b/)) {\n return 'keyword';\n }\n }\n\n function doctype(stream) {\n if (stream.match(/^(?:doctype) *([^\\n]+)?/)) {\n return DOCTYPE;\n }\n }\n\n function interpolation(stream, state) {\n if (stream.match('#{')) {\n state.isInterpolating = true;\n state.interpolationNesting = 0;\n return 'punctuation';\n }\n }\n\n function interpolationContinued(stream, state) {\n if (state.isInterpolating) {\n if (stream.peek() === '}') {\n state.interpolationNesting--;\n if (state.interpolationNesting < 0) {\n stream.next();\n state.isInterpolating = false;\n return 'punctuation';\n }\n } else if (stream.peek() === '{') {\n state.interpolationNesting++;\n }\n return jsMode.token(stream, state.jsState) || true;\n }\n }\n\n function caseStatement(stream, state) {\n if (stream.match(/^case\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function when(stream, state) {\n if (stream.match(/^when\\b/)) {\n state.javaScriptLine = true;\n state.javaScriptLineExcludesColon = true;\n return KEYWORD;\n }\n }\n\n function defaultStatement(stream) {\n if (stream.match(/^default\\b/)) {\n return KEYWORD;\n }\n }\n\n function extendsStatement(stream, state) {\n if (stream.match(/^extends?\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function append(stream, state) {\n if (stream.match(/^append\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function prepend(stream, state) {\n if (stream.match(/^prepend\\b/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n function block(stream, state) {\n if (stream.match(/^block\\b *(?:(prepend|append)\\b)?/)) {\n state.restOfLine = 'variable';\n return KEYWORD;\n }\n }\n\n function include(stream, state) {\n if (stream.match(/^include\\b/)) {\n state.restOfLine = 'string';\n return KEYWORD;\n }\n }\n\n function includeFiltered(stream, state) {\n if (stream.match(/^include:([a-zA-Z0-9\\-]+)/, false) && stream.match('include')) {\n state.isIncludeFiltered = true;\n return KEYWORD;\n }\n }\n\n function includeFilteredContinued(stream, state) {\n if (state.isIncludeFiltered) {\n var tok = filter(stream, state);\n state.isIncludeFiltered = false;\n state.restOfLine = 'string';\n return tok;\n }\n }\n\n function mixin(stream, state) {\n if (stream.match(/^mixin\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function call(stream, state) {\n if (stream.match(/^\\+([-\\w]+)/)) {\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return 'variable';\n }\n if (stream.match('+#{', false)) {\n stream.next();\n state.mixinCallAfter = true;\n return interpolation(stream, state);\n }\n }\n function callArguments(stream, state) {\n if (state.mixinCallAfter) {\n state.mixinCallAfter = false;\n if (!stream.match(/^\\( *[-\\w]+ *=/, false)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n }\n return true;\n }\n }\n\n function conditional(stream, state) {\n if (stream.match(/^(if|unless|else if|else)\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function each(stream, state) {\n if (stream.match(/^(- *)?(each|for)\\b/)) {\n state.isEach = true;\n return KEYWORD;\n }\n }\n function eachContinued(stream, state) {\n if (state.isEach) {\n if (stream.match(/^ in\\b/)) {\n state.javaScriptLine = true;\n state.isEach = false;\n return KEYWORD;\n } else if (stream.sol() || stream.eol()) {\n state.isEach = false;\n } else if (stream.next()) {\n while (!stream.match(/^ in\\b/, false) && stream.next());\n return 'variable';\n }\n }\n }\n\n function whileStatement(stream, state) {\n if (stream.match(/^while\\b/)) {\n state.javaScriptLine = true;\n return KEYWORD;\n }\n }\n\n function tag(stream, state) {\n var captures;\n if (captures = stream.match(/^(\\w(?:[-:\\w]*\\w)?)\\/?/)) {\n state.lastTag = captures[1].toLowerCase();\n if (state.lastTag === 'script') {\n state.scriptType = 'application/javascript';\n }\n return 'tag';\n }\n }\n\n function filter(stream, state) {\n if (stream.match(/^:([\\w\\-]+)/)) {\n var innerMode;\n if (config && config.innerModes) {\n innerMode = config.innerModes(stream.current().substring(1));\n }\n if (!innerMode) {\n innerMode = stream.current().substring(1);\n }\n if (typeof innerMode === 'string') {\n innerMode = CodeMirror.getMode(config, innerMode);\n }\n setInnerMode(stream, state, innerMode);\n return 'atom';\n }\n }\n\n function code(stream, state) {\n if (stream.match(/^(!?=|-)/)) {\n state.javaScriptLine = true;\n return 'punctuation';\n }\n }\n\n function id(stream) {\n if (stream.match(/^#([\\w-]+)/)) {\n return ID;\n }\n }\n\n function className(stream) {\n if (stream.match(/^\\.([\\w-]+)/)) {\n return CLASS;\n }\n }\n\n function attrs(stream, state) {\n if (stream.peek() == '(') {\n stream.next();\n state.isAttrs = true;\n state.attrsNest = [];\n state.inAttributeName = true;\n state.attrValue = '';\n state.attributeIsType = false;\n return 'punctuation';\n }\n }\n\n function attrsContinued(stream, state) {\n if (state.isAttrs) {\n if (ATTRS_NEST[stream.peek()]) {\n state.attrsNest.push(ATTRS_NEST[stream.peek()]);\n }\n if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {\n state.attrsNest.pop();\n } else if (stream.eat(')')) {\n state.isAttrs = false;\n return 'punctuation';\n }\n if (state.inAttributeName && stream.match(/^[^=,\\)!]+/)) {\n if (stream.peek() === '=' || stream.peek() === '!') {\n state.inAttributeName = false;\n state.jsState = CodeMirror.startState(jsMode);\n if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {\n state.attributeIsType = true;\n } else {\n state.attributeIsType = false;\n }\n }\n return 'attribute';\n }\n\n var tok = jsMode.token(stream, state.jsState);\n if (state.attributeIsType && tok === 'string') {\n state.scriptType = stream.current().toString();\n }\n if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {\n try {\n Function('', 'var x ' + state.attrValue.replace(/,\\s*$/, '').replace(/^!/, ''));\n state.inAttributeName = true;\n state.attrValue = '';\n stream.backUp(stream.current().length);\n return attrsContinued(stream, state);\n } catch (ex) {\n //not the end of an attribute\n }\n }\n state.attrValue += stream.current();\n return tok || true;\n }\n }\n\n function attributesBlock(stream, state) {\n if (stream.match(/^&attributes\\b/)) {\n state.javaScriptArguments = true;\n state.javaScriptArgumentsDepth = 0;\n return 'keyword';\n }\n }\n\n function indent(stream) {\n if (stream.sol() && stream.eatSpace()) {\n return 'indent';\n }\n }\n\n function comment(stream, state) {\n if (stream.match(/^ *\\/\\/(-)?([^\\n]*)/)) {\n state.indentOf = stream.indentation();\n state.indentToken = 'comment';\n return 'comment';\n }\n }\n\n function colon(stream) {\n if (stream.match(/^: */)) {\n return 'colon';\n }\n }\n\n function text(stream, state) {\n if (stream.match(/^(?:\\| ?| )([^\\n]+)/)) {\n return 'string';\n }\n if (stream.match(/^(<[^\\n]*)/, false)) {\n // html string\n setInnerMode(stream, state, 'htmlmixed');\n state.innerModeForLine = true;\n return innerMode(stream, state, true);\n }\n }\n\n function dot(stream, state) {\n if (stream.eat('.')) {\n var innerMode = null;\n if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {\n innerMode = state.scriptType.toLowerCase().replace(/\"|'/g, '');\n } else if (state.lastTag === 'style') {\n innerMode = 'css';\n }\n setInnerMode(stream, state, innerMode);\n return 'dot';\n }\n }\n\n function fail(stream) {\n stream.next();\n return null;\n }\n\n\n function setInnerMode(stream, state, mode) {\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = config.innerModes ? config.innerModes(mode) || mode : mode;\n mode = CodeMirror.mimeModes[mode] || mode;\n mode = CodeMirror.getMode(config, mode);\n state.indentOf = stream.indentation();\n\n if (mode && mode.name !== 'null') {\n state.innerMode = mode;\n } else {\n state.indentToken = 'string';\n }\n }\n function innerMode(stream, state, force) {\n if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {\n if (state.innerMode) {\n if (!state.innerState) {\n state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {};\n }\n return stream.hideFirstChars(state.indentOf + 2, function () {\n return state.innerMode.token(stream, state.innerState) || true;\n });\n } else {\n stream.skipToEnd();\n return state.indentToken;\n }\n } else if (stream.sol()) {\n state.indentOf = Infinity;\n state.indentToken = null;\n state.innerMode = null;\n state.innerState = null;\n }\n }\n function restOfLine(stream, state) {\n if (stream.sol()) {\n // if restOfLine was set at end of line, ignore it\n state.restOfLine = '';\n }\n if (state.restOfLine) {\n stream.skipToEnd();\n var tok = state.restOfLine;\n state.restOfLine = '';\n return tok;\n }\n }\n\n\n function startState() {\n return new State();\n }\n function copyState(state) {\n return state.copy();\n }\n /**\n * Get the next token in the stream\n *\n * @param {Stream} stream\n * @param {State} state\n */\n function nextToken(stream, state) {\n var tok = innerMode(stream, state)\n || restOfLine(stream, state)\n || interpolationContinued(stream, state)\n || includeFilteredContinued(stream, state)\n || eachContinued(stream, state)\n || attrsContinued(stream, state)\n || javaScript(stream, state)\n || javaScriptArguments(stream, state)\n || callArguments(stream, state)\n\n || yieldStatement(stream)\n || doctype(stream)\n || interpolation(stream, state)\n || caseStatement(stream, state)\n || when(stream, state)\n || defaultStatement(stream)\n || extendsStatement(stream, state)\n || append(stream, state)\n || prepend(stream, state)\n || block(stream, state)\n || include(stream, state)\n || includeFiltered(stream, state)\n || mixin(stream, state)\n || call(stream, state)\n || conditional(stream, state)\n || each(stream, state)\n || whileStatement(stream, state)\n || tag(stream, state)\n || filter(stream, state)\n || code(stream, state)\n || id(stream)\n || className(stream)\n || attrs(stream, state)\n || attributesBlock(stream, state)\n || indent(stream)\n || text(stream, state)\n || comment(stream, state)\n || colon(stream)\n || dot(stream, state)\n || fail(stream);\n\n return tok === true ? null : tok;\n }\n return {\n startState: startState,\n copyState: copyState,\n token: nextToken\n };\n}, 'javascript', 'css', 'htmlmixed');\n\nCodeMirror.defineMIME('text/x-pug', 'pug');\nCodeMirror.defineMIME('text/x-jade', 'pug');\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sass\", function(config) {\n var cssMode = CodeMirror.mimeModes[\"text/css\"];\n var propertyKeywords = cssMode.propertyKeywords || {},\n colorKeywords = cssMode.colorKeywords || {},\n valueKeywords = cssMode.valueKeywords || {},\n fontProperties = cssMode.fontProperties || {};\n\n function tokenRegexp(words) {\n return new RegExp(\"^\" + words.join(\"|\"));\n }\n\n var keywords = [\"true\", \"false\", \"null\", \"auto\"];\n var keywordsRegexp = new RegExp(\"^\" + keywords.join(\"|\"));\n\n var operators = [\"\\\\(\", \"\\\\)\", \"=\", \">\", \"<\", \"==\", \">=\", \"<=\", \"\\\\+\", \"-\",\n \"\\\\!=\", \"/\", \"\\\\*\", \"%\", \"and\", \"or\", \"not\", \";\",\"\\\\{\",\"\\\\}\",\":\"];\n var opRegexp = tokenRegexp(operators);\n\n var pseudoElementsRegexp = /^::?[a-zA-Z_][\\w\\-]*/;\n\n var word;\n\n function isEndLine(stream) {\n return !stream.peek() || stream.match(/\\s+$/, false);\n }\n\n function urlTokens(stream, state) {\n var ch = stream.peek();\n\n if (ch === \")\") {\n stream.next();\n state.tokenizer = tokenBase;\n return \"operator\";\n } else if (ch === \"(\") {\n stream.next();\n stream.eatSpace();\n\n return \"operator\";\n } else if (ch === \"'\" || ch === '\"') {\n state.tokenizer = buildStringTokenizer(stream.next());\n return \"string\";\n } else {\n state.tokenizer = buildStringTokenizer(\")\", false);\n return \"string\";\n }\n }\n function comment(indentation, multiLine) {\n return function(stream, state) {\n if (stream.sol() && stream.indentation() <= indentation) {\n state.tokenizer = tokenBase;\n return tokenBase(stream, state);\n }\n\n if (multiLine && stream.skipTo(\"*/\")) {\n stream.next();\n stream.next();\n state.tokenizer = tokenBase;\n } else {\n stream.skipToEnd();\n }\n\n return \"comment\";\n };\n }\n\n function buildStringTokenizer(quote, greedy) {\n if (greedy == null) { greedy = true; }\n\n function stringTokenizer(stream, state) {\n var nextChar = stream.next();\n var peekChar = stream.peek();\n var previousChar = stream.string.charAt(stream.pos-2);\n\n var endingString = ((nextChar !== \"\\\\\" && peekChar === quote) || (nextChar === quote && previousChar !== \"\\\\\"));\n\n if (endingString) {\n if (nextChar !== quote && greedy) { stream.next(); }\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n state.tokenizer = tokenBase;\n return \"string\";\n } else if (nextChar === \"#\" && peekChar === \"{\") {\n state.tokenizer = buildInterpolationTokenizer(stringTokenizer);\n stream.next();\n return \"operator\";\n } else {\n return \"string\";\n }\n }\n\n return stringTokenizer;\n }\n\n function buildInterpolationTokenizer(currentTokenizer) {\n return function(stream, state) {\n if (stream.peek() === \"}\") {\n stream.next();\n state.tokenizer = currentTokenizer;\n return \"operator\";\n } else {\n return tokenBase(stream, state);\n }\n };\n }\n\n function indent(state) {\n if (state.indentCount == 0) {\n state.indentCount++;\n var lastScopeOffset = state.scopes[0].offset;\n var currentOffset = lastScopeOffset + config.indentUnit;\n state.scopes.unshift({ offset:currentOffset });\n }\n }\n\n function dedent(state) {\n if (state.scopes.length == 1) return;\n\n state.scopes.shift();\n }\n\n function tokenBase(stream, state) {\n var ch = stream.peek();\n\n // Comment\n if (stream.match(\"/*\")) {\n state.tokenizer = comment(stream.indentation(), true);\n return state.tokenizer(stream, state);\n }\n if (stream.match(\"//\")) {\n state.tokenizer = comment(stream.indentation(), false);\n return state.tokenizer(stream, state);\n }\n\n // Interpolation\n if (stream.match(\"#{\")) {\n state.tokenizer = buildInterpolationTokenizer(tokenBase);\n return \"operator\";\n }\n\n // Strings\n if (ch === '\"' || ch === \"'\") {\n stream.next();\n state.tokenizer = buildStringTokenizer(ch);\n return \"string\";\n }\n\n if(!state.cursorHalf){// state.cursorHalf === 0\n // first half i.e. before : for key-value pairs\n // including selectors\n\n if (ch === \"-\") {\n if (stream.match(/^-\\w+-/)) {\n return \"meta\";\n }\n }\n\n if (ch === \".\") {\n stream.next();\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"qualifier\";\n } else if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n if (ch === \"#\") {\n stream.next();\n // ID selectors\n if (stream.match(/^[\\w-]+/)) {\n indent(state);\n return \"builtin\";\n }\n if (stream.peek() === \"#\") {\n indent(state);\n return \"tag\";\n }\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"variable-2\";\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/))\n return \"number\";\n\n // Units\n if (stream.match(/^(px|em|in)\\b/))\n return \"unit\";\n\n if (stream.match(keywordsRegexp))\n return \"keyword\";\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n return \"atom\";\n }\n\n if (ch === \"=\") {\n // Match shortcut mixin definition\n if (stream.match(/^=[\\w-]+/)) {\n indent(state);\n return \"meta\";\n }\n }\n\n if (ch === \"+\") {\n // Match shortcut mixin definition\n if (stream.match(/^\\+[\\w-]+/)){\n return \"variable-3\";\n }\n }\n\n if(ch === \"@\"){\n if(stream.match('@extend')){\n if(!stream.match(/\\s*[\\w]/))\n dedent(state);\n }\n }\n\n\n // Indent Directives\n if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) {\n indent(state);\n return \"def\";\n }\n\n // Other Directives\n if (ch === \"@\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n return \"def\";\n }\n\n if (stream.eatWhile(/[\\w-]/)){\n if(stream.match(/ *: *[\\w-\\+\\$#!\\(\"']/,false)){\n word = stream.current().toLowerCase();\n var prop = state.prevProp + \"-\" + word;\n if (propertyKeywords.hasOwnProperty(prop)) {\n return \"property\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = word;\n return \"property\";\n } else if (fontProperties.hasOwnProperty(word)) {\n return \"property\";\n }\n return \"tag\";\n }\n else if(stream.match(/ *:/,false)){\n indent(state);\n state.cursorHalf = 1;\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n }\n else if(stream.match(/ *,/,false)){\n return \"tag\";\n }\n else{\n indent(state);\n return \"tag\";\n }\n }\n\n if(ch === \":\"){\n if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element\n return \"variable-3\";\n }\n stream.next();\n state.cursorHalf=1;\n return \"operator\";\n }\n\n } // cursorHalf===0 ends here\n else{\n\n if (ch === \"#\") {\n stream.next();\n // Hex numbers\n if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n }\n\n // Numbers\n if (stream.match(/^-?[0-9\\.]+/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"number\";\n }\n\n // Units\n if (stream.match(/^(px|em|in)\\b/)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"unit\";\n }\n\n if (stream.match(keywordsRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"keyword\";\n }\n\n if (stream.match(/^url/) && stream.peek() === \"(\") {\n state.tokenizer = urlTokens;\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"atom\";\n }\n\n // Variables\n if (ch === \"$\") {\n stream.next();\n stream.eatWhile(/[\\w-]/);\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"variable-2\";\n }\n\n // bang character for !important, !default, etc.\n if (ch === \"!\") {\n stream.next();\n state.cursorHalf = 0;\n return stream.match(/^[\\w]+/) ? \"keyword\": \"operator\";\n }\n\n if (stream.match(opRegexp)){\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n return \"operator\";\n }\n\n // attributes\n if (stream.eatWhile(/[\\w-]/)) {\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n }\n word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word)) {\n return \"atom\";\n } else if (colorKeywords.hasOwnProperty(word)) {\n return \"keyword\";\n } else if (propertyKeywords.hasOwnProperty(word)) {\n state.prevProp = stream.current().toLowerCase();\n return \"property\";\n } else {\n return \"tag\";\n }\n }\n\n //stream.eatSpace();\n if (isEndLine(stream)) {\n state.cursorHalf = 0;\n return null;\n }\n\n } // else ends here\n\n if (stream.match(opRegexp))\n return \"operator\";\n\n // If we haven't returned by now, we move 1 character\n // and return an error\n stream.next();\n return null;\n }\n\n function tokenLexer(stream, state) {\n if (stream.sol()) state.indentCount = 0;\n var style = state.tokenizer(stream, state);\n var current = stream.current();\n\n if (current === \"@return\" || current === \"}\"){\n dedent(state);\n }\n\n if (style !== null) {\n var startOfToken = stream.pos - current.length;\n\n var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount);\n\n var newScopes = [];\n\n for (var i = 0; i < state.scopes.length; i++) {\n var scope = state.scopes[i];\n\n if (scope.offset <= withCurrentIndent)\n newScopes.push(scope);\n }\n\n state.scopes = newScopes;\n }\n\n\n return style;\n }\n\n return {\n startState: function() {\n return {\n tokenizer: tokenBase,\n scopes: [{offset: 0, type: \"sass\"}],\n indentCount: 0,\n cursorHalf: 0, // cursor half tells us if cursor lies after (1)\n // or before (0) colon (well... more or less)\n definedVars: [],\n definedMixins: []\n };\n },\n token: function(stream, state) {\n var style = tokenLexer(stream, state);\n\n state.lastToken = { style: style, content: stream.current() };\n\n return style;\n },\n\n indent: function(state) {\n return state.scopes[0].offset;\n },\n\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n lineComment: \"//\",\n fold: \"indent\"\n };\n}, \"css\");\n\nCodeMirror.defineMIME(\"text/x-sass\", \"sass\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineMode(\"stylus\", function(config) {\n var indentUnit = config.indentUnit,\n indentUnitString = '',\n tagKeywords = keySet(tagKeywords_),\n tagVariablesRegexp = /^(a|b|i|s|col|em)$/i,\n propertyKeywords = keySet(propertyKeywords_),\n nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_),\n valueKeywords = keySet(valueKeywords_),\n colorKeywords = keySet(colorKeywords_),\n documentTypes = keySet(documentTypes_),\n documentTypesRegexp = wordRegexp(documentTypes_),\n mediaFeatures = keySet(mediaFeatures_),\n mediaTypes = keySet(mediaTypes_),\n fontProperties = keySet(fontProperties_),\n operatorsRegexp = /^\\s*([.]{2,3}|&&|\\|\\||\\*\\*|[?!=:]?=|[-+*\\/%<>]=?|\\?:|\\~)/,\n wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_),\n blockKeywords = keySet(blockKeywords_),\n vendorPrefixesRegexp = new RegExp(/^\\-(moz|ms|o|webkit)-/i),\n commonAtoms = keySet(commonAtoms_),\n firstWordMatch = \"\",\n states = {},\n ch,\n style,\n type,\n override;\n\n while (indentUnitString.length < indentUnit) indentUnitString += ' ';\n\n /**\n * Tokenizers\n */\n function tokenBase(stream, state) {\n firstWordMatch = stream.string.match(/(^[\\w-]+\\s*=\\s*$)|(^\\s*[\\w-]+\\s*=\\s*[\\w-])|(^\\s*(\\.|#|@|\\$|\\&|\\[|\\d|\\+|::?|\\{|\\>|~|\\/)?\\s*[\\w-]*([a-z0-9-]|\\*|\\/\\*)(\\(|,)?)/);\n state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\\s*/, \"\") : \"\";\n state.context.line.indent = stream.indentation();\n ch = stream.peek();\n\n // Line comment\n if (stream.match(\"//\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n }\n // Block comment\n if (stream.match(\"/*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n // String\n if (ch == \"\\\"\" || ch == \"'\") {\n stream.next();\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n // Def\n if (ch == \"@\") {\n stream.next();\n stream.eatWhile(/[\\w\\\\-]/);\n return [\"def\", stream.current()];\n }\n // ID selector or Hex color\n if (ch == \"#\") {\n stream.next();\n // Hex color\n if (stream.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\\b(?!-)/i)) {\n return [\"atom\", \"atom\"];\n }\n // ID selector\n if (stream.match(/^[a-z][\\w-]*/i)) {\n return [\"builtin\", \"hash\"];\n }\n }\n // Vendor prefixes\n if (stream.match(vendorPrefixesRegexp)) {\n return [\"meta\", \"vendor-prefixes\"];\n }\n // Numbers\n if (stream.match(/^-?[0-9]?\\.?[0-9]/)) {\n stream.eatWhile(/[a-z%]/i);\n return [\"number\", \"unit\"];\n }\n // !important|optional\n if (ch == \"!\") {\n stream.next();\n return [stream.match(/^(important|optional)/i) ? \"keyword\": \"operator\", \"important\"];\n }\n // Class\n if (ch == \".\" && stream.match(/^\\.[a-z][\\w-]*/i)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // url url-prefix domain regexp\n if (stream.match(documentTypesRegexp)) {\n if (stream.peek() == \"(\") state.tokenize = tokenParenthesized;\n return [\"property\", \"word\"];\n }\n // Mixins / Functions\n if (stream.match(/^[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"mixin\"];\n }\n // Block mixins\n if (stream.match(/^(\\+|-)[a-z][\\w-]*\\(/i)) {\n stream.backUp(1);\n return [\"keyword\", \"block-mixin\"];\n }\n // Parent Reference BEM naming\n if (stream.string.match(/^\\s*&/) && stream.match(/^[-_]+[a-z][\\w-]*/)) {\n return [\"qualifier\", \"qualifier\"];\n }\n // / Root Reference & Parent Reference\n if (stream.match(/^(\\/|&)(-|_|:|\\.|#|[a-z])/)) {\n stream.backUp(1);\n return [\"variable-3\", \"reference\"];\n }\n if (stream.match(/^&{1}\\s*$/)) {\n return [\"variable-3\", \"reference\"];\n }\n // Word operator\n if (stream.match(wordOperatorKeywordsRegexp)) {\n return [\"operator\", \"operator\"];\n }\n // Word\n if (stream.match(/^\\$?[-_]*[a-z0-9]+[\\w-]*/i)) {\n // Variable\n if (stream.match(/^(\\.|\\[)[\\w-\\'\\\"\\]]+/i, false)) {\n if (!wordIsTag(stream.current())) {\n stream.match('.');\n return [\"variable-2\", \"variable-name\"];\n }\n }\n return [\"variable-2\", \"word\"];\n }\n // Operators\n if (stream.match(operatorsRegexp)) {\n return [\"operator\", stream.current()];\n }\n // Delimiters\n if (/[:;,{}\\[\\]\\(\\)]/.test(ch)) {\n stream.next();\n return [null, ch];\n }\n // Non-detected items\n stream.next();\n return [null, null];\n }\n\n /**\n * Token comment\n */\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n /**\n * Token string\n */\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return [\"string\", \"string\"];\n };\n }\n\n /**\n * Token parenthesized\n */\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be \"(\"\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return [null, \"(\"];\n }\n\n /**\n * Context management\n */\n function Context(type, indent, prev, line) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n this.line = line || {firstWord: \"\", indent: 0};\n }\n\n function pushContext(state, stream, type, indent) {\n indent = indent >= 0 ? indent : indentUnit;\n state.context = new Context(type, stream.indentation() + indent, state.context);\n return type;\n }\n\n function popContext(state, currentIndent) {\n var contextIndent = state.context.indent - indentUnit;\n currentIndent = currentIndent || false;\n state.context = state.context.prev;\n if (currentIndent) state.context.indent = contextIndent;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n\n /**\n * Parser\n */\n function wordIsTag(word) {\n return word.toLowerCase() in tagKeywords;\n }\n\n function wordIsProperty(word) {\n word = word.toLowerCase();\n return word in propertyKeywords || word in fontProperties;\n }\n\n function wordIsBlock(word) {\n return word.toLowerCase() in blockKeywords;\n }\n\n function wordIsVendorPrefix(word) {\n return word.toLowerCase().match(vendorPrefixesRegexp);\n }\n\n function wordAsValue(word) {\n var wordLC = word.toLowerCase();\n var override = \"variable-2\";\n if (wordIsTag(word)) override = \"tag\";\n else if (wordIsBlock(word)) override = \"block-keyword\";\n else if (wordIsProperty(word)) override = \"property\";\n else if (wordLC in valueKeywords || wordLC in commonAtoms) override = \"atom\";\n else if (wordLC == \"return\" || wordLC in colorKeywords) override = \"keyword\";\n\n // Font family\n else if (word.match(/^[A-Z]/)) override = \"string\";\n return override;\n }\n\n function typeIsBlock(type, stream) {\n return ((endOfLine(stream) && (type == \"{\" || type == \"]\" || type == \"hash\" || type == \"qualifier\")) || type == \"block-mixin\");\n }\n\n function typeIsInterpolation(type, stream) {\n return type == \"{\" && stream.match(/^\\s*\\$?[\\w-]+/i, false);\n }\n\n function typeIsPseudo(type, stream) {\n return type == \":\" && stream.match(/^[a-z-]+/, false);\n }\n\n function startOfLine(stream) {\n return stream.sol() || stream.string.match(new RegExp(\"^\\\\s*\" + escapeRegExp(stream.current())));\n }\n\n function endOfLine(stream) {\n return stream.eol() || stream.match(/^\\s*$/, false);\n }\n\n function firstWordOfLine(line) {\n var re = /^\\s*[-_]*[a-z0-9]+[\\w-]*/i;\n var result = typeof line == \"string\" ? line.match(re) : line.string.match(re);\n return result ? result[0].replace(/^\\s*/, \"\") : \"\";\n }\n\n\n /**\n * Block\n */\n states.block = function(type, stream, state) {\n if ((type == \"comment\" && startOfLine(stream)) ||\n (type == \",\" && endOfLine(stream)) ||\n type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (endOfLine(stream) && type == \"]\") {\n if (!/^\\s*(\\.|#|:|\\[|\\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n }\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"}\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (type == \"variable-name\") {\n if (stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/) || wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"variableName\");\n }\n else {\n return pushContext(state, stream, \"variableName\", 0);\n }\n }\n if (type == \"=\") {\n if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"*\") {\n if (endOfLine(stream) || stream.match(/\\s*(,|\\.|#|\\[|:|{)/,false)) {\n override = \"tag\";\n return pushContext(state, stream, \"block\");\n }\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (/@extends?/.test(type)) {\n return pushContext(state, stream, \"extend\", 0);\n }\n if (type && type.charAt(0) == \"@\") {\n\n // Property Lookup\n if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n return \"block\";\n }\n if (/(@import|@require|@charset)/.test(type)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"reference\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n\n if (type == \"vendor-prefixes\") {\n return pushContext(state, stream, \"vendorPrefixes\");\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n\n if (override == \"property\") {\n if (startOfLine(stream)) {\n return pushContext(state, stream, \"block\", 0);\n } else {\n override = \"atom\";\n return \"block\";\n }\n }\n\n if (override == \"tag\") {\n\n // tag is a css value\n if (/embed|menu|pre|progress|sub|table/.test(word)) {\n if (wordIsProperty(firstWordOfLine(stream))) {\n override = \"atom\";\n return \"block\";\n }\n }\n\n // tag is an attribute\n if (stream.string.match(new RegExp(\"\\\\[\\\\s*\" + word + \"|\" + word +\"\\\\s*\\\\]\"))) {\n override = \"atom\";\n return \"block\";\n }\n\n // tag is a variable\n if (tagVariablesRegexp.test(word)) {\n if ((startOfLine(stream) && stream.string.match(/=/)) ||\n (!startOfLine(stream) &&\n !stream.string.match(/^(\\s*\\.|#|\\&|\\[|\\/|>|\\*)/) &&\n !wordIsTag(firstWordOfLine(stream)))) {\n override = \"variable-2\";\n if (wordIsBlock(firstWordOfLine(stream))) return \"block\";\n return pushContext(state, stream, \"block\", 0);\n }\n }\n\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n }\n if (override == \"block-keyword\") {\n override = \"keyword\";\n\n // Postfix conditionals\n if (stream.current(/(if|unless)/) && !startOfLine(stream)) {\n return \"block\";\n }\n return pushContext(state, stream, \"block\");\n }\n if (word == \"return\") return pushContext(state, stream, \"block\", 0);\n\n // Placeholder selector\n if (override == \"variable-2\" && stream.string.match(/^\\s?\\$[\\w-\\.\\[\\]\\'\\\"]+$/)) {\n return pushContext(state, stream, \"block\");\n }\n }\n return state.context.type;\n };\n\n\n /**\n * Parens\n */\n states.parens = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \")\") {\n if (state.context.prev.type == \"parens\") {\n return popContext(state);\n }\n if ((stream.string.match(/^[a-z][\\w-]*\\(/i) && endOfLine(stream)) ||\n wordIsBlock(firstWordOfLine(stream)) ||\n /(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(firstWordOfLine(stream)) ||\n (!stream.string.match(/^-?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) &&\n wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (stream.string.match(/^[\\$-]?[a-z][\\w-\\.\\[\\]\\'\\\"]*\\s*=/) ||\n stream.string.match(/^\\s*(\\(|\\)|[0-9])/) ||\n stream.string.match(/^\\s+[a-z][\\w-]*\\(/i) ||\n stream.string.match(/^\\s+[\\$-]?[a-z]/i)) {\n return pushContext(state, stream, \"block\", 0);\n }\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"block\", 0);\n }\n if (type && type.charAt(0) == \"@\" && wordIsProperty(stream.current().slice(1))) {\n override = \"variable-2\";\n }\n if (type == \"word\") {\n var word = stream.current();\n override = wordAsValue(word);\n if (override == \"tag\" && tagVariablesRegexp.test(word)) {\n override = \"variable-2\";\n }\n if (override == \"property\" || word == \"to\") override = \"atom\";\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\");\n }\n if (typeIsPseudo(type, stream)) {\n return pushContext(state, stream, \"pseudo\");\n }\n return state.context.type;\n };\n\n\n /**\n * Vendor prefixes\n */\n states.vendorPrefixes = function(type, stream, state) {\n if (type == \"word\") {\n override = \"property\";\n return pushContext(state, stream, \"block\", 0);\n }\n return popContext(state);\n };\n\n\n /**\n * Pseudo\n */\n states.pseudo = function(type, stream, state) {\n if (!wordIsProperty(firstWordOfLine(stream.string))) {\n stream.match(/^[a-z-]+/);\n override = \"variable-3\";\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n return popContext(state);\n }\n return popAndPass(type, stream, state);\n };\n\n\n /**\n * atBlock\n */\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (typeIsBlock(type, stream)) {\n return pushContext(state, stream, \"block\");\n }\n if (typeIsInterpolation(type, stream)) {\n return pushContext(state, stream, \"interpolation\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (/^(only|not|and|or)$/.test(word))\n override = \"keyword\";\n else if (documentTypes.hasOwnProperty(word))\n override = \"tag\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else override = wordAsValue(stream.current());\n if (override == \"tag\" && endOfLine(stream)) {\n return pushContext(state, stream, \"block\");\n }\n }\n if (type == \"operator\" && /^(not|and|or)$/.test(stream.current())) {\n override = \"keyword\";\n }\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return state.context.type;\n if (type == \")\") {\n if (endOfLine(stream)) return pushContext(state, stream, \"block\");\n else return pushContext(state, stream, \"atBlock\");\n }\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n override = wordAsValue(word);\n if (/^(max|min)/.test(word)) override = \"property\";\n if (override == \"tag\") {\n tagVariablesRegexp.test(word) ? override = \"variable-2\" : override = \"atom\";\n }\n return state.context.type;\n }\n return states.atBlock(type, stream, state);\n };\n\n\n /**\n * Keyframes\n */\n states.keyframes = function(type, stream, state) {\n if (stream.indentation() == \"0\" && ((type == \"}\" && startOfLine(stream)) || type == \"]\" || type == \"hash\"\n || type == \"qualifier\" || wordIsTag(stream.current()))) {\n return popAndPass(type, stream, state);\n }\n if (type == \"{\") return pushContext(state, stream, \"keyframes\");\n if (type == \"}\") {\n if (startOfLine(stream)) return popContext(state, true);\n else return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"unit\" && /^[0-9]+\\%$/.test(stream.current())) {\n return pushContext(state, stream, \"keyframes\");\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"block-keyword\") {\n override = \"keyword\";\n return pushContext(state, stream, \"keyframes\");\n }\n }\n if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) {\n return pushContext(state, stream, endOfLine(stream) ? \"block\" : \"atBlock\");\n }\n if (type == \"mixin\") {\n return pushContext(state, stream, \"block\", 0);\n }\n return state.context.type;\n };\n\n\n /**\n * Interpolation\n */\n states.interpolation = function(type, stream, state) {\n if (type == \"{\") popContext(state) && pushContext(state, stream, \"block\");\n if (type == \"}\") {\n if (stream.string.match(/^\\s*(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/i) ||\n (stream.string.match(/^\\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) {\n return pushContext(state, stream, \"block\");\n }\n if (!stream.string.match(/^(\\{|\\s*\\&)/) ||\n stream.match(/\\s*[\\w-]/,false)) {\n return pushContext(state, stream, \"block\", 0);\n }\n return pushContext(state, stream, \"block\");\n }\n if (type == \"variable-name\") {\n return pushContext(state, stream, \"variableName\", 0);\n }\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n if (override == \"tag\") override = \"atom\";\n }\n return state.context.type;\n };\n\n\n /**\n * Extend/s\n */\n states.extend = function(type, stream, state) {\n if (type == \"[\" || type == \"=\") return \"extend\";\n if (type == \"]\") return popContext(state);\n if (type == \"word\") {\n override = wordAsValue(stream.current());\n return \"extend\";\n }\n return popContext(state);\n };\n\n\n /**\n * Variable name\n */\n states.variableName = function(type, stream, state) {\n if (type == \"string\" || type == \"[\" || type == \"]\" || stream.current().match(/^(\\.|\\$)/)) {\n if (stream.current().match(/^\\.[\\w-]+/i)) override = \"variable-2\";\n return \"variableName\";\n }\n return popAndPass(type, stream, state);\n };\n\n\n return {\n startState: function(base) {\n return {\n tokenize: null,\n state: \"block\",\n context: new Context(\"block\", base || 0, null)\n };\n },\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n state.state = states[state.state](type, stream, state);\n return override;\n },\n indent: function(state, textAfter, line) {\n\n var cx = state.context,\n ch = textAfter && textAfter.charAt(0),\n indent = cx.indent,\n lineFirstWord = firstWordOfLine(textAfter),\n lineIndent = line.match(/^\\s*/)[0].replace(/\\t/g, indentUnitString).length,\n prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : \"\",\n prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent;\n\n if (cx.prev &&\n (ch == \"}\" && (cx.type == \"block\" || cx.type == \"atBlock\" || cx.type == \"keyframes\") ||\n ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\"))) {\n indent = cx.indent - indentUnit;\n } else if (!(/(\\})/.test(ch))) {\n if (/@|\\$|\\d/.test(ch) ||\n /^\\{/.test(textAfter) ||\n/^\\s*\\/(\\/|\\*)/.test(textAfter) ||\n /^\\s*\\/\\*/.test(prevLineFirstWord) ||\n /^\\s*[\\w-\\.\\[\\]\\'\\\"]+\\s*(\\?|:|\\+)?=/i.test(textAfter) ||\n/^(\\+|-)?[a-z][\\w-]*\\(/i.test(textAfter) ||\n/^return/.test(textAfter) ||\n wordIsBlock(lineFirstWord)) {\n indent = lineIndent;\n } else if (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(ch) || wordIsTag(lineFirstWord)) {\n if (/\\,\\s*$/.test(prevLineFirstWord)) {\n indent = prevLineIndent;\n } else if (/^\\s+/.test(line) && (/(\\.|#|:|\\[|\\*|&|>|~|\\+|\\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n } else if (!/,\\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) {\n if (wordIsBlock(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit;\n } else if (/^\\{/.test(prevLineFirstWord)) {\n indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit;\n } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) {\n indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent;\n } else if (/^(\\.|#|:|\\[|\\*|&|@|\\+|\\-|>|~|\\/)/.test(prevLineFirstWord) ||\n /=\\s*$/.test(prevLineFirstWord) ||\n wordIsTag(prevLineFirstWord) ||\n /^\\$[\\w-\\.\\[\\]\\'\\\"]/.test(prevLineFirstWord)) {\n indent = prevLineIndent + indentUnit;\n } else {\n indent = lineIndent;\n }\n }\n }\n return indent;\n },\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: \"//\",\n fold: \"indent\"\n };\n });\n\n // developer.mozilla.org/en-US/docs/Web/HTML/Element\n var tagKeywords_ = [\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\", \"b\", \"base\",\"bdi\", \"bdo\",\"bgsound\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\", \"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"div\", \"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\", \"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\", \"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\", \"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"nobr\",\"noframes\", \"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"pre\", \"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\", \"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"track\", \"u\",\"ul\",\"var\",\"video\"];\n\n // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js\n // Note, \"url-prefix\" should precede \"url\" in order to match correctly in documentTypesRegexp\n var documentTypes_ = [\"domain\", \"regexp\", \"url-prefix\", \"url\"];\n var mediaTypes_ = [\"all\",\"aural\",\"braille\",\"handheld\",\"print\",\"projection\",\"screen\",\"tty\",\"tv\",\"embossed\"];\n var mediaFeatures_ = [\"width\",\"min-width\",\"max-width\",\"height\",\"min-height\",\"max-height\",\"device-width\",\"min-device-width\",\"max-device-width\",\"device-height\",\"min-device-height\",\"max-device-height\",\"aspect-ratio\",\"min-aspect-ratio\",\"max-aspect-ratio\",\"device-aspect-ratio\",\"min-device-aspect-ratio\",\"max-device-aspect-ratio\",\"color\",\"min-color\",\"max-color\",\"color-index\",\"min-color-index\",\"max-color-index\",\"monochrome\",\"min-monochrome\",\"max-monochrome\",\"resolution\",\"min-resolution\",\"max-resolution\",\"scan\",\"grid\",\"dynamic-range\",\"video-dynamic-range\"];\n var propertyKeywords_ = [\"align-content\",\"align-items\",\"align-self\",\"alignment-adjust\",\"alignment-baseline\",\"anchor-point\",\"animation\",\"animation-delay\",\"animation-direction\",\"animation-duration\",\"animation-fill-mode\",\"animation-iteration-count\",\"animation-name\",\"animation-play-state\",\"animation-timing-function\",\"appearance\",\"azimuth\",\"backface-visibility\",\"background\",\"background-attachment\",\"background-clip\",\"background-color\",\"background-image\",\"background-origin\",\"background-position\",\"background-repeat\",\"background-size\",\"baseline-shift\",\"binding\",\"bleed\",\"bookmark-label\",\"bookmark-level\",\"bookmark-state\",\"bookmark-target\",\"border\",\"border-bottom\",\"border-bottom-color\",\"border-bottom-left-radius\",\"border-bottom-right-radius\",\"border-bottom-style\",\"border-bottom-width\",\"border-collapse\",\"border-color\",\"border-image\",\"border-image-outset\",\"border-image-repeat\",\"border-image-slice\",\"border-image-source\",\"border-image-width\",\"border-left\",\"border-left-color\",\"border-left-style\",\"border-left-width\",\"border-radius\",\"border-right\",\"border-right-color\",\"border-right-style\",\"border-right-width\",\"border-spacing\",\"border-style\",\"border-top\",\"border-top-color\",\"border-top-left-radius\",\"border-top-right-radius\",\"border-top-style\",\"border-top-width\",\"border-width\",\"bottom\",\"box-decoration-break\",\"box-shadow\",\"box-sizing\",\"break-after\",\"break-before\",\"break-inside\",\"caption-side\",\"clear\",\"clip\",\"color\",\"color-profile\",\"column-count\",\"column-fill\",\"column-gap\",\"column-rule\",\"column-rule-color\",\"column-rule-style\",\"column-rule-width\",\"column-span\",\"column-width\",\"columns\",\"content\",\"counter-increment\",\"counter-reset\",\"crop\",\"cue\",\"cue-after\",\"cue-before\",\"cursor\",\"direction\",\"display\",\"dominant-baseline\",\"drop-initial-after-adjust\",\"drop-initial-after-align\",\"drop-initial-before-adjust\",\"drop-initial-before-align\",\"drop-initial-size\",\"drop-initial-value\",\"elevation\",\"empty-cells\",\"fit\",\"fit-position\",\"flex\",\"flex-basis\",\"flex-direction\",\"flex-flow\",\"flex-grow\",\"flex-shrink\",\"flex-wrap\",\"float\",\"float-offset\",\"flow-from\",\"flow-into\",\"font\",\"font-feature-settings\",\"font-family\",\"font-kerning\",\"font-language-override\",\"font-size\",\"font-size-adjust\",\"font-stretch\",\"font-style\",\"font-synthesis\",\"font-variant\",\"font-variant-alternates\",\"font-variant-caps\",\"font-variant-east-asian\",\"font-variant-ligatures\",\"font-variant-numeric\",\"font-variant-position\",\"font-weight\",\"grid\",\"grid-area\",\"grid-auto-columns\",\"grid-auto-flow\",\"grid-auto-position\",\"grid-auto-rows\",\"grid-column\",\"grid-column-end\",\"grid-column-start\",\"grid-row\",\"grid-row-end\",\"grid-row-start\",\"grid-template\",\"grid-template-areas\",\"grid-template-columns\",\"grid-template-rows\",\"hanging-punctuation\",\"height\",\"hyphens\",\"icon\",\"image-orientation\",\"image-rendering\",\"image-resolution\",\"inline-box-align\",\"justify-content\",\"left\",\"letter-spacing\",\"line-break\",\"line-height\",\"line-stacking\",\"line-stacking-ruby\",\"line-stacking-shift\",\"line-stacking-strategy\",\"list-style\",\"list-style-image\",\"list-style-position\",\"list-style-type\",\"margin\",\"margin-bottom\",\"margin-left\",\"margin-right\",\"margin-top\",\"marker-offset\",\"marks\",\"marquee-direction\",\"marquee-loop\",\"marquee-play-count\",\"marquee-speed\",\"marquee-style\",\"max-height\",\"max-width\",\"min-height\",\"min-width\",\"move-to\",\"nav-down\",\"nav-index\",\"nav-left\",\"nav-right\",\"nav-up\",\"object-fit\",\"object-position\",\"opacity\",\"order\",\"orphans\",\"outline\",\"outline-color\",\"outline-offset\",\"outline-style\",\"outline-width\",\"overflow\",\"overflow-style\",\"overflow-wrap\",\"overflow-x\",\"overflow-y\",\"padding\",\"padding-bottom\",\"padding-left\",\"padding-right\",\"padding-top\",\"page\",\"page-break-after\",\"page-break-before\",\"page-break-inside\",\"page-policy\",\"pause\",\"pause-after\",\"pause-before\",\"perspective\",\"perspective-origin\",\"pitch\",\"pitch-range\",\"play-during\",\"position\",\"presentation-level\",\"punctuation-trim\",\"quotes\",\"region-break-after\",\"region-break-before\",\"region-break-inside\",\"region-fragment\",\"rendering-intent\",\"resize\",\"rest\",\"rest-after\",\"rest-before\",\"richness\",\"right\",\"rotation\",\"rotation-point\",\"ruby-align\",\"ruby-overhang\",\"ruby-position\",\"ruby-span\",\"shape-image-threshold\",\"shape-inside\",\"shape-margin\",\"shape-outside\",\"size\",\"speak\",\"speak-as\",\"speak-header\",\"speak-numeral\",\"speak-punctuation\",\"speech-rate\",\"stress\",\"string-set\",\"tab-size\",\"table-layout\",\"target\",\"target-name\",\"target-new\",\"target-position\",\"text-align\",\"text-align-last\",\"text-decoration\",\"text-decoration-color\",\"text-decoration-line\",\"text-decoration-skip\",\"text-decoration-style\",\"text-emphasis\",\"text-emphasis-color\",\"text-emphasis-position\",\"text-emphasis-style\",\"text-height\",\"text-indent\",\"text-justify\",\"text-outline\",\"text-overflow\",\"text-shadow\",\"text-size-adjust\",\"text-space-collapse\",\"text-transform\",\"text-underline-position\",\"text-wrap\",\"top\",\"transform\",\"transform-origin\",\"transform-style\",\"transition\",\"transition-delay\",\"transition-duration\",\"transition-property\",\"transition-timing-function\",\"unicode-bidi\",\"vertical-align\",\"visibility\",\"voice-balance\",\"voice-duration\",\"voice-family\",\"voice-pitch\",\"voice-range\",\"voice-rate\",\"voice-stress\",\"voice-volume\",\"volume\",\"white-space\",\"widows\",\"width\",\"will-change\",\"word-break\",\"word-spacing\",\"word-wrap\",\"z-index\",\"clip-path\",\"clip-rule\",\"mask\",\"enable-background\",\"filter\",\"flood-color\",\"flood-opacity\",\"lighting-color\",\"stop-color\",\"stop-opacity\",\"pointer-events\",\"color-interpolation\",\"color-interpolation-filters\",\"color-rendering\",\"fill\",\"fill-opacity\",\"fill-rule\",\"image-rendering\",\"marker\",\"marker-end\",\"marker-mid\",\"marker-start\",\"shape-rendering\",\"stroke\",\"stroke-dasharray\",\"stroke-dashoffset\",\"stroke-linecap\",\"stroke-linejoin\",\"stroke-miterlimit\",\"stroke-opacity\",\"stroke-width\",\"text-rendering\",\"baseline-shift\",\"dominant-baseline\",\"glyph-orientation-horizontal\",\"glyph-orientation-vertical\",\"text-anchor\",\"writing-mode\",\"font-smoothing\",\"osx-font-smoothing\"];\n var nonStandardPropertyKeywords_ = [\"scrollbar-arrow-color\",\"scrollbar-base-color\",\"scrollbar-dark-shadow-color\",\"scrollbar-face-color\",\"scrollbar-highlight-color\",\"scrollbar-shadow-color\",\"scrollbar-3d-light-color\",\"scrollbar-track-color\",\"shape-inside\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"zoom\"];\n var fontProperties_ = [\"font-family\",\"src\",\"unicode-range\",\"font-variant\",\"font-feature-settings\",\"font-stretch\",\"font-weight\",\"font-style\"];\n var colorKeywords_ = [\"aliceblue\",\"antiquewhite\",\"aqua\",\"aquamarine\",\"azure\",\"beige\",\"bisque\",\"black\",\"blanchedalmond\",\"blue\",\"blueviolet\",\"brown\",\"burlywood\",\"cadetblue\",\"chartreuse\",\"chocolate\",\"coral\",\"cornflowerblue\",\"cornsilk\",\"crimson\",\"cyan\",\"darkblue\",\"darkcyan\",\"darkgoldenrod\",\"darkgray\",\"darkgreen\",\"darkkhaki\",\"darkmagenta\",\"darkolivegreen\",\"darkorange\",\"darkorchid\",\"darkred\",\"darksalmon\",\"darkseagreen\",\"darkslateblue\",\"darkslategray\",\"darkturquoise\",\"darkviolet\",\"deeppink\",\"deepskyblue\",\"dimgray\",\"dodgerblue\",\"firebrick\",\"floralwhite\",\"forestgreen\",\"fuchsia\",\"gainsboro\",\"ghostwhite\",\"gold\",\"goldenrod\",\"gray\",\"grey\",\"green\",\"greenyellow\",\"honeydew\",\"hotpink\",\"indianred\",\"indigo\",\"ivory\",\"khaki\",\"lavender\",\"lavenderblush\",\"lawngreen\",\"lemonchiffon\",\"lightblue\",\"lightcoral\",\"lightcyan\",\"lightgoldenrodyellow\",\"lightgray\",\"lightgreen\",\"lightpink\",\"lightsalmon\",\"lightseagreen\",\"lightskyblue\",\"lightslategray\",\"lightsteelblue\",\"lightyellow\",\"lime\",\"limegreen\",\"linen\",\"magenta\",\"maroon\",\"mediumaquamarine\",\"mediumblue\",\"mediumorchid\",\"mediumpurple\",\"mediumseagreen\",\"mediumslateblue\",\"mediumspringgreen\",\"mediumturquoise\",\"mediumvioletred\",\"midnightblue\",\"mintcream\",\"mistyrose\",\"moccasin\",\"navajowhite\",\"navy\",\"oldlace\",\"olive\",\"olivedrab\",\"orange\",\"orangered\",\"orchid\",\"palegoldenrod\",\"palegreen\",\"paleturquoise\",\"palevioletred\",\"papayawhip\",\"peachpuff\",\"peru\",\"pink\",\"plum\",\"powderblue\",\"purple\",\"rebeccapurple\",\"red\",\"rosybrown\",\"royalblue\",\"saddlebrown\",\"salmon\",\"sandybrown\",\"seagreen\",\"seashell\",\"sienna\",\"silver\",\"skyblue\",\"slateblue\",\"slategray\",\"snow\",\"springgreen\",\"steelblue\",\"tan\",\"teal\",\"thistle\",\"tomato\",\"turquoise\",\"violet\",\"wheat\",\"white\",\"whitesmoke\",\"yellow\",\"yellowgreen\"];\n var valueKeywords_ = [\"above\",\"absolute\",\"activeborder\",\"additive\",\"activecaption\",\"afar\",\"after-white-space\",\"ahead\",\"alias\",\"all\",\"all-scroll\",\"alphabetic\",\"alternate\",\"always\",\"amharic\",\"amharic-abegede\",\"antialiased\",\"appworkspace\",\"arabic-indic\",\"armenian\",\"asterisks\",\"attr\",\"auto\",\"avoid\",\"avoid-column\",\"avoid-page\",\"avoid-region\",\"background\",\"backwards\",\"baseline\",\"below\",\"bidi-override\",\"binary\",\"bengali\",\"blink\",\"block\",\"block-axis\",\"bold\",\"bolder\",\"border\",\"border-box\",\"both\",\"bottom\",\"break\",\"break-all\",\"break-word\",\"bullets\",\"button\",\"buttonface\",\"buttonhighlight\",\"buttonshadow\",\"buttontext\",\"calc\",\"cambodian\",\"capitalize\",\"caps-lock-indicator\",\"caption\",\"captiontext\",\"caret\",\"cell\",\"center\",\"checkbox\",\"circle\",\"cjk-decimal\",\"cjk-earthly-branch\",\"cjk-heavenly-stem\",\"cjk-ideographic\",\"clear\",\"clip\",\"close-quote\",\"col-resize\",\"collapse\",\"column\",\"compact\",\"condensed\",\"conic-gradient\",\"contain\",\"content\",\"contents\",\"content-box\",\"context-menu\",\"continuous\",\"copy\",\"counter\",\"counters\",\"cover\",\"crop\",\"cross\",\"crosshair\",\"currentcolor\",\"cursive\",\"cyclic\",\"dashed\",\"decimal\",\"decimal-leading-zero\",\"default\",\"default-button\",\"destination-atop\",\"destination-in\",\"destination-out\",\"destination-over\",\"devanagari\",\"disc\",\"discard\",\"disclosure-closed\",\"disclosure-open\",\"document\",\"dot-dash\",\"dot-dot-dash\",\"dotted\",\"double\",\"down\",\"e-resize\",\"ease\",\"ease-in\",\"ease-in-out\",\"ease-out\",\"element\",\"ellipse\",\"ellipsis\",\"embed\",\"end\",\"ethiopic\",\"ethiopic-abegede\",\"ethiopic-abegede-am-et\",\"ethiopic-abegede-gez\",\"ethiopic-abegede-ti-er\",\"ethiopic-abegede-ti-et\",\"ethiopic-halehame-aa-er\",\"ethiopic-halehame-aa-et\",\"ethiopic-halehame-am-et\",\"ethiopic-halehame-gez\",\"ethiopic-halehame-om-et\",\"ethiopic-halehame-sid-et\",\"ethiopic-halehame-so-et\",\"ethiopic-halehame-ti-er\",\"ethiopic-halehame-ti-et\",\"ethiopic-halehame-tig\",\"ethiopic-numeric\",\"ew-resize\",\"expanded\",\"extends\",\"extra-condensed\",\"extra-expanded\",\"fantasy\",\"fast\",\"fill\",\"fixed\",\"flat\",\"flex\",\"footnotes\",\"forwards\",\"from\",\"geometricPrecision\",\"georgian\",\"graytext\",\"groove\",\"gujarati\",\"gurmukhi\",\"hand\",\"hangul\",\"hangul-consonant\",\"hebrew\",\"help\",\"hidden\",\"hide\",\"high\",\"higher\",\"highlight\",\"highlighttext\",\"hiragana\",\"hiragana-iroha\",\"horizontal\",\"hsl\",\"hsla\",\"icon\",\"ignore\",\"inactiveborder\",\"inactivecaption\",\"inactivecaptiontext\",\"infinite\",\"infobackground\",\"infotext\",\"inherit\",\"initial\",\"inline\",\"inline-axis\",\"inline-block\",\"inline-flex\",\"inline-table\",\"inset\",\"inside\",\"intrinsic\",\"invert\",\"italic\",\"japanese-formal\",\"japanese-informal\",\"justify\",\"kannada\",\"katakana\",\"katakana-iroha\",\"keep-all\",\"khmer\",\"korean-hangul-formal\",\"korean-hanja-formal\",\"korean-hanja-informal\",\"landscape\",\"lao\",\"large\",\"larger\",\"left\",\"level\",\"lighter\",\"line-through\",\"linear\",\"linear-gradient\",\"lines\",\"list-item\",\"listbox\",\"listitem\",\"local\",\"logical\",\"loud\",\"lower\",\"lower-alpha\",\"lower-armenian\",\"lower-greek\",\"lower-hexadecimal\",\"lower-latin\",\"lower-norwegian\",\"lower-roman\",\"lowercase\",\"ltr\",\"malayalam\",\"match\",\"matrix\",\"matrix3d\",\"media-play-button\",\"media-slider\",\"media-sliderthumb\",\"media-volume-slider\",\"media-volume-sliderthumb\",\"medium\",\"menu\",\"menulist\",\"menulist-button\",\"menutext\",\"message-box\",\"middle\",\"min-intrinsic\",\"mix\",\"mongolian\",\"monospace\",\"move\",\"multiple\",\"myanmar\",\"n-resize\",\"narrower\",\"ne-resize\",\"nesw-resize\",\"no-close-quote\",\"no-drop\",\"no-open-quote\",\"no-repeat\",\"none\",\"normal\",\"not-allowed\",\"nowrap\",\"ns-resize\",\"numbers\",\"numeric\",\"nw-resize\",\"nwse-resize\",\"oblique\",\"octal\",\"open-quote\",\"optimizeLegibility\",\"optimizeSpeed\",\"oriya\",\"oromo\",\"outset\",\"outside\",\"outside-shape\",\"overlay\",\"overline\",\"padding\",\"padding-box\",\"painted\",\"page\",\"paused\",\"persian\",\"perspective\",\"plus-darker\",\"plus-lighter\",\"pointer\",\"polygon\",\"portrait\",\"pre\",\"pre-line\",\"pre-wrap\",\"preserve-3d\",\"progress\",\"push-button\",\"radial-gradient\",\"radio\",\"read-only\",\"read-write\",\"read-write-plaintext-only\",\"rectangle\",\"region\",\"relative\",\"repeat\",\"repeating-linear-gradient\",\"repeating-radial-gradient\",\"repeating-conic-gradient\",\"repeat-x\",\"repeat-y\",\"reset\",\"reverse\",\"rgb\",\"rgba\",\"ridge\",\"right\",\"rotate\",\"rotate3d\",\"rotateX\",\"rotateY\",\"rotateZ\",\"round\",\"row-resize\",\"rtl\",\"run-in\",\"running\",\"s-resize\",\"sans-serif\",\"scale\",\"scale3d\",\"scaleX\",\"scaleY\",\"scaleZ\",\"scroll\",\"scrollbar\",\"scroll-position\",\"se-resize\",\"searchfield\",\"searchfield-cancel-button\",\"searchfield-decoration\",\"searchfield-results-button\",\"searchfield-results-decoration\",\"semi-condensed\",\"semi-expanded\",\"separate\",\"serif\",\"show\",\"sidama\",\"simp-chinese-formal\",\"simp-chinese-informal\",\"single\",\"skew\",\"skewX\",\"skewY\",\"skip-white-space\",\"slide\",\"slider-horizontal\",\"slider-vertical\",\"sliderthumb-horizontal\",\"sliderthumb-vertical\",\"slow\",\"small\",\"small-caps\",\"small-caption\",\"smaller\",\"solid\",\"somali\",\"source-atop\",\"source-in\",\"source-out\",\"source-over\",\"space\",\"spell-out\",\"square\",\"square-button\",\"standard\",\"start\",\"static\",\"status-bar\",\"stretch\",\"stroke\",\"sub\",\"subpixel-antialiased\",\"super\",\"sw-resize\",\"symbolic\",\"symbols\",\"table\",\"table-caption\",\"table-cell\",\"table-column\",\"table-column-group\",\"table-footer-group\",\"table-header-group\",\"table-row\",\"table-row-group\",\"tamil\",\"telugu\",\"text\",\"text-bottom\",\"text-top\",\"textarea\",\"textfield\",\"thai\",\"thick\",\"thin\",\"threeddarkshadow\",\"threedface\",\"threedhighlight\",\"threedlightshadow\",\"threedshadow\",\"tibetan\",\"tigre\",\"tigrinya-er\",\"tigrinya-er-abegede\",\"tigrinya-et\",\"tigrinya-et-abegede\",\"to\",\"top\",\"trad-chinese-formal\",\"trad-chinese-informal\",\"translate\",\"translate3d\",\"translateX\",\"translateY\",\"translateZ\",\"transparent\",\"ultra-condensed\",\"ultra-expanded\",\"underline\",\"up\",\"upper-alpha\",\"upper-armenian\",\"upper-greek\",\"upper-hexadecimal\",\"upper-latin\",\"upper-norwegian\",\"upper-roman\",\"uppercase\",\"urdu\",\"url\",\"var\",\"vertical\",\"vertical-text\",\"visible\",\"visibleFill\",\"visiblePainted\",\"visibleStroke\",\"visual\",\"w-resize\",\"wait\",\"wave\",\"wider\",\"window\",\"windowframe\",\"windowtext\",\"words\",\"x-large\",\"x-small\",\"xor\",\"xx-large\",\"xx-small\",\"bicubic\",\"optimizespeed\",\"grayscale\",\"row\",\"row-reverse\",\"wrap\",\"wrap-reverse\",\"column-reverse\",\"flex-start\",\"flex-end\",\"space-between\",\"space-around\", \"unset\"];\n\n var wordOperatorKeywords_ = [\"in\",\"and\",\"or\",\"not\",\"is not\",\"is a\",\"is\",\"isnt\",\"defined\",\"if unless\"],\n blockKeywords_ = [\"for\",\"if\",\"else\",\"unless\", \"from\", \"to\"],\n commonAtoms_ = [\"null\",\"true\",\"false\",\"href\",\"title\",\"type\",\"not-allowed\",\"readonly\",\"disabled\"],\n commonDef_ = [\"@font-face\", \"@keyframes\", \"@media\", \"@viewport\", \"@page\", \"@host\", \"@supports\", \"@block\", \"@css\"];\n\n var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_,\n propertyKeywords_,nonStandardPropertyKeywords_,\n colorKeywords_,valueKeywords_,fontProperties_,\n wordOperatorKeywords_,blockKeywords_,\n commonAtoms_,commonDef_);\n\n function wordRegexp(words) {\n words = words.sort(function(a,b){return b > a;});\n return new RegExp(\"^((\" + words.join(\")|(\") + \"))\\\\b\");\n }\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) keys[array[i]] = true;\n return keys;\n }\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, \"\\\\$&\");\n }\n\n CodeMirror.registerHelper(\"hintWords\", \"stylus\", hintWords);\n CodeMirror.defineMIME(\"text/x-styl\", \"stylus\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function (mod) {\n \"use strict\";\n if (typeof exports === \"object\" && typeof module === \"object\") {// CommonJS\n mod(require(\"../../lib/codemirror\"),\n require(\"../../addon/mode/overlay\"),\n require(\"../xml/xml\"),\n require(\"../javascript/javascript\"),\n require(\"../coffeescript/coffeescript\"),\n require(\"../css/css\"),\n require(\"../sass/sass\"),\n require(\"../stylus/stylus\"),\n require(\"../pug/pug\"),\n require(\"../handlebars/handlebars\"));\n } else if (typeof define === \"function\" && define.amd) { // AMD\n define([\"../../lib/codemirror\",\n \"../../addon/mode/overlay\",\n \"../xml/xml\",\n \"../javascript/javascript\",\n \"../coffeescript/coffeescript\",\n \"../css/css\",\n \"../sass/sass\",\n \"../stylus/stylus\",\n \"../pug/pug\",\n \"../handlebars/handlebars\"], mod);\n } else { // Plain browser env\n mod(CodeMirror);\n }\n})(function (CodeMirror) {\n var tagLanguages = {\n script: [\n [\"lang\", /coffee(script)?/, \"coffeescript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?coffee(?:script)?$/, \"coffeescript\"],\n [\"lang\", /^babel$/, \"javascript\"],\n [\"type\", /^text\\/babel$/, \"javascript\"],\n [\"type\", /^text\\/ecmascript-\\d+$/, \"javascript\"]\n ],\n style: [\n [\"lang\", /^stylus$/i, \"stylus\"],\n [\"lang\", /^sass$/i, \"sass\"],\n [\"lang\", /^less$/i, \"text/x-less\"],\n [\"lang\", /^scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?styl(us)?$/i, \"stylus\"],\n [\"type\", /^text\\/sass/i, \"sass\"],\n [\"type\", /^(text\\/)?(x-)?scss$/i, \"text/x-scss\"],\n [\"type\", /^(text\\/)?(x-)?less$/i, \"text/x-less\"]\n ],\n template: [\n [\"lang\", /^vue-template$/i, \"vue\"],\n [\"lang\", /^pug$/i, \"pug\"],\n [\"lang\", /^handlebars$/i, \"handlebars\"],\n [\"type\", /^(text\\/)?(x-)?pug$/i, \"pug\"],\n [\"type\", /^text\\/x-handlebars-template$/i, \"handlebars\"],\n [null, null, \"vue-template\"]\n ]\n };\n\n CodeMirror.defineMode(\"vue-template\", function (config, parserConfig) {\n var mustacheOverlay = {\n token: function (stream) {\n if (stream.match(/^\\{\\{.*?\\}\\}/)) return \"meta mustache\";\n while (stream.next() && !stream.match(\"{{\", false)) {}\n return null;\n }\n };\n return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || \"text/html\"), mustacheOverlay);\n });\n\n CodeMirror.defineMode(\"vue\", function (config) {\n return CodeMirror.getMode(config, {name: \"htmlmixed\", tags: tagLanguages});\n }, \"htmlmixed\", \"xml\", \"javascript\", \"coffeescript\", \"css\", \"sass\", \"stylus\", \"pug\", \"handlebars\");\n\n CodeMirror.defineMIME(\"script/x-vue\", \"vue\");\n CodeMirror.defineMIME(\"text/x-vue\", \"vue\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '' + tag + '>';\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","module.exports = typeof window == 'object' && typeof Deno != 'object';\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var hasOwn = require('../internals/has-own-property');\n\nmodule.exports = function (descriptor) {\n return descriptor !== undefined && (hasOwn(descriptor, 'value') || hasOwn(descriptor, 'writable'));\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n defineProperty(value, 'name', { value: name, configurable: true });\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es-x/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n var n = +x;\n // eslint-disable-next-line no-self-compare -- NaN check\n return n == 0 || n != n ? n : n < 0 ? -1 : 1;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es-x/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","var call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.2/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n cbrt: function cbrt(x) {\n var n = +x;\n return sign(n) * pow(abs(n), 1 / 3);\n }\n});\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\n// `Math.sign` method\n// https://tc39.es/ecma262/#sec-math.sign\n$({ target: 'Math', stat: true }, {\n sign: sign\n});\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n","var $ = require('../internals/export');\n\n// `Number.isNaN` method\n// https://tc39.es/ecma262/#sec-number.isnan\n$({ target: 'Number', stat: true }, {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return number != number;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = $String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return $String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es-x/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar isDataDescriptor = require('../internals/is-data-descriptor');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\n\n// `Reflect.get` method\n// https://tc39.es/ecma262/#sec-reflect.get\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var descriptor, prototype;\n if (anObject(target) === receiver) return target[propertyKey];\n descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);\n if (descriptor) return isDataDescriptor(descriptor)\n ? descriptor.value\n : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);\n if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);\n}\n\n$({ target: 'Reflect', stat: true }, {\n get: get\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function dotAll() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n configurable: true,\n get: function sticky() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).sticky;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar $TypeError = TypeError;\nvar un$Test = uncurryThis(/./.test);\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n var exec = this.exec;\n if (!isCallable(exec)) return un$Test(this, str);\n var result = call(exec, this, str);\n if (result !== null && !isObject(result)) {\n throw new $TypeError('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return un$EndsWith\n ? un$EndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : getMethod(regexp, SEARCH);\n return searcher ? call(searcher, regexp, O) : new RegExp(regexp)[SEARCH](toString(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeSearch, rx, S);\n\n if (res.done) return res.value;\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return un$StartsWith\n ? un$StartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeHTML = exports.decodeHTMLStrict = exports.decodeXML = void 0;\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar legacy_json_1 = __importDefault(require(\"./maps/legacy.json\"));\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar decode_codepoint_1 = __importDefault(require(\"./decode_codepoint\"));\nvar strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\\da-fA-F]+|#\\d+);/g;\nexports.decodeXML = getStrictDecoder(xml_json_1.default);\nexports.decodeHTMLStrict = getStrictDecoder(entities_json_1.default);\nfunction getStrictDecoder(map) {\n var replace = getReplacer(map);\n return function (str) { return String(str).replace(strictEntityRe, replace); };\n}\nvar sorter = function (a, b) { return (a < b ? 1 : -1); };\nexports.decodeHTML = (function () {\n var legacy = Object.keys(legacy_json_1.default).sort(sorter);\n var keys = Object.keys(entities_json_1.default).sort(sorter);\n for (var i = 0, j = 0; i < keys.length; i++) {\n if (legacy[j] === keys[i]) {\n keys[i] += \";?\";\n j++;\n }\n else {\n keys[i] += \";\";\n }\n }\n var re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\");\n var replace = getReplacer(entities_json_1.default);\n function replacer(str) {\n if (str.substr(-1) !== \";\")\n str += \";\";\n return replace(str);\n }\n // TODO consider creating a merged map\n return function (str) { return String(str).replace(re, replacer); };\n})();\nfunction getReplacer(map) {\n return function replace(str) {\n if (str.charAt(1) === \"#\") {\n var secondChar = str.charAt(2);\n if (secondChar === \"X\" || secondChar === \"x\") {\n return decode_codepoint_1.default(parseInt(str.substr(3), 16));\n }\n return decode_codepoint_1.default(parseInt(str.substr(2), 10));\n }\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return map[str.slice(1, -1)] || str;\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar decode_json_1 = __importDefault(require(\"./maps/decode.json\"));\n// Adapted from https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nvar fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.fromCodePoint ||\n function (codePoint) {\n var output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n };\nfunction decodeCodePoint(codePoint) {\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return \"\\uFFFD\";\n }\n if (codePoint in decode_json_1.default) {\n codePoint = decode_json_1.default[codePoint];\n }\n return fromCodePoint(codePoint);\n}\nexports.default = decodeCodePoint;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = void 0;\nvar xml_json_1 = __importDefault(require(\"./maps/xml.json\"));\nvar inverseXML = getInverseObj(xml_json_1.default);\nvar xmlReplacer = getInverseReplacer(inverseXML);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeXML = getASCIIEncoder(inverseXML);\nvar entities_json_1 = __importDefault(require(\"./maps/entities.json\"));\nvar inverseHTML = getInverseObj(entities_json_1.default);\nvar htmlReplacer = getInverseReplacer(inverseHTML);\n/**\n * Encodes all entities and non-ASCII characters in the input.\n *\n * This includes characters that are valid ASCII characters in HTML documents.\n * For example `#` will be encoded as `#`. To get a more compact output,\n * consider using the `encodeNonAsciiHTML` function.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeHTML = getInverse(inverseHTML, htmlReplacer);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in HTML\n * documents using HTML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexports.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML);\nfunction getInverseObj(obj) {\n return Object.keys(obj)\n .sort()\n .reduce(function (inverse, name) {\n inverse[obj[name]] = \"&\" + name + \";\";\n return inverse;\n }, {});\n}\nfunction getInverseReplacer(inverse) {\n var single = [];\n var multiple = [];\n for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) {\n var k = _a[_i];\n if (k.length === 1) {\n // Add value to single array\n single.push(\"\\\\\" + k);\n }\n else {\n // Add value to multiple array\n multiple.push(k);\n }\n }\n // Add ranges to single characters.\n single.sort();\n for (var start = 0; start < single.length - 1; start++) {\n // Find the end of a run of characters\n var end = start;\n while (end < single.length - 1 &&\n single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) {\n end += 1;\n }\n var count = 1 + end - start;\n // We want to replace at least three characters\n if (count < 3)\n continue;\n single.splice(start, count, single[start] + \"-\" + single[end]);\n }\n multiple.unshift(\"[\" + single.join(\"\") + \"]\");\n return new RegExp(multiple.join(\"|\"), \"g\");\n}\n// /[^\\0-\\x7F]/gu\nvar reNonASCII = /(?:[\\x80-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g;\nvar getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt != null\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n function (str) { return str.codePointAt(0); }\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n function (c) {\n return (c.charCodeAt(0) - 0xd800) * 0x400 +\n c.charCodeAt(1) -\n 0xdc00 +\n 0x10000;\n };\nfunction singleCharReplacer(c) {\n return \"\" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0))\n .toString(16)\n .toUpperCase() + \";\";\n}\nfunction getInverse(inverse, re) {\n return function (data) {\n return data\n .replace(re, function (name) { return inverse[name]; })\n .replace(reNonASCII, singleCharReplacer);\n };\n}\nvar reEscapeChars = new RegExp(xmlReplacer.source + \"|\" + reNonASCII.source, \"g\");\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nfunction escape(data) {\n return data.replace(reEscapeChars, singleCharReplacer);\n}\nexports.escape = escape;\n/**\n * Encodes all characters not valid in XML documents using numeric hexadecimal\n * reference (eg. `ü`).\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nfunction escapeUTF8(data) {\n return data.replace(xmlReplacer, singleCharReplacer);\n}\nexports.escapeUTF8 = escapeUTF8;\nfunction getASCIIEncoder(obj) {\n return function (data) {\n return data.replace(reEscapeChars, function (c) { return obj[c] || singleCharReplacer(c); });\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.encodeHTML5 = exports.encodeHTML4 = exports.escapeUTF8 = exports.escape = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = void 0;\nvar decode_1 = require(\"./decode\");\nvar encode_1 = require(\"./encode\");\n/**\n * Decodes a string with entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeXML` or `decodeHTML` directly.\n */\nfunction decode(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data);\n}\nexports.decode = decode;\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param data String to decode.\n * @param level Optional level to decode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `decodeHTMLStrict` or `decodeXML` directly.\n */\nfunction decodeStrict(data, level) {\n return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data);\n}\nexports.decodeStrict = decodeStrict;\n/**\n * Encodes a string with entities.\n *\n * @param data String to encode.\n * @param level Optional level to encode at. 0 = XML, 1 = HTML. Default is 0.\n * @deprecated Use `encodeHTML`, `encodeXML` or `encodeNonAsciiHTML` directly.\n */\nfunction encode(data, level) {\n return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data);\n}\nexports.encode = encode;\nvar encode_2 = require(\"./encode\");\nObject.defineProperty(exports, \"encodeXML\", { enumerable: true, get: function () { return encode_2.encodeXML; } });\nObject.defineProperty(exports, \"encodeHTML\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeNonAsciiHTML\", { enumerable: true, get: function () { return encode_2.encodeNonAsciiHTML; } });\nObject.defineProperty(exports, \"escape\", { enumerable: true, get: function () { return encode_2.escape; } });\nObject.defineProperty(exports, \"escapeUTF8\", { enumerable: true, get: function () { return encode_2.escapeUTF8; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"encodeHTML4\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nObject.defineProperty(exports, \"encodeHTML5\", { enumerable: true, get: function () { return encode_2.encodeHTML; } });\nvar decode_2 = require(\"./decode\");\nObject.defineProperty(exports, \"decodeXML\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\nObject.defineProperty(exports, \"decodeHTML\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTMLStrict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\n// Legacy aliases (deprecated)\nObject.defineProperty(exports, \"decodeHTML4\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML5\", { enumerable: true, get: function () { return decode_2.decodeHTML; } });\nObject.defineProperty(exports, \"decodeHTML4Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeHTML5Strict\", { enumerable: true, get: function () { return decode_2.decodeHTMLStrict; } });\nObject.defineProperty(exports, \"decodeXMLStrict\", { enumerable: true, get: function () { return decode_2.decodeXML; } });\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\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 af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\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 pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday 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 arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\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 arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\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 symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\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 arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\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 arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\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 symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\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\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\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 arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\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 arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\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 symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\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 suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\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 function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\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 bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\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 bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\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 bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\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 symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\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\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\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 symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\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\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\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 symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\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\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\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 function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\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 meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\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 function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\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: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\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 ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\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 ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\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 months = {\n format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\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 cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\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 cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\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 cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\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 cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\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 da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\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 da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\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 deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\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 deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\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 de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\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 months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\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 function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\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 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\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 enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 0, // Sunday 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 enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\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 enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\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 enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 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 enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\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 enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 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 enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\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 enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\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 enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\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 enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 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 enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\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 enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 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 enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\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 eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\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 monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\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 esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\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 monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday 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 invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\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 monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\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\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\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 monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\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 invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\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 et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\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 eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\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 symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! 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 locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\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 fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\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 fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\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 fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\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 fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\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 frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\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 frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\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 frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\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 monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\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 fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\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 monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\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 fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\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 months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\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 ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\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 months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\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 gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\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 gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\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 gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\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 symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\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\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\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 he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\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 symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\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\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\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 function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\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: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\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 weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\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 hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\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 hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\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 id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\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\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\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 function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\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 is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\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 itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\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 itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\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 it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\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 it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\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 ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\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 jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\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 ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\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 suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\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 symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\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 km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\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 symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\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\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \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 ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\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 symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split(\n '_'\n ),\n weekdaysShort:\n 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره|بهیانی/,\n isPM: function (input) {\n return /ئێواره/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'بهیانی';\n } else {\n return 'ئێواره';\n }\n },\n calendar: {\n sameDay: '[ئهمرۆ كاتژمێر] LT',\n nextDay: '[بهیانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له %s',\n past: '%s',\n s: 'چهند چركهیهك',\n ss: 'چركه %d',\n m: 'یهك خولهك',\n mm: '%d خولهك',\n h: 'یهك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یهك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یهك مانگ',\n MM: '%d مانگ',\n y: 'یهك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\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 suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\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 lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\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 lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\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 units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\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 lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\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 units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\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 lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\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 translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.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: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\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 mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\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 mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\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 mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\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 ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\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 function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\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: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\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 symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\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\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\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 msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\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 ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\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 mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\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 mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\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 symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\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 my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\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 nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\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 nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\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 symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\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\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\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 monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\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 nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\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 monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\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 nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\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 nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\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 nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\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 ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\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 symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\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\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\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 monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\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 pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\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 ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\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 pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\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 pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\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 function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\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 function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\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 ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\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 months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\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 sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\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 se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\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 se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\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 /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\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 months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\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 sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\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 sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\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 sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\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 translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.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: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\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 translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.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: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\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 ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\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 ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\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 sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\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 sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\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 sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\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 symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\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\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\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 te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\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\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\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 tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 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 tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\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 suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\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 th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\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 suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\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 tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\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 tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\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 numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\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 tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\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 suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\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 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\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 function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\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 tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\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 tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\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 ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\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 function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\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 months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\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 ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\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 uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\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 uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\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 vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\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 vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\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 xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((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 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 xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\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 yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %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 yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\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 zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\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 zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\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 zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\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 zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\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 zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.3\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 if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\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\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 }\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\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\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\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\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 function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 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 return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\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 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 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 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 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 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 // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\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 var dayOfMonth;\n\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 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\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 for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\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 // 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 // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\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 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 // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\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 // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\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 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\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 // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\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);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\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 return name.match('^[^/\\\\\\\\]*$') != null;\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 eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\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 addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\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(),\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 // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\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 // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\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 // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\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 // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\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 // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\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 // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\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 // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\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\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.29.3';\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","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String,\n },\n})\n","// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","// Components\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn/VBtn'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-app-bar-nav-icon',\n\n functional: true,\n\n render (h, { slots, listeners, props, data }) {\n const d = Object.assign(data, {\n staticClass: (`v-app-bar__nav-icon ${data.staticClass || ''}`).trim(),\n props: {\n ...props,\n icon: true,\n },\n on: listeners,\n })\n\n const defaultSlot = slots().default\n\n return h(VBtn, d, defaultSlot || [h(VIcon, '$menu')])\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import './VBottomSheet.sass'\n\n// Extensions\nimport VDialog from '../VDialog/VDialog'\n\n/* @vue/component */\nexport default VDialog.extend({\n name: 'v-bottom-sheet',\n\n props: {\n inset: Boolean,\n maxWidth: [String, Number],\n transition: {\n type: String,\n default: 'bottom-sheet-transition',\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VDialog.options.computed.classes.call(this),\n 'v-bottom-sheet': true,\n 'v-bottom-sheet--inset': this.inset,\n }\n },\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport './VChipGroup.sass'\n\n// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n BaseSlideGroup,\n Colorable\n).extend({\n name: 'v-chip-group',\n\n provide () {\n return {\n chipGroup: this,\n }\n },\n\n props: {\n column: Boolean,\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-chip-group': true,\n 'v-chip-group--column': this.column,\n }\n },\n },\n\n watch: {\n column (val) {\n if (val) this.scrollOffset = 0\n\n this.$nextTick(this.onResize)\n },\n },\n\n methods: {\n genData () {\n return this.setTextColor(this.color, {\n ...BaseSlideGroup.options.methods.genData.call(this),\n })\n },\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${props.options.groupBy[0]}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => val === value)\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = value === this.internalValue\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType\n\ninterface options extends ExtractVue {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: [String, RegExp],\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\n },\n})\n","// Styles\nimport './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img(props)\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, this.$slots.default)\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), children)\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) || '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) || '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { deprecate, removed } from '../../util/console'\n\n// Types\nimport { PropType, VNode } from 'vue'\n\nexport default mixins(\n VSheet,\n Colorable,\n Toggleable,\n PositionableFactory([\n 'absolute',\n 'bottom',\n 'left',\n 'right',\n 'top',\n ])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n\n props: {\n app: Boolean,\n centered: Boolean,\n contentClass: {\n type: String,\n default: '',\n },\n multiLine: Boolean,\n text: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n transition: {\n type: [Boolean, String] as PropType,\n default: 'v-snack-transition',\n validator: v => typeof v === 'string' || v === false,\n },\n vertical: Boolean,\n },\n\n data: () => ({\n activeTimeout: -1,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-snack--absolute': this.absolute,\n 'v-snack--active': this.isActive,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--centered': this.centered,\n 'v-snack--has-background': this.hasBackground,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--text': this.text,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical,\n }\n },\n // Text and outlined styles both\n // use transparent backgrounds\n hasBackground (): boolean {\n return (\n !this.text &&\n !this.outlined\n )\n },\n // Snackbar is dark by default\n // override themeable logic.\n isDark (): boolean {\n return this.hasBackground\n ? !this.light\n : Themeable.options.computed.isDark.call(this)\n },\n styles (): object {\n if (this.absolute || !this.app) return {}\n\n const {\n bar,\n bottom,\n footer,\n insetFooter,\n left,\n right,\n top,\n } = this.$vuetify.application\n\n return {\n paddingBottom: convertToUnit(bottom + footer + insetFooter),\n paddingLeft: convertToUnit(left),\n paddingRight: convertToUnit(right),\n paddingTop: convertToUnit(bar + top),\n }\n },\n },\n\n watch: {\n isActive: 'setTimeout',\n timeout: 'setTimeout',\n },\n\n mounted () {\n if (this.isActive) this.setTimeout()\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('auto-height')) {\n removed('auto-height', this)\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line eqeqeq\n if (this.timeout == 0) {\n deprecate('timeout=\"0\"', '-1', this)\n }\n },\n\n methods: {\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-snack__action ',\n }, [\n getSlot(this, 'action', {\n attrs: { class: 'v-snack__btn' },\n }),\n ])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-snack__content',\n class: {\n [this.contentClass]: true,\n },\n attrs: {\n role: 'status',\n 'aria-live': 'polite',\n },\n }, [getSlot(this)])\n },\n genWrapper () {\n const setColor = this.hasBackground\n ? this.setBackgroundColor\n : this.setTextColor\n\n const data = setColor(this.color, {\n staticClass: 'v-snack__wrapper',\n class: VSheet.options.computed.classes.call(this),\n style: VSheet.options.computed.styles.call(this),\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: {\n pointerenter: () => window.clearTimeout(this.activeTimeout),\n pointerleave: this.setTimeout,\n },\n })\n\n return this.$createElement('div', data, [\n this.genContent(),\n this.genActions(),\n ])\n },\n genTransition () {\n return this.$createElement('transition', {\n props: { name: this.transition },\n }, [this.genWrapper()])\n },\n setTimeout () {\n window.clearTimeout(this.activeTimeout)\n\n const timeout = Number(this.timeout)\n\n if (\n !this.isActive ||\n // TODO: remove 0 in v3\n [0, -1].includes(timeout)\n ) {\n return\n }\n\n this.activeTimeout = window.setTimeout(() => {\n this.isActive = false\n }, timeout)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n style: this.styles,\n }, [\n this.transition !== false\n ? this.genTransition()\n : this.genWrapper(),\n ])\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","// Styles\nimport '../../styles/components/_selection-controls.sass'\nimport './VSwitch.sass'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\nimport VInput from '../VInput'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport { VFabTransition } from '../transitions'\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'\n\n// Helpers\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-switch',\n\n directives: { Touch },\n\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset,\n }\n },\n attrs (): object {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch',\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n switchData (): VNodeData {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses,\n })\n },\n },\n\n methods: {\n genDefaultSlot (): (VNode | null)[] {\n return [\n this.genSwitch(),\n this.genLabel(),\n ]\n },\n genSwitch (): VNode {\n const { title, ...switchAttrs } = this.attrs$\n\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.genInput('checkbox', {\n ...this.attrs,\n ...switchAttrs,\n }),\n this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight,\n },\n }],\n })),\n this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData,\n }),\n this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData,\n }, [this.genProgress()]),\n ])\n },\n genProgress (): VNode {\n return this.$createElement(VFabTransition, {}, [\n this.loading === false\n ? null\n : this.$slots.progress || this.$createElement(VProgressCircular, {\n props: {\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n size: 16,\n width: 2,\n indeterminate: true,\n },\n }),\n ])\n },\n onSwipeLeft () {\n if (this.isActive) this.onChange()\n },\n onSwipeRight () {\n if (!this.isActive) this.onChange()\n },\n onKeydown (e: KeyboardEvent) {\n if (\n (e.keyCode === keyCodes.left && this.isActive) ||\n (e.keyCode === keyCodes.right && !this.isActive)\n ) this.onChange()\n },\n },\n})\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: this.disabled ? -1 : 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try ''`, this)\n }\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(this.startTransition)\n },\n deactivate () {\n this.runDelay('close')\n },\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n if (this.openOnFocus) {\n listeners.focus = (e: Event) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.blur = (e: Event) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n }\n\n listeners.keydown = (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.esc) {\n this.getActivator(e)\n this.runDelay('close')\n }\n }\n\n return listeners\n },\n genActivatorAttributes () {\n return {\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genTransition () {\n const content = this.genContent()\n\n if (!this.computedTransition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [content])\n },\n genContent () {\n return this.$createElement(\n 'div',\n this.setBackgroundColor(this.color, {\n staticClass: 'v-tooltip__content',\n class: {\n [this.contentClass]: true,\n menuable__content__active: this.isActive,\n 'v-tooltip__content--fixed': this.activatorFixed,\n },\n style: this.styles,\n attrs: this.getScopeIdAttrs(),\n directives: [{\n name: 'show',\n value: this.isContentActive,\n }],\n ref: 'content',\n }),\n this.getContentSlot()\n )\n },\n },\n\n render (h): VNode {\n return h(this.tag, {\n staticClass: 'v-tooltip',\n class: this.classes,\n }, [\n this.showLazyContent(() => [this.genTransition()]),\n this.genActivator(),\n ])\n },\n})\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: Event) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirective extends VNodeDirective {\n value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n inserted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding, vnode)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[vnode.context!._uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[vnode.context!._uid]\n },\n}\n\nexport default ClickOutside\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n // Don't allow the event to trigger ripples on any other elements\n e.rippleStop = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n","import OurVue, { VueConstructor } from 'vue'\nimport { VuetifyUseOptions } from 'vuetify/types'\nimport { consoleError } from './util/console'\n\nexport function install (Vue: VueConstructor, args: VuetifyUseOptions = {}) {\n if ((install as any).installed) return\n (install as any).installed = true\n\n if (OurVue !== Vue) {\n consoleError(`Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you're seeing \"$attrs is readonly\", it's caused by this`)\n }\n\n const components = args.components || {}\n const directives = args.directives || {}\n\n for (const name in directives) {\n const directive = directives[name]\n\n Vue.directive(name, directive)\n }\n\n (function registerComponents (components: any) {\n if (components) {\n for (const key in components) {\n const component = components[key]\n if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n Vue.component(key, component as typeof Vue)\n }\n }\n return true\n }\n return false\n })(components)\n\n // Used to avoid multiple mixins being setup\n // when in dev mode and hot module reload\n // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n if (Vue.$_vuetify_installed) return\n Vue.$_vuetify_installed = true\n\n Vue.mixin({\n beforeCreate () {\n const options = this.$options as any\n\n if (options.vuetify) {\n options.vuetify.init(this, this.$ssrContext)\n this.$vuetify = Vue.observable(options.vuetify.framework)\n } else {\n this.$vuetify = (options.parent && options.parent.$vuetify) || this\n }\n },\n beforeMount () {\n // @ts-ignore\n if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n // @ts-ignore\n this.$vuetify.isHydrating = true\n // @ts-ignore\n this.$vuetify.breakpoint.update(true)\n }\n },\n mounted () {\n // @ts-ignore\n if (this.$options.vuetify && this.$vuetify.isHydrating) {\n // @ts-ignore\n this.$vuetify.isHydrating = false\n // @ts-ignore\n this.$vuetify.breakpoint.update()\n }\n },\n })\n}\n","export default {\n badge: 'Badge',\n close: 'Close',\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...',\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.',\n },\n sortBy: 'Sort by',\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}',\n },\n datePicker: {\n itemsSelected: '{0} selected',\n nextMonthAriaLabel: 'Next month',\n nextYearAriaLabel: 'Next year',\n prevMonthAriaLabel: 'Previous month',\n prevYearAriaLabel: 'Previous year',\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}',\n },\n },\n calendar: {\n moreEvents: '{0} more',\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n wrapper: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Goto Page {0}',\n currentPage: 'Current Page, Page {0}',\n },\n },\n rating: {\n ariaLabel: {\n icon: 'Rating {0} of {1}',\n },\n },\n}\n","// Styles\nimport '../../styles/main.sass'\n\n// Locale\nimport { en } from '../../locale'\n\n// Icons\n// TODO: Enable for v3\n// import mdi from '../../services/icons/presets/mdi'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\n\nexport const preset: VuetifyPreset = {\n breakpoint: {\n // TODO: update to MD2 spec in v3 - 1280\n mobileBreakpoint: 1264,\n scrollBarWidth: 16,\n thresholds: {\n xs: 600,\n sm: 960,\n md: 1280,\n lg: 1920,\n },\n },\n icons: {\n // TODO: remove v3\n iconfont: 'mdi',\n values: {},\n },\n lang: {\n current: 'en',\n locales: { en },\n // Default translator exists in lang service\n t: undefined as any,\n },\n rtl: false,\n theme: {\n dark: false,\n default: 'light',\n disable: false,\n options: {\n cspNonce: undefined,\n customProperties: undefined,\n minifyTheme: undefined,\n themeCache: undefined,\n variations: true,\n },\n themes: {\n light: {\n primary: '#1976D2',\n secondary: '#424242',\n accent: '#82B1FF',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n dark: {\n primary: '#2196F3',\n secondary: '#424242',\n accent: '#FF4081',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n },\n },\n}\n","// Preset\nimport { preset as Preset } from '../../presets/default'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport Vuetify from 'vuetify/types'\nimport { Service } from '../service'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\n\nexport class Presets extends Service {\n static property: 'presets' = 'presets'\n\n constructor (\n parentPreset: Partial,\n parent: Vuetify,\n ) {\n super()\n\n // The default preset\n const defaultPreset = mergeDeep({}, Preset)\n // The user provided preset\n const { userPreset } = parent\n // The user provided global preset\n const {\n preset: globalPreset = {},\n ...preset\n } = userPreset\n\n if (globalPreset.preset != null) {\n consoleWarn('Global presets do not support the **preset** option, it can be safely omitted')\n }\n\n parent.preset = mergeDeep(\n mergeDeep(defaultPreset, globalPreset),\n preset\n ) as VuetifyPreset\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { TargetPropValues, TargetProp, Application as IApplication } from 'vuetify/types/services/application'\n\nexport class Application extends Service implements IApplication {\n static property: 'application' = 'application'\n\n bar = 0\n\n top = 0\n\n left = 0\n\n insetFooter = 0\n\n right = 0\n\n bottom = 0\n\n footer = 0\n\n application: Dictionary = {\n bar: {},\n top: {},\n left: {},\n insetFooter: {},\n right: {},\n bottom: {},\n footer: {},\n }\n\n register (\n uid: number,\n location: TargetProp,\n size: number\n ) {\n this.application[location][uid] = size\n\n this.update(location)\n }\n\n unregister (uid: number, location: TargetProp) {\n if (this.application[location][uid] == null) return\n\n delete this.application[location][uid]\n this.update(location)\n }\n\n update (location: TargetProp) {\n this[location] = Object.values(this.application[location])\n .reduce((acc: number, cur: number): number => (acc + cur), 0)\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Breakpoint as IBreakpoint } from 'vuetify/types/services/breakpoint'\n\nexport class Breakpoint extends Service implements IBreakpoint {\n public static property: 'breakpoint' = 'breakpoint'\n\n // Public\n public xs = false\n\n public sm = false\n\n public md = false\n\n public lg = false\n\n public xl = false\n\n public xsOnly = false\n\n public smOnly = false\n\n public smAndDown = false\n\n public smAndUp = false\n\n public mdOnly = false\n\n public mdAndDown = false\n\n public mdAndUp = false\n\n public lgOnly = false\n\n public lgAndDown = false\n\n public lgAndUp = false\n\n public xlOnly = false\n\n // Value is xs to match v2.x functionality\n public name: IBreakpoint['name'] = 'xs'\n\n public height = 0\n\n public width = 0\n\n // TODO: Add functionality to detect this dynamically in v3\n // Value is true to match v2.x functionality\n public mobile = true\n\n public mobileBreakpoint: IBreakpoint['mobileBreakpoint']\n\n public thresholds: IBreakpoint['thresholds']\n\n public scrollBarWidth: IBreakpoint['scrollBarWidth']\n\n private resizeTimeout = 0\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n mobileBreakpoint,\n scrollBarWidth,\n thresholds,\n } = preset[Breakpoint.property]\n\n this.mobileBreakpoint = mobileBreakpoint\n this.scrollBarWidth = scrollBarWidth\n this.thresholds = thresholds\n }\n\n public init () {\n this.update()\n\n /* istanbul ignore if */\n if (typeof window === 'undefined') return\n\n window.addEventListener(\n 'resize',\n this.onResize.bind(this),\n { passive: true }\n )\n }\n\n /* eslint-disable-next-line max-statements */\n public update (ssr = false) {\n const height = ssr ? 0 : this.getClientHeight()\n const width = ssr ? 0 : this.getClientWidth()\n\n const xs = width < this.thresholds.xs\n const sm = width < this.thresholds.sm && !xs\n const md = width < (this.thresholds.md - this.scrollBarWidth) && !(sm || xs)\n const lg = width < (this.thresholds.lg - this.scrollBarWidth) && !(md || sm || xs)\n const xl = width >= (this.thresholds.lg - this.scrollBarWidth)\n\n this.height = height\n this.width = width\n\n this.xs = xs\n this.sm = sm\n this.md = md\n this.lg = lg\n this.xl = xl\n\n this.xsOnly = xs\n this.smOnly = sm\n this.smAndDown = (xs || sm) && !(md || lg || xl)\n this.smAndUp = !xs && (sm || md || lg || xl)\n this.mdOnly = md\n this.mdAndDown = (xs || sm || md) && !(lg || xl)\n this.mdAndUp = !(xs || sm) && (md || lg || xl)\n this.lgOnly = lg\n this.lgAndDown = (xs || sm || md || lg) && !xl\n this.lgAndUp = !(xs || sm || md) && (lg || xl)\n this.xlOnly = xl\n\n switch (true) {\n case (xs):\n this.name = 'xs'\n break\n case (sm):\n this.name = 'sm'\n break\n case (md):\n this.name = 'md'\n break\n case (lg):\n this.name = 'lg'\n break\n default:\n this.name = 'xl'\n break\n }\n\n if (typeof this.mobileBreakpoint === 'number') {\n this.mobile = width < parseInt(this.mobileBreakpoint, 10)\n\n return\n }\n\n const breakpoints = {\n xs: 0,\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n } as const\n\n const current = breakpoints[this.name]\n const max = breakpoints[this.mobileBreakpoint]\n\n this.mobile = current <= max\n }\n\n private onResize () {\n clearTimeout(this.resizeTimeout)\n\n // Added debounce to match what\n // v-resize used to do but was\n // removed due to a memory leak\n // https://github.com/vuetifyjs/vuetify/pull/2997\n this.resizeTimeout = window.setTimeout(this.update.bind(this), 200)\n }\n\n // Cross-browser support as described in:\n // https://stackoverflow.com/questions/1248081\n private getClientWidth () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientWidth,\n window.innerWidth || 0\n )\n }\n\n private getClientHeight () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientHeight,\n window.innerHeight || 0\n )\n }\n}\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z',\n cancel: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n close: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n delete: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z', // delete (e.g. v-chip close)\n clear: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n success: 'M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z',\n info: 'M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2ZM13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n warning: 'M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n error: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n prev: 'M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z',\n next: 'M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z',\n checkboxOn: 'M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n checkboxOff: 'M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z',\n checkboxIndeterminate: 'M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n delimiter: 'M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z', // for carousel\n sort: 'M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z',\n expand: 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z',\n menu: 'M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z',\n subgroup: 'M7,10L12,15L17,10H7Z',\n dropdown: 'M7,10L12,15L17,10H7Z',\n radioOn: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z',\n radioOff: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n edit: 'M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z',\n ratingEmpty: 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n ratingFull: 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z',\n ratingHalf: 'M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n loading: 'M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12',\n first: 'M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z',\n last: 'M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z',\n unfold: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z',\n file: 'M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z',\n plus: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z',\n minus: 'M19,13H5V11H19V13Z',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'check',\n cancel: 'cancel',\n close: 'close',\n delete: 'cancel', // delete (e.g. v-chip close)\n clear: 'clear',\n success: 'check_circle',\n info: 'info',\n warning: 'priority_high',\n error: 'warning',\n prev: 'chevron_left',\n next: 'chevron_right',\n checkboxOn: 'check_box',\n checkboxOff: 'check_box_outline_blank',\n checkboxIndeterminate: 'indeterminate_check_box',\n delimiter: 'fiber_manual_record', // for carousel\n sort: 'arrow_upward',\n expand: 'keyboard_arrow_down',\n menu: 'menu',\n subgroup: 'arrow_drop_down',\n dropdown: 'arrow_drop_down',\n radioOn: 'radio_button_checked',\n radioOff: 'radio_button_unchecked',\n edit: 'edit',\n ratingEmpty: 'star_border',\n ratingFull: 'star',\n ratingHalf: 'star_half',\n loading: 'cached',\n first: 'first_page',\n last: 'last_page',\n unfold: 'unfold_more',\n file: 'attach_file',\n plus: 'add',\n minus: 'remove',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-exclamation',\n error: 'mdi-alert',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sort: 'mdi-arrow-up',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fas fa-check',\n cancel: 'fas fa-times-circle',\n close: 'fas fa-times',\n delete: 'fas fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fas fa-times-circle', // delete (e.g. v-chip close)\n success: 'fas fa-check-circle',\n info: 'fas fa-info-circle',\n warning: 'fas fa-exclamation',\n error: 'fas fa-exclamation-triangle',\n prev: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n checkboxOn: 'fas fa-check-square',\n checkboxOff: 'far fa-square', // note 'far'\n checkboxIndeterminate: 'fas fa-minus-square',\n delimiter: 'fas fa-circle', // for carousel\n sort: 'fas fa-sort-up',\n expand: 'fas fa-chevron-down',\n menu: 'fas fa-bars',\n subgroup: 'fas fa-caret-down',\n dropdown: 'fas fa-caret-down',\n radioOn: 'far fa-dot-circle',\n radioOff: 'far fa-circle',\n edit: 'fas fa-edit',\n ratingEmpty: 'far fa-star',\n ratingFull: 'fas fa-star',\n ratingHalf: 'fas fa-star-half',\n loading: 'fas fa-sync',\n first: 'fas fa-step-backward',\n last: 'fas fa-step-forward',\n unfold: 'fas fa-arrows-alt-v',\n file: 'fas fa-paperclip',\n plus: 'fas fa-plus',\n minus: 'fas fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fa fa-check',\n cancel: 'fa fa-times-circle',\n close: 'fa fa-times',\n delete: 'fa fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fa fa-times-circle', // delete (e.g. v-chip close)\n success: 'fa fa-check-circle',\n info: 'fa fa-info-circle',\n warning: 'fa fa-exclamation',\n error: 'fa fa-exclamation-triangle',\n prev: 'fa fa-chevron-left',\n next: 'fa fa-chevron-right',\n checkboxOn: 'fa fa-check-square',\n checkboxOff: 'fa fa-square-o',\n checkboxIndeterminate: 'fa fa-minus-square',\n delimiter: 'fa fa-circle', // for carousel\n sort: 'fa fa-sort-up',\n expand: 'fa fa-chevron-down',\n menu: 'fa fa-bars',\n subgroup: 'fa fa-caret-down',\n dropdown: 'fa fa-caret-down',\n radioOn: 'fa fa-dot-circle-o',\n radioOff: 'fa fa-circle-o',\n edit: 'fa fa-pencil',\n ratingEmpty: 'fa fa-star-o',\n ratingFull: 'fa fa-star',\n ratingHalf: 'fa fa-star-half-o',\n loading: 'fa fa-refresh',\n first: 'fa fa-step-backward',\n last: 'fa fa-step-forward',\n unfold: 'fa fa-angle-double-down',\n file: 'fa fa-paperclip',\n plus: 'fa fa-plus',\n minus: 'fa fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\nimport { Component } from 'vue'\nimport icons from './fa'\n\nexport function convertToComponentDeclarations (\n component: Component | string,\n iconSet: VuetifyIcons,\n) {\n const result: Partial = {}\n\n for (const key in iconSet) {\n result[key] = {\n component,\n props: {\n icon: (iconSet[key] as string).split(' fa-'),\n },\n }\n }\n\n return result as VuetifyIcons\n}\n\nexport default convertToComponentDeclarations('font-awesome-icon', icons)\n","import mdiSvg from './mdi-svg'\nimport md from './md'\nimport mdi from './mdi'\nimport fa from './fa'\nimport fa4 from './fa4'\nimport faSvg from './fa-svg'\n\nexport default Object.freeze({\n mdiSvg,\n md,\n mdi,\n fa,\n fa4,\n faSvg,\n})\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Icons as IIcons } from 'vuetify/types/services/icons'\n\n// Presets\nimport presets from './presets'\n\nexport class Icons extends Service implements IIcons {\n static property: 'icons' = 'icons'\n\n public iconfont: IIcons['iconfont']\n\n public values: IIcons['values']\n\n public component: IIcons['component']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n iconfont,\n values,\n component,\n } = preset[Icons.property]\n\n this.component = component\n this.iconfont = iconfont\n this.values = mergeDeep(\n presets[iconfont],\n values\n ) as IIcons['values']\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { consoleError, consoleWarn } from '../../util/console'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyLocale,\n Lang as ILang,\n} from 'vuetify/types/services/lang'\n\nconst LANG_PREFIX = '$vuetify.'\nconst fallback = Symbol('Lang fallback')\n\nfunction getTranslation (\n locale: VuetifyLocale,\n key: string,\n usingDefault = false,\n defaultLocale: VuetifyLocale\n): string {\n const shortKey = key.replace(LANG_PREFIX, '')\n let translation = getObjectValueByPath(locale, shortKey, fallback) as string | typeof fallback\n\n if (translation === fallback) {\n if (usingDefault) {\n consoleError(`Translation key \"${shortKey}\" not found in fallback`)\n translation = key\n } else {\n consoleWarn(`Translation key \"${shortKey}\" not found, falling back to default`)\n translation = getTranslation(defaultLocale, key, true, defaultLocale)\n }\n }\n\n return translation\n}\n\nexport class Lang extends Service implements ILang {\n static property: 'lang' = 'lang'\n\n public current: ILang['current']\n\n public defaultLocale = 'en'\n\n public locales: ILang['locales']\n\n private translator: ILang['t']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n current,\n locales,\n t,\n } = preset[Lang.property]\n\n this.current = current\n this.locales = locales\n this.translator = t || this.defaultTranslator\n }\n\n public currentLocale (key: string) {\n const translation = this.locales[this.current]\n const defaultLocale = this.locales[this.defaultLocale]\n\n return getTranslation(translation, key, false, defaultLocale)\n }\n\n public t (key: string, ...params: any[]) {\n if (!key.startsWith(LANG_PREFIX)) return this.replace(key, params)\n\n return this.translator(key, ...params)\n }\n\n private defaultTranslator (key: string, ...params: any[]) {\n return this.replace(this.currentLocale(key), params)\n }\n\n private replace (str: string, params: any[]) {\n return str.replace(/\\{(\\d+)\\}/g, (match: string, index: string) => {\n /* istanbul ignore next */\n return String(params[+index])\n })\n }\n}\n","import { ColorInt, XYZ } from '../colorUtils'\nimport { clamp } from '../../util/helpers'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): ColorInt {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n // Rescale back to [0, 255]\n return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0)\n}\n\nexport function toXYZ (rgb: ColorInt): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n const r = transform((rgb >> 16 & 0xff) / 255)\n const g = transform((rgb >> 8 & 0xff) / 255)\n const b = transform((rgb >> 0 & 0xff) / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","import { XYZ, LAB } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","import { keys } from '../../util/helpers'\nimport { colorToInt, intToHex, colorToHex, ColorInt } from '../../util/colorUtils'\nimport * as sRGB from '../../util/color/transformSRGB'\nimport * as LAB from '../../util/color/transformCIELAB'\nimport {\n VuetifyParsedTheme,\n VuetifyThemeItem,\n} from 'vuetify/types/services/theme'\n\nexport function parse (\n theme: Record,\n isItem = false,\n variations = true,\n): VuetifyParsedTheme {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n const parsedTheme: any = {}\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n if (value == null) continue\n\n if (!variations) {\n parsedTheme[name] = { base: intToHex(colorToInt(value)) }\n } else if (isItem) {\n /* istanbul ignore else */\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = colorToHex(value)\n }\n } else if (typeof value === 'object') {\n parsedTheme[name] = parse(value, true, variations)\n } else {\n parsedTheme[name] = genVariations(name, colorToInt(value))\n }\n }\n\n if (!isItem) {\n parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base\n }\n\n return parsedTheme\n}\n\n/**\n * Generate the CSS for a base color (.primary)\n */\nconst genBaseColor = (name: string, value: string): string => {\n return `\n.v-application .${name} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nconst genVariantColor = (name: string, variant: string, value: string): string => {\n const [type, n] = variant.split(/(\\d)/, 2)\n return `\n.v-application .${name}.${type}-${n} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\nconst genColorVariableName = (name: string, variant = 'base'): string => `--v-${name}-${variant}`\n\nconst genColorVariable = (name: string, variant = 'base'): string => `var(${genColorVariableName(name, variant)})`\n\nexport function genStyles (theme: VuetifyParsedTheme, cssVar = false): string {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n\n if (!colors.length) return ''\n\n let variablesCss = ''\n let css = ''\n\n const aColor = cssVar ? genColorVariable('anchor') : anchor\n css += `.v-application a { color: ${aColor}; }`\n cssVar && (variablesCss += ` ${genColorVariableName('anchor')}: ${anchor};\\n`)\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base)\n cssVar && (variablesCss += ` ${genColorVariableName(name)}: ${value.base};\\n`)\n\n const variants = keys(value)\n for (let i = 0; i < variants.length; ++i) {\n const variant = variants[i]\n const variantValue = value[variant]\n if (variant === 'base') continue\n\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue)\n cssVar && (variablesCss += ` ${genColorVariableName(name, variant)}: ${variantValue};\\n`)\n }\n }\n\n if (cssVar) {\n variablesCss = `:root {\\n${variablesCss}}\\n\\n`\n }\n\n return variablesCss + css\n}\n\nexport function genVariations (name: string, value: ColorInt): Record {\n const values: Record = {\n base: intToHex(value),\n }\n\n for (let i = 5; i > 0; --i) {\n values[`lighten${i}`] = intToHex(lighten(value, i))\n }\n\n for (let i = 1; i <= 4; ++i) {\n values[`darken${i}`] = intToHex(darken(value, i))\n }\n\n return values\n}\n\nexport function lighten (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n\nexport function darken (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n","/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: Vue, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += ``\n }\n\n private initTheme (root: Vue) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n root.$once('hook:created', () => {\n const obs = Vue.observable({ themes: this.themes })\n this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n })\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n","import { install } from './install'\n\n// Types\nimport Vue from 'vue'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\nimport {\n VuetifyService,\n VuetifyServiceContract,\n} from 'vuetify/types/services'\n\n// Services\nimport * as services from './services'\n\nexport default class Vuetify {\n static install = install\n\n static installed = false\n\n static version = __VUETIFY_VERSION__\n\n static config = {\n silent: false,\n }\n\n public framework: Dictionary = {\n isHydrating: false,\n } as any\n\n public installed: string[] = []\n\n public preset = {} as VuetifyPreset\n\n public userPreset: UserVuetifyPreset = {}\n\n constructor (userPreset: UserVuetifyPreset = {}) {\n this.userPreset = userPreset\n\n this.use(services.Presets)\n this.use(services.Application)\n this.use(services.Breakpoint)\n this.use(services.Goto)\n this.use(services.Icons)\n this.use(services.Lang)\n this.use(services.Theme)\n }\n\n // Called on the new vuetify instance\n // bootstrap in install beforeCreate\n // Exposes ssrContext if available\n init (root: Vue, ssrContext?: object) {\n this.installed.forEach(property => {\n const service = this.framework[property]\n\n service.framework = this.framework\n\n service.init(root, ssrContext)\n })\n\n // rtl is not installed and\n // will never be called by\n // the init process\n this.framework.rtl = Boolean(this.preset.rtl) as any\n }\n\n // Instantiate a VuetifyService\n use (Service: VuetifyService) {\n const property = Service.property\n\n if (this.installed.includes(property)) return\n\n // TODO maybe a specific type for arg 2?\n this.framework[property] = new Service(this.preset, this as any)\n this.installed.push(property)\n }\n}\n","// Mixins\nimport Delayable from '../delayable'\nimport Toggleable from '../toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { getSlot, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\ntype Listeners = Dictionary<(e: MouseEvent & KeyboardEvent & FocusEvent) => void>\n\nconst baseMixins = mixins(\n Delayable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'activatable',\n\n props: {\n activator: {\n default: null as unknown as PropType,\n validator: (val: string | object) => {\n return ['string', 'object'].includes(typeof val)\n },\n },\n disabled: Boolean,\n internalActivator: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n openOnFocus: Boolean,\n },\n\n data: () => ({\n // Do not use this directly, call getActivator() instead\n activatorElement: null as HTMLElement | null,\n activatorNode: [] as VNode[],\n events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n listeners: {} as Listeners,\n }),\n\n watch: {\n activator: 'resetActivator',\n openOnFocus: 'resetActivator',\n openOnHover: 'resetActivator',\n },\n\n mounted () {\n const slotType = getSlotType(this, 'activator', true)\n\n if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n consoleError(`The activator slot must be bound, try ''`, this)\n }\n\n this.addActivatorEvents()\n },\n\n beforeDestroy () {\n this.removeActivatorEvents()\n },\n\n methods: {\n addActivatorEvents () {\n if (\n !this.activator ||\n this.disabled ||\n !this.getActivator()\n ) return\n\n this.listeners = this.genActivatorListeners()\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n this.getActivator()!.addEventListener(key, this.listeners[key] as any)\n }\n },\n genActivator () {\n const node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {\n on: this.genActivatorListeners(),\n attrs: this.genActivatorAttributes(),\n })) || []\n\n this.activatorNode = node\n\n return node\n },\n genActivatorAttributes () {\n return {\n role: (this.openOnClick && !this.openOnHover) ? 'button' : undefined,\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genActivatorListeners () {\n if (this.disabled) return {}\n\n const listeners: Listeners = {}\n\n if (this.openOnHover) {\n listeners.mouseenter = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.mouseleave = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n } else if (this.openOnClick) {\n listeners.click = (e: MouseEvent) => {\n const activator = this.getActivator(e)\n if (activator) activator.focus()\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n if (this.openOnFocus) {\n listeners.focus = (e: FocusEvent) => {\n this.getActivator(e)\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n return listeners\n },\n getActivator (e?: Event): HTMLElement | null {\n // If we've already fetched the activator, re-use\n if (this.activatorElement) return this.activatorElement\n\n let activator = null\n\n if (this.activator) {\n const target = this.internalActivator ? this.$el : document\n\n if (typeof this.activator === 'string') {\n // Selector\n activator = target.querySelector(this.activator)\n } else if ((this.activator as any).$el) {\n // Component (ref)\n activator = (this.activator as any).$el\n } else {\n // HTMLElement | Element\n activator = this.activator\n }\n } else if (this.activatorNode.length === 1 || (this.activatorNode.length && !e)) {\n // Use the contents of the activator slot\n // There's either only one element in it or we\n // don't have a click event to use as a last resort\n const vm = this.activatorNode[0].componentInstance\n if (\n vm &&\n vm.$options.mixins && // Activatable is indirectly used via Menuable\n vm.$options.mixins.some((m: any) => m.options && ['activatable', 'menuable'].includes(m.options.name))\n ) {\n // Activator is actually another activatible component, use its activator (#8846)\n activator = (vm as any).getActivator()\n } else {\n activator = this.activatorNode[0].elm as HTMLElement\n }\n } else if (e) {\n // Activated by a click or focus event\n activator = (e.currentTarget || e.target) as HTMLElement\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n this.activatorElement = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return this.activatorElement\n },\n getContentSlot () {\n return getSlot(this, 'default', this.getValueProxy(), true)\n },\n getValueProxy (): object {\n const self = this\n return {\n get value () {\n return self.isActive\n },\n set value (isActive: boolean) {\n self.isActive = isActive\n },\n }\n },\n removeActivatorEvents () {\n if (\n !this.activator ||\n !this.activatorElement\n ) return\n\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n (this.activatorElement as any).removeEventListener(key, this.listeners[key])\n }\n\n this.listeners = {}\n },\n resetActivator () {\n this.removeActivatorEvents()\n this.activatorElement = null\n this.getActivator()\n this.addActivatorEvents()\n },\n },\n})\n","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & WatchHandler {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'bootable',\n\n props: {\n eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator,\n },\n})\n","import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined,\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n },\n },\n})\n","import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: InstanceType\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n },\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n","// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable = VueConstructor> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable {\n return RegistrableInject(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\n },\n },\n})\n","// Types\nimport { BreakpointName } from 'vuetify/types/services/breakpoint'\nimport { deprecate } from '../../util/console'\nimport Vue, { PropType } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'mobile',\n\n props: {\n mobileBreakpoint: {\n type: [Number, String] as PropType,\n default (): number | BreakpointName | undefined {\n // Avoid destroying unit\n // tests for users\n return this.$vuetify\n ? this.$vuetify.breakpoint.mobileBreakpoint\n : undefined\n },\n validator: v => (\n !isNaN(Number(v)) ||\n ['xs', 'sm', 'md', 'lg', 'xl'].includes(String(v))\n ),\n },\n },\n\n computed: {\n isMobile (): boolean {\n const {\n mobile,\n width,\n name,\n mobileBreakpoint,\n } = this.$vuetify.breakpoint\n\n // Check if local mobileBreakpoint matches\n // the application's mobileBreakpoint\n if (mobileBreakpoint === this.mobileBreakpoint) return mobile\n\n const mobileWidth = parseInt(this.mobileBreakpoint, 10)\n const isNumber = !isNaN(mobileWidth)\n\n return isNumber\n ? width < mobileWidth\n : name === this.mobileBreakpoint\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('mobile-break-point')) {\n deprecate('mobile-break-point', 'mobile-breakpoint', this)\n }\n },\n})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable = VueConstructor : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'returnable',\n\n props: {\n returnValue: null as any,\n },\n\n data: () => ({\n isActive: false,\n originalValue: null as any,\n }),\n\n watch: {\n isActive (val) {\n if (val) {\n this.originalValue = this.returnValue\n } else {\n this.$emit('update:return-value', this.originalValue)\n }\n },\n },\n\n methods: {\n save (value: any) {\n this.originalValue = value\n setTimeout(() => {\n this.isActive = false\n })\n },\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n ...('click' in this ? { click: (this as any).click } : undefined), // #14447\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus (e: FocusEvent) {\n this.isFocused = true\n this.$emit('focus', e)\n },\n onBlur (e: FocusEvent) {\n this.isFocused = false\n this.$emit('blur', e)\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false,\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n },\n})\n","import Vue from 'vue'\n\nimport { getZIndex } from '../../util/helpers'\n\ninterface options extends Vue {\n $refs: {\n content: Element\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'stackable',\n\n data () {\n return {\n stackElement: null as Element | null,\n stackExclude: null as Element[] | null,\n stackMinZIndex: 0,\n isActive: false,\n }\n },\n computed: {\n activeZIndex (): number {\n if (typeof window === 'undefined') return 0\n\n const content = this.stackElement || this.$refs.content\n // Return current zindex if not active\n\n const index = !this.isActive\n ? getZIndex(content)\n : this.getMaxZIndex(this.stackExclude || [content]) + 2\n\n if (index == null) return index\n\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index)\n },\n },\n methods: {\n getMaxZIndex (exclude: Element[] = []) {\n const base = this.$el\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n const zis = [this.stackMinZIndex, getZIndex(base)]\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n const activeElements = [\n ...document.getElementsByClassName('v-menu__content--active'),\n ...document.getElementsByClassName('v-dialog__content--active'),\n ]\n\n // Get z-index for all active dialogs\n for (let index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(getZIndex(activeElements[index]))\n }\n }\n\n return Math.max(...zis)\n },\n },\n})\n","import Vue from 'vue'\nimport { PropType, RenderContext } from 'vue/types/options'\n\ninterface options extends Vue {\n theme: {\n isDark: boolean\n }\n}\n\n/* @vue/component */\nconst Themeable = Vue.extend().extend({\n name: 'themeable',\n\n provide (): object {\n return {\n theme: this.themeableProvide,\n }\n },\n\n inject: {\n theme: {\n default: {\n isDark: false,\n },\n },\n },\n\n props: {\n dark: {\n type: Boolean as PropType,\n default: null,\n },\n light: {\n type: Boolean as PropType,\n default: null,\n },\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false,\n },\n }\n },\n\n computed: {\n appIsDark (): boolean {\n return this.$vuetify.theme.dark || false\n },\n isDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark\n }\n },\n themeClasses (): object {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark,\n }\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from v-app\n return this.appIsDark\n }\n },\n rootThemeClasses (): Dictionary {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark,\n }\n },\n },\n\n watch: {\n isDark: {\n handler (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark\n }\n },\n immediate: true,\n },\n },\n})\n\nexport default Themeable\n\nexport function functionalThemeClasses (context: RenderContext): object {\n const vm = {\n ...context.props,\n ...context.injections,\n }\n const isDark = Themeable.options.computed.isDark.call(vm)\n return Themeable.options.computed.themeClasses.call({ isDark })\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Toggleable\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","export type EasingFunction = (t: number) => number\n\n// linear\nexport const linear = (t: number) => t\n// accelerating from zero velocity\nexport const easeInQuad = (t: number) => t ** 2\n// decelerating to zero velocity\nexport const easeOutQuad = (t: number) => t * (2 - t)\n// acceleration until halfway, then deceleration\nexport const easeInOutQuad = (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t)\n// accelerating from zero velocity\nexport const easeInCubic = (t: number) => t ** 3\n// decelerating to zero velocity\nexport const easeOutCubic = (t: number) => --t ** 3 + 1\n// acceleration until halfway, then deceleration\nexport const easeInOutCubic = (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n// accelerating from zero velocity\nexport const easeInQuart = (t: number) => t ** 4\n// decelerating to zero velocity\nexport const easeOutQuart = (t: number) => 1 - --t ** 4\n// acceleration until halfway, then deceleration\nexport const easeInOutQuart = (t: number) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t)\n// accelerating from zero velocity\nexport const easeInQuint = (t: number) => t ** 5\n// decelerating to zero velocity\nexport const easeOutQuint = (t: number) => 1 + --t ** 5\n// acceleration until halfway, then deceleration\nexport const easeInOutQuint = (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n","import Vue from 'vue'\n\n// Return target's cumulative offset from the top\nexport function getOffset (target: any): number {\n if (typeof target === 'number') {\n return target\n }\n\n let el = $(target)\n if (!el) {\n throw typeof target === 'string'\n ? new Error(`Target element \"${target}\" not found.`)\n : new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${type(target)} instead.`)\n }\n\n let totalOffset = 0\n while (el) {\n totalOffset += el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function getContainer (container: any): HTMLElement {\n const el = $(container)\n\n if (el) return el\n\n throw typeof container === 'string'\n ? new Error(`Container element \"${container}\" not found.`)\n : new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${type(container)} instead.`)\n}\n\nfunction type (el: any) {\n return el == null ? el : el.constructor.name\n}\n\nfunction $ (el: any): HTMLElement | null {\n if (typeof el === 'string') {\n return document.querySelector(el)\n } else if (el && el._isVue) {\n return (el as Vue).$el as HTMLElement\n } else if (el instanceof HTMLElement) {\n return el\n } else {\n return null\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as easingPatterns from './easing-patterns'\nimport {\n getContainer,\n getOffset,\n} from './util'\n\n// Types\nimport { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'\n\nimport { VuetifyServiceContract } from 'vuetify/types/services'\n\nexport default function goTo (\n _target: VuetifyGoToTarget,\n _settings: GoToOptions = {}\n): Promise {\n const settings: GoToOptions = {\n container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,\n duration: 500,\n offset: 0,\n easing: 'easeInOutCubic',\n appOffset: true,\n ..._settings,\n }\n const container = getContainer(settings.container)\n\n /* istanbul ignore else */\n if (settings.appOffset && goTo.framework.application) {\n const isDrawer = container.classList.contains('v-navigation-drawer')\n const isClipped = container.classList.contains('v-navigation-drawer--clipped')\n const { bar, top } = goTo.framework.application as any\n\n settings.offset += bar\n /* istanbul ignore else */\n if (!isDrawer || isClipped) settings.offset += top\n }\n\n const startTime = performance.now()\n\n let targetLocation: number\n if (typeof _target === 'number') {\n targetLocation = getOffset(_target) - settings.offset!\n } else {\n targetLocation = getOffset(_target) - getOffset(container) - settings.offset!\n }\n\n const startLocation = container.scrollTop\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const ease = typeof settings.easing === 'function'\n ? settings.easing\n : easingPatterns[settings.easing!]\n /* istanbul ignore else */\n if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`)\n\n // Cannot be tested properly in jsdom\n /* istanbul ignore next */\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1)\n\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress))\n\n const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight\n const reachBottom = clientHeight + container.scrollTop >= container.scrollHeight\n if (\n progress === 1 ||\n // Need to go lower but reach bottom\n (targetLocation > container.scrollTop && reachBottom)\n ) {\n return resolve(targetLocation)\n }\n\n requestAnimationFrame(step)\n }))\n}\n\ngoTo.framework = {} as Record\ngoTo.init = () => {}\n\nexport class Goto extends Service {\n public static property: 'goTo' = 'goTo'\n\n constructor () {\n super()\n\n return goTo\n }\n}\n","// Contracts\nimport { VuetifyServiceContract } from 'vuetify/types/services/index'\n\n// Types\nimport Vue from 'vue'\n\nexport class Service implements VuetifyServiceContract {\n framework = {}\n\n init (root: Vue, ssrContext?: object) {}\n}\n","// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport { toXYZ } from './color/transformSRGB'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\n\nexport type ColorInt = number\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number }\nexport type HSVA = HSV & { a: number }\nexport type RGB = { r: number, g: number, b: number }\nexport type RGBA = RGB & { a: number }\nexport type HSL = { h: number, s: number, l: number }\nexport type HSLA = HSL & { a: number }\nexport type Hex = string\nexport type Hexa = string\nexport type Color = string | number | {}\n\nexport function isCssColor (color?: string | false): boolean {\n return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/)\n}\n\nexport function colorToInt (color: Color): ColorInt {\n let rgb\n\n if (typeof color === 'number') {\n rgb = color\n } else if (typeof color === 'string') {\n let c = color[0] === '#' ? color.substring(1) : color\n if (c.length === 3) {\n c = c.split('').map(char => char + char).join('')\n }\n if (c.length !== 6) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n }\n rgb = parseInt(c, 16)\n } else {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\n }\n\n if (rgb < 0) {\n consoleWarn(`Colors cannot be negative: '${color}'`)\n rgb = 0\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n rgb = 0xffffff\n }\n\n return rgb\n}\n\nexport function classToHex (\n color: string,\n colors: Record>,\n currentTheme: Partial,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\nexport function intToHex (color: ColorInt): string {\n let hexColor: string = color.toString(16)\n\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor\n\n return '#' + hexColor\n}\n\nexport function colorToHex (color: Color): string {\n return intToHex(colorToInt(color))\n}\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport function HSVAtoRGBA (hsva: HSVA): RGBA {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\nexport function RGBAtoHSVA (rgba: RGBA): HSVA {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVAtoHSLA (hsva: HSVA): HSLA {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLAtoHSVA (hsl: HSLA): HSVA {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBAtoCSS (rgba: RGBA): string {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`\n}\n\nexport function RGBtoCSS (rgba: RGBA): string {\n return RGBAtoCSS({ ...rgba, a: 1 })\n}\n\nexport function RGBAtoHex (rgba: RGBA): Hex {\n const toHex = (v: number) => {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n }\n\n return `#${[\n toHex(rgba.r),\n toHex(rgba.g),\n toHex(rgba.b),\n toHex(Math.round(rgba.a * 255)),\n ].join('')}`\n}\n\nexport function HexToRGBA (hex: Hex): RGBA {\n const rgba = chunk(hex.slice(1), 2).map((c: string) => parseInt(c, 16))\n\n return {\n r: rgba[0],\n g: rgba[1],\n b: rgba[2],\n a: Math.round((rgba[3] / 255) * 100) / 100,\n }\n}\n\nexport function HexToHSVA (hex: Hex): HSVA {\n const rgb = HexToRGBA(hex)\n return RGBAtoHSVA(rgb)\n}\n\nexport function HSVAtoHex (hsva: HSVA): Hex {\n return RGBAtoHex(HSVAtoRGBA(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length === 6) {\n hex = padEnd(hex, 8, 'F')\n } else {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return `#${hex}`.toUpperCase().substr(0, 9)\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record>,\n currentTheme: Partial,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function RGBtoInt (rgba: RGBA): ColorInt {\n return (rgba.r << 16) + (rgba.g << 8) + rgba.b\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\nexport function contrastRatio (c1: RGBA, c2: RGBA): number {\n const [, y1] = toXYZ(RGBtoInt(c1))\n const [, y2] = toXYZ(RGBtoInt(c2))\n\n return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05)\n}\n","/* eslint-disable no-console */\nimport Vuetify from '../framework'\n\nfunction createMessage (message: string, vm?: any, parent?: any): string | void {\n if (Vuetify.config.silent) return\n\n if (parent) {\n vm = {\n _isVue: true,\n $parent: parent,\n $options: vm,\n }\n }\n\n if (vm) {\n // Only show each message once per instance\n vm.$_alreadyWarned = vm.$_alreadyWarned || []\n if (vm.$_alreadyWarned.includes(message)) return\n vm.$_alreadyWarned.push(message)\n }\n\n return `[Vuetify] ${message}` + (\n vm ? generateComponentTrace(vm) : ''\n )\n}\n\nexport function consoleInfo (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.info(newMessage)\n}\n\nexport function consoleWarn (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.warn(newMessage)\n}\n\nexport function consoleError (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.error(newMessage)\n}\n\nexport function deprecate (original: string, replacement: string, vm?: any, parent?: any) {\n consoleWarn(`[UPGRADE] '${original}' is deprecated, use '${replacement}' instead.`, vm, parent)\n}\nexport function breaking (original: string, replacement: string, vm?: any, parent?: any) {\n consoleError(`[BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`, vm, parent)\n}\nexport function removed (original: string, vm?: any, parent?: any) {\n consoleWarn(`[REMOVED] '${original}' has been removed. You can safely omit it.`, vm, parent)\n}\n\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\n\nconst classifyRE = /(?:^|[-_])(\\w)/g\nconst classify = (str: string) => str\n .replace(classifyRE, c => c.toUpperCase())\n .replace(/[-_]/g, '')\n\nfunction formatComponentName (vm: any, includeFile?: boolean): string {\n if (vm.$root === vm) {\n return ''\n }\n const options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {}\n let name = options.name || options._componentTag\n const file = options.__file\n if (!name && file) {\n const match = file.match(/([^/\\\\]+)\\.vue$/)\n name = match && match[1]\n }\n\n return (\n (name ? `<${classify(name)}>` : ``) +\n (file && includeFile !== false ? ` at ${file}` : '')\n )\n}\n\nfunction generateComponentTrace (vm: any): string {\n if (vm._isVue && vm.$parent) {\n const tree: any[] = []\n let currentRecursiveSequence = 0\n while (vm) {\n if (tree.length > 0) {\n const last: any = tree[tree.length - 1]\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++\n vm = vm.$parent\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence]\n currentRecursiveSequence = 0\n }\n }\n tree.push(vm)\n vm = vm.$parent\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map((vm, i) => `${\n i === 0 ? '---> ' : ' '.repeat(5 + i * 2)\n }${\n Array.isArray(vm)\n ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`\n : formatComponentName(vm)\n }`)\n .join('\\n')\n } else {\n return `\\n\\n(found in ${formatComponentName(vm)})`\n }\n}\n","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\n}\n","import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n props: {\n tag: {\n type: String,\n default: el,\n },\n },\n\n render (h, { data, props, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(props.tag, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n const once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) } /* eslint-disable-line no-console */\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n // Look for custom component in the configuration\n const component = vm.$vuetify.icons.component\n\n // Look for overrides\n if (iconName.startsWith('$')) {\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n const override = getObjectValueByPath(vm, iconPath, iconName)\n\n if (typeof override === 'string') iconName = override\n else return override\n }\n\n if (component == null) {\n return iconName\n }\n\n return {\n component,\n props: {\n icon: iconName,\n },\n }\n}\n\nexport function keys (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup[] {\n const key = groupBy[0]\n const groups: ItemGroup[] = []\n let current\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key, null)\n if (current !== val) {\n current = val\n groups.push({\n name: val ?? '',\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - ``\n * - 'scoped' for old style scoped slots (``) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nexport function getSlotType (vm: Vue, name: string, split?: T): (T extends true ? 'v-slot' : never) | 'normal' | 'scoped' | void {\n if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && (vm.$scopedSlots[name] as any).name) {\n return split ? 'v-slot' as any : 'scoped'\n }\n if (vm.$slots.hasOwnProperty(name)) return 'normal'\n if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped'\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters): void | ReturnType => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function getPrefixedScopedSlots (prefix: string, scopedSlots: any) {\n return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj: any, k: string) => {\n obj[k.replace(prefix, '')] = scopedSlots[k]\n return obj\n }, {})\n}\n\nexport function getSlot (vm: Vue, name = 'default', data?: object | (() => object), optional = false) {\n if (vm.$scopedSlots.hasOwnProperty(name)) {\n return vm.$scopedSlots[name]!(data instanceof Function ? data() : data)\n } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {\n return vm.$slots[name]\n }\n return undefined\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, binary = false): string {\n const base = binary ? 1024 : 1000\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Dictionary = {},\n target: Dictionary = {}\n) {\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n source[key] = mergeDeep(sourceProperty, targetProperty)\n\n continue\n }\n\n source[key] = targetProperty\n }\n\n return source\n}\n\nexport function fillArray (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n\n/** Polyfill for Event.prototype.composedPath */\nexport function composedPath (e: Event): EventTarget[] {\n if (e.composedPath) return e.composedPath()\n\n const path = []\n let el = e.target as Element\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n\n return path\n }\n\n el = el.parentElement!\n }\n return path\n}\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue, { VueConstructor } from 'vue'\n\nexport default function mixins (...args: T): ExtractVue extends infer V ? V extends Vue ? VueConstructor : never : never\nexport default function mixins (...args: VueConstructor[]): VueConstructor\nexport default function mixins (...args: VueConstructor[]): VueConstructor {\n return Vue.extend({ mixins: args })\n}\n\n/**\n * Returns the instance type from a VueConstructor\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue = T extends (infer U)[]\n ? UnionToIntersection<\n U extends VueConstructor ? V : never\n >\n : T extends VueConstructor ? V : never\n\ntype UnionToIntersection =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"codemirror\")):\"function\"==typeof define&&define.amd?define([\"codemirror\"],t):\"object\"==typeof exports?exports.VueCodemirror=t(require(\"codemirror\")):e.VueCodemirror=t(e.codemirror)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=window.CodeMirror||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),r=1;r/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n * May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n if(params != null) {\n Object.keys(params).forEach(function (key) {\n if(typeof(params[key]) == 'string') {\n params[key] = escapeHtml(params[key]);\n }\n });\n }\n return params\n}\n\n/* */\n\nfunction extend (Vue) {\n if (!Vue.prototype.hasOwnProperty('$i18n')) {\n // $FlowFixMe\n Object.defineProperty(Vue.prototype, '$i18n', {\n get: function get () { return this._i18n }\n });\n }\n\n Vue.prototype.$t = function (key) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var i18n = this.$i18n;\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n };\n\n Vue.prototype.$tc = function (key, choice) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var i18n = this.$i18n;\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n };\n\n Vue.prototype.$te = function (key, locale) {\n var i18n = this.$i18n;\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n };\n\n Vue.prototype.$d = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n };\n\n Vue.prototype.$n = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n };\n}\n\n/* */\n\n/**\n * Mixin\n * \n * If `bridge` mode, empty mixin is returned,\n * else regulary mixin implementation is returned.\n */\nfunction defineMixin (bridge) {\n if ( bridge === void 0 ) bridge = false;\n\n function mounted () {\n if (this !== this.$root && this.$options.__INTLIFY_META__ && this.$el) {\n this.$el.setAttribute('data-intlify', this.$options.__INTLIFY_META__);\n }\n }\n\n return bridge\n ? { mounted: mounted } // delegate `vue-i18n-bridge` mixin implementation\n : { // regulary \n beforeCreate: function beforeCreate () {\n var options = this.$options;\n options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n if ((options.__i18nBridge || options.__i18n)) {\n try {\n var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n var _i18n = options.__i18nBridge || options.__i18n;\n _i18n.forEach(function (resource) {\n localeMessages = merge(localeMessages, JSON.parse(resource));\n });\n Object.keys(localeMessages).forEach(function (locale) {\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n this._i18n = options.i18n;\n this._i18nWatcher = this._i18n.watchI18nData();\n } else if (isPlainObject(options.i18n)) {\n var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n ? this.$root.$i18n\n : null;\n // component local i18n\n if (rootI18n) {\n options.i18n.root = this.$root;\n options.i18n.formatter = rootI18n.formatter;\n options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n }\n\n // init locale messages via custom blocks\n if ((options.__i18nBridge || options.__i18n)) {\n try {\n var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n var _i18n$1 = options.__i18nBridge || options.__i18n;\n _i18n$1.forEach(function (resource) {\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n });\n options.i18n.messages = localeMessages$1;\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n\n var ref = options.i18n;\n var sharedMessages = ref.sharedMessages;\n if (sharedMessages && isPlainObject(sharedMessages)) {\n options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n }\n\n this._i18n = new VueI18n(options.i18n);\n this._i18nWatcher = this._i18n.watchI18nData();\n\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\n this._localeWatcher = this.$i18n.watchLocale();\n }\n\n if (rootI18n) {\n rootI18n.onComponentInstanceCreated(this._i18n);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n // root i18n\n this._i18n = this.$root.$i18n;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n // parent i18n\n this._i18n = options.parent.$i18n;\n }\n },\n\n beforeMount: function beforeMount () {\n var options = this.$options;\n options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (isPlainObject(options.i18n)) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n }\n },\n\n mounted: mounted,\n\n beforeDestroy: function beforeDestroy () {\n if (!this._i18n) { return }\n\n var self = this;\n this.$nextTick(function () {\n if (self._subscribing) {\n self._i18n.unsubscribeDataChanging(self);\n delete self._subscribing;\n }\n\n if (self._i18nWatcher) {\n self._i18nWatcher();\n self._i18n.destroyVM();\n delete self._i18nWatcher;\n }\n\n if (self._localeWatcher) {\n self._localeWatcher();\n delete self._localeWatcher;\n }\n });\n }\n }\n}\n\n/* */\n\nvar interpolationComponent = {\n name: 'i18n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n path: {\n type: String,\n required: true\n },\n locale: {\n type: String\n },\n places: {\n type: [Array, Object]\n }\n },\n render: function render (h, ref) {\n var data = ref.data;\n var parent = ref.parent;\n var props = ref.props;\n var slots = ref.slots;\n\n var $i18n = parent.$i18n;\n if (!$i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return\n }\n\n var path = props.path;\n var locale = props.locale;\n var places = props.places;\n var params = slots();\n var children = $i18n.i(\n path,\n locale,\n onlyHasDefaultPlace(params) || places\n ? useLegacyPlaces(params.default, places)\n : params\n );\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag ? h(tag, data, children) : children\n }\n};\n\nfunction onlyHasDefaultPlace (params) {\n var prop;\n for (prop in params) {\n if (prop !== 'default') { return false }\n }\n return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n var params = places ? createParamsFromPlaces(places) : {};\n\n if (!children) { return params }\n\n // Filter empty text nodes\n children = children.filter(function (child) {\n return child.tag || child.text.trim() !== ''\n });\n\n var everyPlace = children.every(vnodeHasPlaceAttribute);\n if (process.env.NODE_ENV !== 'production' && everyPlace) {\n warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return children.reduce(\n everyPlace ? assignChildPlace : assignChildIndex,\n params\n )\n}\n\nfunction createParamsFromPlaces (places) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return Array.isArray(places)\n ? places.reduce(assignChildIndex, {})\n : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n if (child.data && child.data.attrs && child.data.attrs.place) {\n params[child.data.attrs.place] = child;\n }\n return params\n}\n\nfunction assignChildIndex (params, child, index) {\n params[index] = child;\n return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/* */\n\nvar numberComponent = {\n name: 'i18n-n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n },\n locale: {\n type: String\n }\n },\n render: function render (h, ref) {\n var props = ref.props;\n var parent = ref.parent;\n var data = ref.data;\n\n var i18n = parent.$i18n;\n\n if (!i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return null\n }\n\n var key = null;\n var options = null;\n\n if (isString(props.format)) {\n key = props.format;\n } else if (isObject(props.format)) {\n if (props.format.key) {\n key = props.format.key;\n }\n\n // Filter out number format options only\n options = Object.keys(props.format).reduce(function (acc, prop) {\n var obj;\n\n if (includes(numberFormatKeys, prop)) {\n return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n }\n return acc\n }, null);\n }\n\n var locale = props.locale || i18n.locale;\n var parts = i18n._ntp(props.value, locale, key, options);\n\n var values = parts.map(function (part, index) {\n var obj;\n\n var slot = data.scopedSlots && data.scopedSlots[part.type];\n return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n });\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag\n ? h(tag, {\n attrs: data.attrs,\n 'class': data['class'],\n staticClass: data.staticClass\n }, values)\n : values\n }\n};\n\n/* */\n\nfunction bind (el, binding, vnode) {\n if (!assert(el, vnode)) { return }\n\n t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n if (!assert(el, vnode)) { return }\n\n var i18n = vnode.context.$i18n;\n if (localeEqual(el, vnode) &&\n (looseEqual(binding.value, binding.oldValue) &&\n looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return\n }\n\n var i18n = vnode.context.$i18n || {};\n if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n el.textContent = '';\n }\n el._vt = undefined;\n delete el['_vt'];\n el._locale = undefined;\n delete el['_locale'];\n el._localeMessage = undefined;\n delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return false\n }\n\n if (!vm.$i18n) {\n warn('VueI18n instance does not exists in Vue instance');\n return false\n }\n\n return true\n}\n\nfunction localeEqual (el, vnode) {\n var vm = vnode.context;\n return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n var ref$1, ref$2;\n\n var value = binding.value;\n\n var ref = parseValue(value);\n var path = ref.path;\n var locale = ref.locale;\n var args = ref.args;\n var choice = ref.choice;\n if (!path && !locale && !args) {\n warn('value type not supported');\n return\n }\n\n if (!path) {\n warn('`path` is required in v-t directive');\n return\n }\n\n var vm = vnode.context;\n if (choice != null) {\n el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n } else {\n el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n }\n el._locale = vm.$i18n.locale;\n el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n var path;\n var locale;\n var args;\n var choice;\n\n if (isString(value)) {\n path = value;\n } else if (isPlainObject(value)) {\n path = value.path;\n locale = value.locale;\n args = value.args;\n choice = value.choice;\n }\n\n return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n var params = [];\n\n locale && params.push(locale);\n if (args && (Array.isArray(args) || isPlainObject(args))) {\n params.push(args);\n }\n\n return params\n}\n\nvar Vue;\n\nfunction install (_Vue, options) {\n if ( options === void 0 ) options = { bridge: false };\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n warn('already installed.');\n return\n }\n install.installed = true;\n\n Vue = _Vue;\n\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && version < 2) {\n warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n return\n }\n\n extend(Vue);\n Vue.mixin(defineMixin(options.bridge));\n Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n Vue.component(interpolationComponent.name, interpolationComponent);\n Vue.component(numberComponent.name, numberComponent);\n\n // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n var strats = Vue.config.optionMergeStrategies;\n strats.i18n = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n}\n\n/* */\n\nvar BaseFormatter = function BaseFormatter () {\n this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n if (!values) {\n return [message]\n }\n var tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message);\n this._caches[message] = tokens;\n }\n return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n var tokens = [];\n var position = 0;\n\n var text = '';\n while (position < format.length) {\n var char = format[position++];\n if (char === '{') {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n\n text = '';\n var sub = '';\n char = format[position++];\n while (char !== undefined && char !== '}') {\n sub += char;\n char = format[position++];\n }\n var isClosed = char === '}';\n\n var type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type: type });\n } else if (char === '%') {\n // when found rails i18n syntax, skip text capture\n if (format[(position)] !== '{') {\n text += char;\n }\n } else {\n text += char;\n }\n }\n\n text && tokens.push({ type: 'text', value: text });\n\n return tokens\n}\n\nfunction compile (tokens, values) {\n var compiled = [];\n var index = 0;\n\n var mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') { return compiled }\n\n while (index < tokens.length) {\n var token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break\n case 'named':\n if (mode === 'named') {\n compiled.push((values)[token.value]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n }\n }\n break\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Detect 'unknown' type of token!\");\n }\n break\n }\n index++;\n }\n\n return compiled\n}\n\n/* */\n\n/**\n * Path parser\n * - Inspired:\n * Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27)\n ? str.slice(1, -1)\n : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n if (ch === undefined || ch === null) { return 'eof' }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n return ch\n\n case 0x5F: // _\n case 0x24: // $\n case 0x2D: // -\n return 'ident'\n\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator\n return 'ws'\n }\n\n return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c;\n var key;\n var newChar;\n var type;\n var transition;\n var action;\n var typeMap;\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n if (key === undefined) { return false }\n key = formatSubPath(key);\n if (key === false) {\n return false\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote () {\n var nextChar = path[index + 1];\n if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true\n }\n }\n\n while (mode !== null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined\n ? c\n : newChar;\n if (action() === false) {\n return\n }\n }\n\n if (mode === AFTER_PATH) {\n return keys\n }\n }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n var hit = this._cache[path];\n if (!hit) {\n hit = parse$1(path);\n if (hit) {\n this._cache[path] = hit;\n }\n }\n return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n if (!isObject(obj)) { return null }\n\n var paths = this.parsePath(path);\n if (paths.length === 0) {\n return null\n } else {\n var length = paths.length;\n var last = obj;\n var i = 0;\n while (i < length) {\n var value = last[paths[i]];\n if (value === undefined || value === null) {\n return null\n }\n last = value;\n i++;\n }\n\n return last\n }\n};\n\n/* */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-zA-Z]+)?:(?:[\\w\\-_|./]+|\\([\\w\\-_:|./]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-zA-Z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n 'upper': function (str) { return str.toLocaleUpperCase(); },\n 'lower': function (str) { return str.toLocaleLowerCase(); },\n 'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #290\n /* istanbul ignore if */\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n var locale = options.locale || 'en-US';\n var fallbackLocale = options.fallbackLocale === false\n ? false\n : options.fallbackLocale || 'en-US';\n var messages = options.messages || {};\n var dateTimeFormats = options.dateTimeFormats || options.datetimeFormats || {};\n var numberFormats = options.numberFormats || {};\n\n this._vm = null;\n this._formatter = options.formatter || defaultFormatter;\n this._modifiers = options.modifiers || {};\n this._missing = options.missing || null;\n this._root = options.root || null;\n this._sync = options.sync === undefined ? true : !!options.sync;\n this._fallbackRoot = options.fallbackRoot === undefined\n ? true\n : !!options.fallbackRoot;\n this._fallbackRootWithEmptyString = options.fallbackRootWithEmptyString === undefined\n ? true\n : !!options.fallbackRootWithEmptyString;\n this._formatFallbackMessages = options.formatFallbackMessages === undefined\n ? false\n : !!options.formatFallbackMessages;\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\n ? false\n : options.silentTranslationWarn;\n this._silentFallbackWarn = options.silentFallbackWarn === undefined\n ? false\n : !!options.silentFallbackWarn;\n this._dateTimeFormatters = {};\n this._numberFormatters = {};\n this._path = new I18nPath();\n this._dataListeners = new Set();\n this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n ? false\n : !!options.preserveDirectiveContent;\n this.pluralizationRules = options.pluralizationRules || {};\n this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n this._postTranslation = options.postTranslation || null;\n this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n if ('__VUE_I18N_BRIDGE__' in options) {\n this.__VUE_I18N_BRIDGE__ = options.__VUE_I18N_BRIDGE__;\n }\n\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index\n */\n this.getChoiceIndex = function (choice, choicesLength) {\n var thisPrototype = Object.getPrototypeOf(this$1);\n if (thisPrototype && thisPrototype.getChoiceIndex) {\n var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n }\n\n // Default (old) getChoiceIndex implementation - english-compatible\n var defaultImpl = function (_choice, _choicesLength) {\n _choice = Math.abs(_choice);\n\n if (_choicesLength === 2) {\n return _choice\n ? _choice > 1\n ? 1\n : 0\n : 1\n }\n\n return _choice ? Math.min(_choice, 2) : 0\n };\n\n if (this$1.locale in this$1.pluralizationRules) {\n return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n } else {\n return defaultImpl(choice, choicesLength)\n }\n };\n\n\n this._exist = function (message, key) {\n if (!message || !key) { return false }\n if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n // fallback for flat key\n if (message[key]) { return true }\n return false\n };\n\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n\n this._initVM({\n locale: locale,\n fallbackLocale: fallbackLocale,\n messages: messages,\n dateTimeFormats: dateTimeFormats,\n numberFormats: numberFormats\n });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true },sync: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n var paths = [];\n\n var fn = function (level, locale, message, paths) {\n if (isPlainObject(message)) {\n Object.keys(message).forEach(function (key) {\n var val = message[key];\n if (isPlainObject(val)) {\n paths.push(key);\n paths.push('.');\n fn(level, locale, val, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push(key);\n fn(level, locale, val, paths);\n paths.pop();\n }\n });\n } else if (isArray(message)) {\n message.forEach(function (item, index) {\n if (isPlainObject(item)) {\n paths.push((\"[\" + index + \"]\"));\n paths.push('.');\n fn(level, locale, item, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push((\"[\" + index + \"]\"));\n fn(level, locale, item, paths);\n paths.pop();\n }\n });\n } else if (isString(message)) {\n var ret = htmlTagMatcher.test(message);\n if (ret) {\n var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n if (level === 'warn') {\n warn(msg);\n } else if (level === 'error') {\n error(msg);\n }\n }\n }\n };\n\n fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n this._vm = new Vue({ data: data, __VUE18N__INSTANCE__: true });\n Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n this._dataListeners.add(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n var this$1 = this;\n return this._vm.$watch('$data', function () {\n var listeners = arrayFrom(this$1._dataListeners);\n var i = listeners.length;\n while(i--) {\n Vue.nextTick(function () {\n listeners[i] && listeners[i].$forceUpdate();\n });\n }\n }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale (composer) {\n if (!composer) {\n /* istanbul ignore if */\n if (!this._sync || !this._root) { return null }\n var target = this._vm;\n return this._root.$i18n.vm.$watch('locale', function (val) {\n target.$set(target, 'locale', val);\n target.$forceUpdate();\n }, { immediate: true })\n } else {\n // deal with vue-i18n-bridge\n if (!this.__VUE_I18N_BRIDGE__) { return null }\n var self = this;\n var target$1 = this._vm;\n return this.vm.$watch('locale', function (val) {\n target$1.$set(target$1, 'locale', val);\n if (self.__VUE_I18N_BRIDGE__ && composer) {\n composer.locale.value = val;\n }\n target$1.$forceUpdate();\n }, { immediate: true })\n }\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n if (this._componentInstanceCreatedListener) {\n this._componentInstanceCreatedListener(newI18n, this);\n }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n this._localeChainCache = {};\n this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n var this$1 = this;\n\n var orgLevel = this._warnHtmlInMessage;\n this._warnHtmlInMessage = level;\n if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n var messages = this._getMessages();\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nprototypeAccessors.sync.get = function () { return this._sync };\nprototypeAccessors.sync.set = function (val) { this._sync = val; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n if (!isNull(result)) { return result }\n if (this._missing) {\n var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n if (isString(missingRet)) {\n return missingRet\n }\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn(\n \"Cannot translate the value of keypath '\" + key + \"'. \" +\n 'Use the value of keypath as default.'\n );\n }\n }\n\n if (this._formatFallbackMessages) {\n var parsedArgs = parseArgs.apply(void 0, values);\n return this._render(key, interpolateMode, parsedArgs.params, key)\n } else {\n return key\n }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n return (this._fallbackRootWithEmptyString? !val : isNull(val)) && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n return this._silentFallbackWarn instanceof RegExp\n ? this._silentFallbackWarn.test(key)\n : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n return this._silentTranslationWarn instanceof RegExp\n ? this._silentTranslationWarn.test(key)\n : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n locale,\n message,\n key,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n if (!message) { return null }\n\n var pathRet = this._path.getPathValue(message, key);\n if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n var ret;\n if (isNull(pathRet)) {\n /* istanbul ignore else */\n if (isPlainObject(message)) {\n ret = message[key];\n if (!(isString(ret) || isFunction(ret))) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n }\n return null\n }\n } else {\n return null\n }\n } else {\n /* istanbul ignore else */\n if (isString(pathRet) || isFunction(pathRet)) {\n ret = pathRet;\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n }\n return null\n }\n }\n\n // Check for the existence of links within the translated string\n if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n }\n\n return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n locale,\n message,\n str,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n var ret = str;\n\n // Match all the links within the local\n // We are going to replace each of\n // them with its translation\n var matches = ret.match(linkKeyMatcher);\n\n // eslint-disable-next-line no-autofix/prefer-const\n for (var idx in matches) {\n // ie compatible: filter custom array\n // prototype method\n if (!matches.hasOwnProperty(idx)) {\n continue\n }\n var link = matches[idx];\n var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n var linkPrefix = linkKeyPrefixMatches[0];\n var formatterName = linkKeyPrefixMatches[1];\n\n // Remove the leading @:, @.case: and the brackets\n var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n if (includes(visitedLinkStack, linkPlaceholder)) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n }\n return ret\n }\n visitedLinkStack.push(linkPlaceholder);\n\n // Translate the link\n var translated = this._interpolate(\n locale, message, linkPlaceholder, host,\n interpolateMode === 'raw' ? 'string' : interpolateMode,\n interpolateMode === 'raw' ? undefined : values,\n visitedLinkStack\n );\n\n if (this._isFallbackRoot(translated)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n var root = this._root.$i18n;\n translated = root._translate(\n root._getMessages(), root.locale, root.fallbackLocale,\n linkPlaceholder, host, interpolateMode, values\n );\n }\n translated = this._warnDefault(\n locale, linkPlaceholder, translated, host,\n isArray(values) ? values : [values],\n interpolateMode\n );\n\n if (this._modifiers.hasOwnProperty(formatterName)) {\n translated = this._modifiers[formatterName](translated);\n } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n translated = defaultModifiers[formatterName](translated);\n }\n\n visitedLinkStack.pop();\n\n // Replace the link with the translated\n ret = !translated ? ret : ret.replace(link, translated);\n }\n\n return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values, formatter, path, interpolateMode) {\n var this$1 = this;\n\n var _list = isArray(values) ? values : [];\n var _named = isObject(values) ? values : {};\n var list = function (index) { return _list[index]; };\n var named = function (key) { return _named[key]; };\n var messages = this._getMessages();\n var locale = this.locale;\n\n return {\n list: list,\n named: named,\n values: values,\n formatter: formatter,\n path: path,\n messages: messages,\n locale: locale,\n linked: function (linkedKey) { return this$1._interpolate(locale, messages[locale] || {}, linkedKey, null, interpolateMode, undefined, [linkedKey]); }\n }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n if (isFunction(message)) {\n return message(\n this._createMessageContext(values, this._formatter || defaultFormatter, path, interpolateMode)\n )\n }\n\n var ret = this._formatter.interpolate(message, values, path);\n\n // If the custom formatter refuses to work - apply the default one\n if (!ret) {\n ret = defaultFormatter.interpolate(message, values, path);\n }\n\n // if interpolateMode is **not** 'string' ('row'),\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n var follow = false;\n if (!includes(chain, item)) {\n follow = true;\n if (item) {\n follow = item[item.length - 1] !== '!';\n item = item.replace(/!/g, '');\n chain.push(item);\n if (blocks && blocks[item]) {\n follow = blocks[item];\n }\n }\n }\n return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n var follow;\n var tokens = locale.split('-');\n do {\n var item = tokens.join('-');\n follow = this._appendItemToChain(chain, item, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && (follow === true))\n return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n var follow = true;\n for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n var locale = block[i];\n if (isString(locale)) {\n follow = this._appendLocaleToChain(chain, locale, blocks);\n }\n }\n return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n if (start === '') { return [] }\n\n if (!this._localeChainCache) {\n this._localeChainCache = {};\n }\n\n var chain = this._localeChainCache[start];\n if (!chain) {\n if (!fallbackLocale) {\n fallbackLocale = this.fallbackLocale;\n }\n chain = [];\n\n // first block defined by start\n var block = [start];\n\n // while any intervening block found\n while (isArray(block)) {\n block = this._appendBlockToChain(\n chain,\n block,\n fallbackLocale\n );\n }\n\n // last block defined by default\n var defaults;\n if (isArray(fallbackLocale)) {\n defaults = fallbackLocale;\n } else if (isObject(fallbackLocale)) {\n /* $FlowFixMe */\n if (fallbackLocale['default']) {\n defaults = fallbackLocale['default'];\n } else {\n defaults = null;\n }\n } else {\n defaults = fallbackLocale;\n }\n\n // convert defaults to array\n if (isString(defaults)) {\n block = [defaults];\n } else {\n block = defaults;\n }\n if (block) {\n this._appendBlockToChain(\n chain,\n block,\n null\n );\n }\n this._localeChainCache[start] = chain;\n }\n return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n messages,\n locale,\n fallback,\n key,\n host,\n interpolateMode,\n args\n) {\n var chain = this._getLocaleChain(locale, fallback);\n var res;\n for (var i = 0; i < chain.length; i++) {\n var step = chain[i];\n res =\n this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n if (!isNull(res)) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n }\n return res\n }\n }\n return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n var ref;\n\n var values = [], len = arguments.length - 4;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n if (!key) { return '' }\n\n var parsedArgs = parseArgs.apply(void 0, values);\n if(this._escapeParameterHtml) {\n parsedArgs.params = escapeParams(parsedArgs.params);\n }\n\n var locale = parsedArgs.locale || _locale;\n\n var ret = this._translate(\n messages, locale, this.fallbackLocale, key,\n host, 'string', parsedArgs.params\n );\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n } else {\n ret = this._warnDefault(locale, key, ret, host, values, 'string');\n if (this._postTranslation && ret !== null && ret !== undefined) {\n ret = this._postTranslation(ret, key);\n }\n return ret\n }\n};\n\nVueI18n.prototype.t = function t (key) {\n var ref;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n var ret =\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n }\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.i(key, locale, values)\n } else {\n return this._warnDefault(locale, key, ret, host, [values], 'raw')\n }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n /* istanbul ignore if */\n if (!key) { return '' }\n\n if (!isString(locale)) {\n locale = this.locale;\n }\n\n return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n key,\n _locale,\n messages,\n host,\n choice\n) {\n var ref;\n\n var values = [], len = arguments.length - 5;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n if (!key) { return '' }\n if (choice === undefined) {\n choice = 1;\n }\n\n var predefined = { 'count': choice, 'n': choice };\n var parsedArgs = parseArgs.apply(void 0, values);\n parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n /* istanbul ignore if */\n if (!message || !isString(message)) { return null }\n var choices = message.split('|');\n\n choice = this.getChoiceIndex(choice, choices.length);\n if (!choices[choice]) { return message }\n return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n var ref;\n\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n var args = [], len = arguments.length - 3;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n var _locale = parseArgs.apply(void 0, args).locale || locale;\n return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, merge(\n typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n ? Object.assign({}, this._vm.messages[locale])\n : {},\n message\n ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, format);\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n // eslint-disable-next-line no-autofix/prefer-const\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._dateTimeFormatters[id];\n }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n value,\n locale,\n fallback,\n dateTimeFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = dateTimeFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = dateTimeFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n formatter = new Intl.DateTimeFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._dateTimeFormatters[id];\n if (!formatter) {\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n }\n }\n\n return formatter.format(value)\n }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key, options) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n return ''\n }\n\n if (!key) {\n var dtf = !options ? new Intl.DateTimeFormat(locale) : new Intl.DateTimeFormat(locale, options);\n return dtf.format(value)\n }\n\n var ret =\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key, options);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.d(value, key, locale)\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.d = function d (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n }\n\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(dateTimeFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._d(value, locale, key, options)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, format);\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n // eslint-disable-next-line no-autofix/prefer-const\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._numberFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._numberFormatters[id];\n }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n value,\n locale,\n fallback,\n numberFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = numberFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = numberFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n // If options specified - create one time number formatter\n formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._numberFormatters[id];\n if (!formatter) {\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n }\n }\n return formatter\n }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n }\n return ''\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.format(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.format(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.n = function n (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n\n // Filter out number format options only\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(numberFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n }\n return []\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.formatToParts(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.formatToParts(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n._ntp(value, locale, key, options)\n } else {\n return ret || []\n }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n get: function get () {\n if (!availabilities) {\n var intlDefined = typeof Intl !== 'undefined';\n availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n };\n }\n\n return availabilities\n }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.28.2';\n\nexport default VueI18n;\n","/*!\n * vue-router v3.5.4\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an element. Use the custom prop to remove this warning:\\n\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\" with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) { this$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.5.4';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"