{"version":3,"file":"js/chunk-vendors.8338eba2.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-possible-prototype.js","webpack://web/./node_modules/core-js/internals/an-object.js","webpack://web/./node_modules/core-js/internals/array-includes.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/copy-constructor-properties.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/define-built-in.js","webpack://web/./node_modules/core-js/internals/define-global-property.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/engine-user-agent.js","webpack://web/./node_modules/core-js/internals/engine-v8-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/function-apply.js","webpack://web/./node_modules/core-js/internals/function-bind-native.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-method.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/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-state.js","webpack://web/./node_modules/core-js/internals/is-callable.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-symbol.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-trunc.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/normalize-string-argument.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.js","webpack://web/./node_modules/core-js/internals/object-get-own-property-symbols.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-property-is-enumerable.js","webpack://web/./node_modules/core-js/internals/object-set-prototype-of.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/proxy-accessor.js","webpack://web/./node_modules/core-js/internals/require-object-coercible.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/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/well-known-symbol.js","webpack://web/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://web/./node_modules/core-js/modules/es.error.cause.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/VDivider/VDivider.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/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"],"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 '';\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 '';\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 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 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","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 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","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 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","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 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","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 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","// 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","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 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","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 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 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 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 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","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\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 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 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","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","/* 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","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 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","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 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","'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 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 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 $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","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 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 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","'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","/* 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","\"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 \"&#x\" + (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","// 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","// 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","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 '