{"version":3,"file":"/js/front.js","mappings":"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","sources":["webpack:///./resources/assets/js/common.js","webpack:///./resources/assets/js/common/countdown.js","webpack:///./resources/assets/js/common/password-strength.js","webpack:///./resources/assets/js/front/base.js","webpack:///./resources/assets/js/front/cookie-banner.js","webpack:///./resources/assets/js/front/index.js","webpack:///./resources/assets/js/front/radio.js","webpack:///./resources/assets/js/front/swiper-setup.js","webpack:///./resources/assets/js/front/taketime.js","webpack:///./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js","webpack:///./node_modules/bootstrap-sass/assets/javascripts/bootstrap.js","webpack:///./node_modules/codemirror-spell-checker/src/js/spell-checker.js","webpack:///./node_modules/codemirror/addon/display/fullscreen.js","webpack:///./node_modules/codemirror/addon/display/placeholder.js","webpack:///./node_modules/codemirror/addon/edit/continuelist.js","webpack:///./node_modules/codemirror/addon/mode/overlay.js","webpack:///./node_modules/codemirror/addon/selection/mark-selection.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/codemirror/mode/gfm/gfm.js","webpack:///./node_modules/codemirror/mode/markdown/markdown.js","webpack:///./node_modules/codemirror/mode/meta.js","webpack:///./node_modules/codemirror/mode/xml/xml.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/native-url.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/es.string.match.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/inputmask/dist/inputmask.js","webpack:///./node_modules/inputmask/index.js","webpack:///./node_modules/jquery-countdown/dist/jquery.countdown.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/js.cookie/dst/Cookie.js","webpack:///./node_modules/simplemde/src/js/codemirror/tablist.js","webpack:///./node_modules/simplemde/src/js/simplemde.js","webpack:///./node_modules/ssr-window/ssr-window.esm.js","webpack:///./node_modules/swiper/esm/utils/get-support.js","webpack:///./node_modules/swiper/esm/utils/get-device.js","webpack:///./node_modules/swiper/esm/utils/get-browser.js","webpack:///./node_modules/swiper/esm/modules/resize/resize.js","webpack:///./node_modules/swiper/esm/modules/observer/observer.js","webpack:///./node_modules/swiper/esm/components/core/events-emitter.js","webpack:///./node_modules/swiper/esm/components/core/update/index.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSize.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlides.js","webpack:///./node_modules/swiper/esm/components/core/update/updateAutoHeight.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesOffset.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateProgress.js","webpack:///./node_modules/swiper/esm/components/core/update/updateSlidesClasses.js","webpack:///./node_modules/swiper/esm/components/core/update/updateActiveIndex.js","webpack:///./node_modules/swiper/esm/components/core/update/updateClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/translate/index.js","webpack:///./node_modules/swiper/esm/components/core/translate/getTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/setTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/minTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/maxTranslate.js","webpack:///./node_modules/swiper/esm/components/core/translate/translateTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/index.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideTo.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToLoop.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideNext.js","webpack:///./node_modules/swiper/esm/components/core/slide/slidePrev.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideReset.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClosest.js","webpack:///./node_modules/swiper/esm/components/core/slide/slideToClickedSlide.js","webpack:///./node_modules/swiper/esm/components/core/loop/index.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopCreate.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopFix.js","webpack:///./node_modules/swiper/esm/components/core/loop/loopDestroy.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchStart.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchMove.js","webpack:///./node_modules/swiper/esm/components/core/events/onTouchEnd.js","webpack:///./node_modules/swiper/esm/components/core/events/onResize.js","webpack:///./node_modules/swiper/esm/components/core/events/onClick.js","webpack:///./node_modules/swiper/esm/components/core/events/onScroll.js","webpack:///./node_modules/swiper/esm/components/core/events/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/index.js","webpack:///./node_modules/swiper/esm/components/core/classes/addClasses.js","webpack:///./node_modules/swiper/esm/components/core/classes/removeClasses.js","webpack:///./node_modules/swiper/esm/components/core/check-overflow/index.js","webpack:///./node_modules/swiper/esm/components/core/defaults.js","webpack:///./node_modules/swiper/esm/components/core/core-class.js","webpack:///./node_modules/swiper/esm/components/core/modular.js","webpack:///./node_modules/swiper/esm/components/core/transition/index.js","webpack:///./node_modules/swiper/esm/components/core/transition/setTransition.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionStart.js","webpack:///./node_modules/swiper/esm/components/core/transition/transitionEnd.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/index.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/setGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/grab-cursor/unsetGrabCursor.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/index.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/appendSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/prependSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/addSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeSlide.js","webpack:///./node_modules/swiper/esm/components/core/manipulation/removeAllSlides.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/index.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/setBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/breakpoints/getBreakpoint.js","webpack:///./node_modules/swiper/esm/components/core/images/index.js","webpack:///./node_modules/swiper/esm/components/core/images/loadImage.js","webpack:///./node_modules/swiper/esm/components/core/images/preloadImages.js","webpack:///./node_modules/dom7/dom7.esm.js","webpack:///./node_modules/swiper/esm/utils/dom.js","webpack:///./node_modules/swiper/esm/utils/utils.js","webpack:///./node_modules/swiper/esm/components/virtual/virtual.js","webpack:///./node_modules/swiper/esm/components/keyboard/keyboard.js","webpack:///./node_modules/swiper/esm/components/mousewheel/mousewheel.js","webpack:///./node_modules/swiper/esm/components/navigation/navigation.js","webpack:///./node_modules/swiper/esm/components/pagination/pagination.js","webpack:///./node_modules/swiper/esm/components/scrollbar/scrollbar.js","webpack:///./node_modules/swiper/esm/components/parallax/parallax.js","webpack:///./node_modules/swiper/esm/components/zoom/zoom.js","webpack:///./node_modules/swiper/esm/components/lazy/lazy.js","webpack:///./node_modules/swiper/esm/components/controller/controller.js","webpack:///./node_modules/swiper/esm/components/a11y/a11y.js","webpack:///./node_modules/swiper/esm/components/history/history.js","webpack:///./node_modules/swiper/esm/components/hash-navigation/hash-navigation.js","webpack:///./node_modules/swiper/esm/components/autoplay/autoplay.js","webpack:///./node_modules/swiper/esm/components/effect-fade/effect-fade.js","webpack:///./node_modules/swiper/esm/components/effect-cube/effect-cube.js","webpack:///./node_modules/swiper/esm/components/effect-flip/effect-flip.js","webpack:///./node_modules/swiper/esm/components/effect-coverflow/effect-coverflow.js","webpack:///./node_modules/swiper/esm/components/thumbs/thumbs.js","webpack:///./node_modules/typo-js/typo.js","webpack:///./node_modules/marked/lib/marked.cjs","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///./resources/assets/js/front.js"],"sourcesContent":["try {\n window.$ = window.jQuery = require('jquery');\n window.SimpleMDE = require('simplemde')\n\n require('bootstrap-sass');\n\n} catch (e) {\n}\n","require('jquery-countdown');\n\nlet $clock = $('.js-countdown');\n$(document).ready(function () {\n if ($clock.length > 0) {\n let countdown = $clock.data('expire');\n\n $clock.countdown(countdown).on('update.countdown', function (event) {\n let weeks = parseInt(event.strftime('%-w'), 10);\n if (weeks > 0) {\n $clock.find('div[data-type=\"weeks\"] .__digit').html(weeks < 10 ? ((weeks === 0 ? '' : '0') + weeks) : weeks);\n $clock.find('div[data-type=\"weeks\"] .__label').html(event.strftime('Week%!w'));\n } else {\n $clock.find('div[data-type=\"weeks\"]').remove();\n }\n\n let days = parseInt(event.strftime('%-d'), 10);\n $clock.find('div[data-type=\"days\"] .__digit').html(days < 10 ? (days === 0 ? '00' : '0' + days) : days);\n $clock.find('div[data-type=\"days\"] .__label').html(event.strftime('Day%!d'));\n\n $clock.find('div[data-type=\"hours\"] .__digit').html(event.strftime('%H'));\n $clock.find('div[data-type=\"hours\"] .__label').html(event.strftime('Hour%!H'));\n\n $clock.find('div[data-type=\"minutes\"] .__digit').html(event.strftime('%M'));\n $clock.find('div[data-type=\"minutes\"] .__label').html(event.strftime('Minute%!M'));\n\n $clock.find('div[data-type=\"seconds\"] .__digit').html(event.strftime('%S'));\n $clock.find('div[data-type=\"seconds\"] .__label').html(event.strftime('Second%!S'));\n\n $clock.removeClass('hide');\n });\n }\n});\n","let $strengthIndicator = $('.js-strength-indicator');\nif ($strengthIndicator.length > 0) {\n $(document).on('keyup', 'input[name=\"password\"]', function () {\n let value = $(this).val(),\n total = 0;\n\n $strengthIndicator.removeClass(function (index, css) {\n return (css.match(/(^|\\s)__\\S+/g) || []).join(' ');\n });\n\n if (value.length >= 6) {\n total++;\n }\n\n if (/[A-Z]/.test(value)) {\n total++;\n }\n\n if (/[0-9]/.test(value)) {\n total++;\n }\n\n if (/^[a-zA-Z0-9- ]*$/.test(value) === false) {\n total++;\n }\n\n if (value.length < 6) {\n total = 0;\n $strengthIndicator.addClass('_short');\n } else {\n $strengthIndicator.removeClass('_short');\n }\n\n switch (total) {\n case 1:\n $strengthIndicator.addClass('__weak');\n break;\n case 2:\n $strengthIndicator.addClass('__bad');\n break;\n case 3:\n $strengthIndicator.addClass('__good');\n break;\n case 4:\n $strengthIndicator.addClass('__strong');\n break;\n }\n });\n}\n","let Inputmask = require('inputmask');\n\nwindow.mobileCheck = function () {\n let check = false;\n (function (a) {\n // noinspection RegExpSingleCharAlternation,RegExpRedundantEscape\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n};\n\n// region Radio and Checkbox Fix\n$('.radio-label').keypress(function (e) {\n if (e.keyCode === 0 || e.keyCode === 32) {\n $(this).find('input').prop('checked', true);\n }\n});\n$(document).on('click', '.radio-wrapper', function (e) {\n let name = $(this).find('input').attr('name')\n\n $('input[name=\"' + name + '\"]').each(function () {\n $(this).removeAttr('checked');\n });\n\n $(this).find('input').prop('checked', true);\n});\n\n$('.checkbox-label').keypress(function (e) {\n if (e.keyCode === 0 || e.keyCode === 32) {\n let $ele = $(this).find('input');\n $ele.prop('checked', !$ele.is(':checked'));\n }\n});\n// endregion\n\n// region Side Menu Toggle\n// $(document).on('click', '.js-toggle-side-menu', function (event) {\n// event.preventDefault();\n//\n// let $this = $(this);\n//\n// let $sideMenu = $('.js-side-menu');\n// $sideMenu.toggleClass('open');\n//\n// if ($sideMenu.hasClass('open')) {\n// $this.attr('aria-expanded', false)\n// .attr('tabindex', '-1');\n//\n// $sideMenu.removeAttr('aria-hidden');\n//\n// $('js-toggle-side-menu').attr('tabindex', '-1').attr('aria-hidden', true);\n// $('.mobile-link a').attr('tabindex', '-1').attr('aria-hidden', true);\n// } else {\n// $this.attr('aria-expanded', 'true')\n// .attr('tabindex', '0');\n//\n// $sideMenu.attr('aria-hidden', 'true');\n//\n// $('js-toggle-side-menu').attr('tabindex', '0').removeAttr('aria-hidden');\n// $('.mobile-link a').attr('tabindex', '0').removeAttr('aria-hidden');\n// }\n// });\n// endregion\n\n// region Modal trap keyboard focus function\nfunction trapKeyboardFocus(selector_id) {\n\n const modal = document.querySelector(selector_id); // select the modal by it's id\n if (!modal) {\n console.error('Modal does not exist: ' + selector_id);\n return;\n }\n\n // add all the elements inside modal which you want to make focusable\n const focusableElements =\n '[href], button, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\n const firstFocusableElement = modal.querySelectorAll(focusableElements)[0]; // get first element to be focused inside modal\n const focusableContent = modal.querySelectorAll(focusableElements);\n const lastFocusableElement = focusableContent[focusableContent.length - 1]; // get last element to be focused inside modal\n\n document.addEventListener('keydown', function (e) {\n let isTabPressed = e.key === 'Tab';\n\n if (!isTabPressed) {\n return;\n }\n\n if (e.shiftKey) { // if shift key pressed for shift + tab combination\n if (document.activeElement === firstFocusableElement) {\n console.log('shift');\n lastFocusableElement.focus(); // add focus for the last focusable element\n e.preventDefault();\n }\n } else { // if tab key is pressed\n if (document.activeElement === lastFocusableElement) { // if focused has reached to last focusable element then focus first focusable element after pressing tab\n console.log('tab');\n firstFocusableElement.focus(); // add focus for the first focusable element\n e.preventDefault();\n }\n }\n });\n firstFocusableElement.focus();\n}\n\n// end region\n\n//region Side Menu Toggle (hamburger on mobile)\n$(document).on('click', '.js-toggle-side-menu', function (event) {\n event.preventDefault();\n let $sideMenu = $('.js-side-menu');\n $sideMenu.toggleClass('open');\n\n if ($sideMenu.hasClass('open')) {\n\n $sideMenu.removeAttr('aria-hidden');\n // set modal content exposed to accessibility tree\n $('.js-close-menu').attr('tabindex', '0').removeAttr('aria-hidden');\n $('.js-menu-item').attr('tabindex', '0').removeAttr('aria-hidden');\n trapKeyboardFocus('#js-side-modal');\n\n } else {\n $sideMenu.find('a').attr('tabindex', '-1').attr('aria-hidden', true);\n $sideMenu.attr('aria-hidden', true);\n $('.js-accessible-logo').find('a').focus();\n }\n});\n// endregion\n\n\n// region Modal Window Panel Collapse\n$(document).on('hide.bs.collapse', '.collapse', function () {\n $('.accordion-button-icon').removeClass('minus').addClass('plus');\n}).on('show.bs.collapse', function () {\n $('.accordion-button-icon').removeClass('plus').addClass('minus');\n});\n\n$(document).on('show.bs.modal', '.modal', function () {\n $('.modal .modal-body').css({'overflow-y': 'auto', 'max-height': $(window).height() * 0.7});\n});\n// endregion\n\n// region Range Slider\nif ($('.js-input-slider').length > 0) {\n $(document).on('input', '.js-input-slider', function () {\n let self = $(this);\n let max = parseInt(self.attr('max'), 10);\n let totalValue = 0;\n let othersValue = 0;\n\n $('.js-input-slider').each(function () {\n totalValue += parseInt($(this).val(), 10);\n if ($(this).attr('name') !== self.attr('name')) {\n othersValue += parseInt($(this).val(), 10);\n }\n });\n\n let currentValue = parseInt(self.val(), 10);\n if (totalValue > max) {\n currentValue = max - othersValue;\n self.val(currentValue)\n }\n\n let $output = $(this).closest('.slider').find('output');\n\n $output.val('£' + currentValue)\n });\n}\n// endregion\n\n// region Cookie Banner\n$(document).ready(function () {\n let $cookieBarContainer = $('.cookie-banner-container');\n\n if ($cookieBarContainer.attr('data-can-open') === 'true') {\n $cookieBarContainer.addClass('open');\n\n }\n\n let $cookieBannerContainer = $('.js-cookie-consent');\n\n if ($cookieBannerContainer.attr('data-can-open') === 'true') {\n $cookieBannerContainer.addClass('open');\n }\n});\n\n// when banner is triggered & open, trap focus within for keyboard users (accessibility)\n$(document).on('click', '.js-toggle-cookie-banner', function (event) {\n event.preventDefault();\n let $cookieBarContainer = $('.js-cookie-banner-container');\n\n $cookieBarContainer.toggleClass('open');\n if ($cookieBarContainer.hasClass('open')) {\n\n $cookieBarContainer.removeAttr('aria-hidden');\n // set modal content exposed to accessibility tree\n $('.js-close-banner').attr('tabindex', '0').removeAttr('aria-hidden');\n $('.js-banner-item').attr('tabindex', '0').removeAttr('aria-hidden');\n trapKeyboardFocus('#js-cookie-banner-modal');\n\n } else {\n $cookieBarContainer.find('.js-banner-item').attr('tabindex', '-1').attr('aria-hidden', true);\n $cookieBarContainer.attr('aria-hidden', true);\n if (screen.width >= 768) {\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\n }\n else {\n document.getElementById(\"js-scrolledfocusmobile\").focus();\n }\n // $('.js-accessible-logo').find('a').focus();\n }\n\n});\n\n// change the state of switch checkbox in banner on click\n$(document).on('click', '.cookie-switch-button', function () {\n let state = $(this).attr('aria-checked');\n let isState = (state === 'true');\n $(this).attr('aria-checked', !isState)\n});\n\n// change the state of switch checkbox in banner on press enter, left or right\n$(document).on('keydown', '#analytics', function(e) {\n console.log('key code first ' + e.keyCode, e.which);\n // trigger click on enter or arrow left/right\n if((e.keyCode ? e.keyCode : e.which) === 13 || (e.keyCode ? e.keyCode : e.which) === 37 || (e.keyCode ? e.keyCode : e.which) === 39 ){\n $(this).trigger('click');\n console.log('key code second '+ e.keyCode);\n let state = $(this).attr('aria-checked');\n let isState = (state === 'true');\n $(this).attr('aria-checked', !isState)\n }\n});\n\n\n// $(document).on('click', '.js-toggle-cookie-banner', function () {\n// $('.cookie-banner-container').toggleClass('open');\n// });\n\n$(document).on('click', '.js-cookie-close', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $(this).attr('data-url'),\n dataType: 'json',\n data: {analytics: $('#analytics').is(':checked')},\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.cookie-banner-container').removeClass('open');\n $('.js-cookie-consent').css('display', 'none');\n if (screen.width >= 768) {\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\n }\n else {\n $('.js-accessible-logo').find('a').focus();\n }\n\n },\n });\n});\n// endregion\n\n$(function () {\n // region Scroll to Errors\n let $elementError = $('.form-group.has-error:first');\n if ($elementError.length > 0) {\n // scroll to error\n $('html, body').animate({\n scrollTop: $elementError.offset().top\n }, 100);\n }\n // endregion\n\n // region Scroll to message if on mobile\n if (window.mobileCheck()) {\n let $elementMessage = $('.alert');\n if ($elementMessage.length > 0) {\n $('html, body').animate({\n scrollTop: $elementMessage.offset().top\n }, 100);\n }\n }\n // endregion\n\n // region Date Picker\n let $datePickers = $('.date_picker');\n if ($datePickers.length > 0) {\n $datePickers.datepicker({\n format: \"dd-mm-yyyy\",\n todayHighlight: true,\n orientation: \"bottom auto\",\n autoclose: true\n });\n }\n // endregion\n\n Inputmask().mask($(\"input[data-inputmask]\"));\n});\n\n// region Message Scroll\nlet $chatArea = $('.js-messages');\n\n$(document).ready(function () {\n $chatArea.scrollTop($chatArea.prop('scrollHeight'));\n});\n// endregion\n\n// region Account JS\n$('.container.raf').on('click', '.js-social-whatsapp', function (event) {\n event.preventDefault();\n\n $('.js-social-form').attr('data-href', ($(this).attr('href'))).removeClass('hide');\n}).on('submit', '.js-social-form', function (event) {\n event.preventDefault();\n\n let url = $(this).attr('data-href');\n url = url.replace('[FRIENDS NUMBER]', $(this).find('input').val());\n\n window.open(url, '_blank');\n});\n// endregion\n\n// region Accordion Fix\n// $(document).on('click', '.simple-accordion .collapse-label', function (event) {\n// event.stopPropagation();\n// let $this = $(this);\n// let href;\n//\n// let parent = $this.data('parent');\n// let actives = parent && $(parent).find('.collapse.in');\n//\n// if (actives && actives.length) {\n// actives.collapse('hide');\n// }\n//\n// let target = $this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, ''); //strip for ie7\n//\n// if ($(target).length > 0) {\n// $(target).collapse('toggle');\n// }\n// });\n\n$(document).ready(function () {\n if (window.location.hash !== '' && $(window.location.hash).length > 0) {\n $(window.location.hash).find('.collapse-label').trigger('click');\n }\n});\n// endregion\n\n// region Tabs\n$(document).on('click', '.tabs > li', function () {\n $('.tabs > li > a').removeClass('active');\n $(this).find('a').addClass('active');\n});\n// endregion\n\n// region Claim Form Gift Select\n$(document).on('change', 'input[name=\"gift\"]', function () {\n // region Address\n let $addressFields = $('.js-address-fields');\n\n let addressCheck = JSON.parse($addressFields.attr('data-check'));\n let requireAddress = addressCheck[$(this).val()] === '1';\n\n $addressFields.find('input.form-control.js-required')\n .attr('aria-required', requireAddress)\n .attr('required', requireAddress);\n $('input[name=\"ra\"]').val(requireAddress ? 1 : 0);\n\n requireAddress ? $addressFields.removeClass('hide') : $addressFields.addClass('hide');\n // endregion\n\n // region Bank Fields\n let $bankFields = $('.js-bank-fields');\n\n let bankCheck = JSON.parse($bankFields.attr('data-check'));\n let requireBank = bankCheck[$(this).val()] === '1';\n\n $bankFields.find('input.form-control.js-required')\n .attr('aria-required', requireBank)\n .attr('required', requireBank);\n $('input[name=\"ba\"]').val(requireBank ? 1 : 0);\n\n requireBank ? $bankFields.removeClass('hide') : $bankFields.addClass('hide');\n // endregion\n});\n// endregion\n\n// region Address Select\nif ($('.js-get-address-list').length > 0) {\n $(document).on('click', '.js-get-address-list', function (event) {\n event.preventDefault();\n\n let addressType = $(this).attr('data-type');\n\n let postcode = $('[name=\"address[' + addressType + '][postcode]\"]').val();\n\n if (postcode === '') {\n return;\n }\n\n let $addressListField = $('#address_list_' + addressType);\n\n $.ajax({\n method: 'GET',\n dataType: 'json',\n data: {postcode: postcode},\n url: $(this).attr('data-url'),\n success: function (response) {\n let option = $('')\n .val('')\n .attr('data-all', '')\n .html('Please Select');\n\n $addressListField.find('option').remove();\n $addressListField.append(option);\n $.each(response, function () {\n let display = this.address_1\n + (this.address_2 !== '' && this.address_2 !== null ? ', ' + this.address_2 : '')\n + ', ' + this.city_town;\n\n let option = $('')\n .val(this.id)\n .attr('data-all', JSON.stringify(this))\n .html(display);\n\n $addressListField.append(option);\n $addressListField.closest('.js-address-list').fadeIn();\n });\n\n $addressListField.prop('disabled', false);\n }\n });\n });\n\n $(document).on('change', '.js-address-select', function () {\n if ($(this).find('option:selected').attr('data-all') !== '') {\n let address = JSON.parse($(this).find('option:selected').attr('data-all'));\n\n let addressType = $(this).attr('data-type');\n\n $('[name=\"address[' + addressType + '][address_1]\"]').val(address.address_1);\n $('[name=\"address[' + addressType + '][address_2]\"]').val(address.address_2);\n $('[name=\"address[' + addressType + '][city_town]\"]').val(address.city_town);\n $('[name=\"address[' + addressType + '][county]\"]').val(address.county);\n $('[name=\"address[' + addressType + '][country]\"]').val(address.country);\n }\n });\n}\n// endregion\n\n// region Accessibility\nfunction validateEmail(email) {\n // noinspection RegExpRedundantEscape\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n}\n\nfunction validateFormField() {\n let $this = $(this);\n let value = $this.val().trim();\n let id = $this.attr('id');\n let isRequired = $this[0].hasAttribute('aria-required') && $this.attr('aria-required') === 'true';\n let $confirmation = $('#' + id.replace('_confirmation', ''));\n let $formGroup = $this.closest('.form-group');\n let $errorMessage = $formGroup.find('div[aria-live] p');\n\n let errorMessage = '';\n let isInvalid = false;\n\n if (isRequired && value === '') {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-required');\n } else if ($this.attr('type') === 'email' && !validateEmail(value)) {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-email');\n } else if ($confirmation.length > 0 && $confirmation.val().trim() !== value) {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-confirm');\n } else if ($this[0].hasAttribute('data-inputmask') && !Inputmask().mask('#' + id).isComplete()) {\n isInvalid = true;\n errorMessage = $('.js-accessible').attr('data-inputmask');\n }\n\n $this.attr('aria-invalid', isInvalid);\n\n if (isInvalid) {\n $formGroup.removeClass('has-success').addClass('has-error');\n } else {\n $formGroup.removeClass('has-error').addClass('has-success');\n }\n\n $errorMessage.text(errorMessage);\n}\n\n$(document).on('focusout', 'input:not([aria-disable=\"true\"])', validateFormField);\n$(document).on('focusout', 'select:not([aria-disable=\"true\"])', validateFormField);\n// endregion\n\n// region Accessibility BackToTop scroll to top of the page with focus\n$(document).on('click', '#js-scroll-up', function(e) {\n e.preventDefault();\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n setTimeout(function () {\n if (screen.width >= 768) {\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\n }\n else {\n // $('.js-accessible-hamburger').find('a').focus();\n document.getElementById(\"js-scrolledfocusmobile\").focus();\n }\n }, 1)\n\n});\n// endregion\n","$(document).ready(function () {\n let $cookieContainer = $('.js-cookie-modal-container');\n\n if ($cookieContainer.attr('data-can-open') === 'true') {\n $cookieContainer.addClass('open');\n $('body').addClass('open');\n trapKeyboardFocus('#js-cookie-banner-modal');\n }\n});\n\n$(document).on('click', '.js-cookie-details', function (event) {\n event.preventDefault();\n\n let $cookieBarContainer = $('.js-cookie-sidebar');\n $cookieBarContainer.removeClass('hide');\n $('.js-cookie-modal-container').addClass('show-sidebar');\n $('.cookie-modal-overlay').css('z-index', 100);\n\n\n // when banner is triggered & open, trap focus within for keyboard users (accessibility)\n $cookieBarContainer.toggleClass('open');\n if ($cookieBarContainer.hasClass('open')) {\n\n $cookieBarContainer.removeAttr('aria-hidden');\n // set modal content exposed to accessibility tree\n $('.js-close-banner').attr('tabindex', '0').removeAttr('aria-hidden');\n $('.js-banner-item').attr('tabindex', '0').removeAttr('aria-hidden');\n trapKeyboardFocus('#js-cookie-banner-sidebar');\n } else {\n $cookieBarContainer.find('.js-banner-item').attr('tabindex', '-1').attr('aria-hidden', true);\n $cookieBarContainer.attr('aria-hidden', true);\n if (screen.width >= 768) {\n document.getElementById(\"js-scrolledfocusdesktop\").focus();\n } else {\n document.getElementById(\"js-scrolled-focus-mobile\").focus();\n }\n }\n});\n\n$(document).on('click', '.js-cookie-details-close', function (event) {\n event.preventDefault();\n\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('show-sidebar');\n});\n\n$(document).on('click', '.js-cookie-sidebar-toggle', function (event) {\n event.preventDefault();\n\n let $this = $(this);\n\n let value = $this.attr('data-value');\n\n if (value === '0') {\n $this.removeClass('toggle-off');\n $this.addClass('toggle-on');\n $this.attr('data-value', 1);\n } else {\n $this.addClass('toggle-off');\n $this.removeClass('toggle-on');\n $this.attr('data-value', 0);\n }\n});\n\n$(document).on('click', '.cookie-sidebar-toggle', function () {\n let state = $(this).attr('aria-checked');\n let isState = (state === 'true');\n $(this).attr('aria-checked', !isState);\n $(this).attr('data-value', !isState ? 1 : 0);\n});\n\n// change the state of switch checkbox in sidebar on press enter, left or right\n$(document).on('keyup', '.cookie-sidebar-toggle', function (e) {\n if ((e.keyCode ? e.keyCode : e.which) === 13 || (e.keyCode ? e.keyCode : e.which) === 37 || (e.keyCode ? e.keyCode : e.which) === 39) {\n $(this).trigger('click');\n }\n});\n\n$(document).on('click', '.js-cookie-accept-all', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $('.js-cookie-url').attr('data-url'),\n dataType: 'json',\n data: {all: 'true'},\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('open');\n $('body').removeClass('open');\n $('.js-accessible-logo').find('a').focus();\n },\n });\n});\n\n$(document).on('click', '.js-cookie-save', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $('.js-cookie-url').attr('data-url'),\n dataType: 'json',\n data: {\n strictly_necessary: $('.js-cookie-sidebar-toggle[data-category=\"strictly_necessary\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n first_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"first_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n third_party_performance: $('.js-cookie-sidebar-toggle[data-category=\"third_party_performance\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n functional: $('.js-cookie-sidebar-toggle[data-category=\"functional\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n targeting: $('.js-cookie-sidebar-toggle[data-category=\"targeting\"][data-value=\"1\"]').length > 0 ? 'enabled' : 'disabled',\n },\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('open');\n $('body').removeClass('open');\n $('.js-accessible-logo').find('a').focus();\n },\n });\n});\n\n$(document).on('click', '.js-cookie-reject', function (event) {\n event.preventDefault();\n\n $.ajax({\n method: 'get',\n url: $('.js-cookie-url').attr('data-url'),\n dataType: 'json',\n data: {\n strictly_necessary: 'disabled',\n first_party_performance: 'disabled',\n third_party_performance: 'disabled',\n functional: 'disabled',\n targeting: 'disabled',\n },\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')},\n success: function () {\n $('.js-cookie-sidebar').addClass('hide');\n $('.js-cookie-modal-container').removeClass('open');\n $('body').removeClass('open');\n $('.js-accessible-logo').find('a').focus();\n },\n });\n});\n\n$(document).on('click', '.js-toggle-cookie-banner', function (event) {\n event.preventDefault();\n $('.js-cookie-modal-container').addClass('open');\n\n if ($('.js-cookie-sidebar').hasClass(\"hide\")) {\n $('.cookie-modal-overlay').css('z-index', 90);\n }\n});\n\nfunction toggleActive(elem, button) {\n if (elem.classList.contains('active')) {\n elem.classList.remove('active');\n button.ariaExpanded = false;\n } else {\n elem.classList.add('active');\n button.ariaExpanded = true;\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n document.querySelectorAll('.ck-accordion-wrapper').forEach(elem => {\n let header = elem.querySelector('.ck-accordion-trigger');\n let chevron = elem.querySelector('.ck-accordion-header-chevron');\n let description = elem.querySelector('.ck-accordion-header-desc');\n let button = elem.querySelector('.ck-accordion-trigger');\n\n header.addEventListener('click', () => toggleActive(elem, button));\n chevron.addEventListener('click', () => toggleActive(elem, button));\n description.addEventListener('click', () => toggleActive(elem, button));\n });\n});\n","//from Node\nrequire('js.cookie');\nrequire('bootstrap-datepicker');\nrequire('swiper');\n\n//from local\nrequire('./radio');\nrequire('../common/password-strength');\nrequire('../common/countdown');\nrequire('./base');\nrequire('./swiper-setup');\nrequire('./taketime');\nrequire('./cookie-banner');\n\n// Enter the JS for your build here\nrequire('./custom');\n","let KEYCODE = {\n DOWN: 40,\n LEFT: 37,\n RIGHT: 39,\n SPACE: 32,\n UP: 38\n};\n\nwindow.addEventListener('load', function () {\n let radioButtons = document.querySelectorAll('[role=radio]');\n\n for (let i = 0; i < radioButtons.length; i++) {\n let rb = radioButtons[i];\n\n rb.addEventListener('click', clickRadioGroup);\n rb.addEventListener('keydown', keyDownRadioGroup);\n rb.addEventListener('focus', focusRadioButton);\n rb.addEventListener('blur', blurRadioButton);\n }\n});\n\nfunction firstRadioButton(node) {\n\n let first = node.parentNode.firstChild;\n\n while (first) {\n if (first.nodeType === Node.ELEMENT_NODE) {\n if (first.getAttribute(\"role\") === 'radio') return first;\n }\n first = first.nextSibling;\n }\n\n return null;\n}\n\nfunction lastRadioButton(node) {\n let last = node.parentNode.lastChild;\n\n while (last) {\n if (last.nodeType === Node.ELEMENT_NODE) {\n if (last.getAttribute(\"role\") === 'radio') return last;\n }\n last = last.previousSibling;\n }\n\n return last;\n}\n\nfunction nextRadioButton(node) {\n let next = node.nextSibling;\n\n while (next) {\n if (next.nodeType === Node.ELEMENT_NODE) {\n if (next.getAttribute(\"role\") === 'radio') return next;\n }\n next = next.nextSibling;\n }\n\n return null;\n}\n\nfunction previousRadioButton(node) {\n\n let prev = node.previousSibling;\n\n while (prev) {\n if (prev.nodeType === Node.ELEMENT_NODE) {\n if (prev.getAttribute(\"role\") === 'radio') return prev;\n }\n prev = prev.previousSibling;\n }\n\n return null;\n}\n\nfunction setRadioButton(node, state) {\n if (state === 'true') {\n node.tabIndex = 0;\n node.setAttribute('aria-checked', 'true');\n node.focus();\n $(node).find('input').trigger('click');\n $(node).find('input').attr('checked', 'checked');\n } else {\n node.setAttribute('aria-checked', 'false');\n $(node).find('input').attr('checked', false);\n node.tabIndex = -1;\n }\n}\n\nfunction clickRadioGroup(event) {\n let type = event.type;\n\n if (type === 'click') {\n // If either enter or space is pressed, execute the funtion\n\n let node = event.currentTarget;\n\n let radioButton = firstRadioButton(node);\n\n while (radioButton) {\n setRadioButton(radioButton, \"false\");\n radioButton = nextRadioButton(radioButton);\n }\n\n setRadioButton(node, \"true\");\n\n event.preventDefault();\n event.stopPropagation();\n }\n}\n\nfunction keyDownRadioGroup(event) {\n let type = event.type;\n let next = false;\n\n if (type === \"keydown\") {\n let node = event.currentTarget;\n\n switch (event.keyCode) {\n case KEYCODE.DOWN:\n case KEYCODE.RIGHT:\n next = nextRadioButton(node);\n if (!next) next = firstRadioButton(node); //if node is the last node, node cycles to first.\n break;\n\n case KEYCODE.UP:\n case KEYCODE.LEFT:\n next = previousRadioButton(node);\n if (!next) next = lastRadioButton(node); //if node is the last node, node cycles to first.\n break;\n\n case KEYCODE.SPACE:\n next = node;\n break;\n }\n\n if (next) {\n let radioButton = firstRadioButton(node);\n\n while (radioButton) {\n setRadioButton(radioButton, \"false\");\n radioButton = nextRadioButton(radioButton);\n }\n\n setRadioButton(next, \"true\");\n\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\nfunction focusRadioButton(event) {\n event.currentTarget.className += ' focus';\n}\n\nfunction blurRadioButton(event) {\n event.currentTarget.className = event.currentTarget.className.replace(' focus', '');\n}\n","import Swiper from 'swiper';\n\nfunction generateUUID() { // Public Domain/MIT\n var d = new Date().getTime();\n if (typeof performance !== 'undefined' && typeof performance.now === 'function'){\n d += performance.now(); //use high-precision timer if available\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n}\n\nvar $swiperElements = $('.swiper-container');\nif($swiperElements.length > 0) {\n $swiperElements.each(function() {\n let uuid = generateUUID();\n let maxSlides = $(this)[0].hasAttribute('data-slides') ? parseInt($(this).attr('data-slides'), 10) : 4;\n $(this).attr('data-id', uuid);\n\n var swiper = new Swiper($(this)[0], {\n slidesPerView: maxSlides,\n spaceBetween: 15,\n autoHeight: true,\n loop: true,\n navigation: {\n nextEl: '[data-id=\"'+uuid+'\"] .swiper-button-next',\n prevEl: '[data-id=\"'+uuid+'\"] .swiper-button-prev'\n },\n breakpoints: {\n 1200: {\n slidesPerView: maxSlides,\n spaceBetween: 15\n },\n 1024: {\n slidesPerView: 4,\n spaceBetween: 15\n },\n 768: {\n slidesPerView: 3,\n spaceBetween: 15\n },\n 480: {\n slidesPerView: 2,\n spaceBetween: 15\n },\n 320: {\n slidesPerView: 1,\n spaceBetween: 15\n }\n }\n });\n\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-prev', function() {\n swiper.slidePrev();\n });\n\n $(document).on('click', '[data-id=\"'+uuid+'\"] .swiper-button-next', function() {\n swiper.slideNext();\n });\n });\n}\n\n$(document).ready(function() {\n $('.lazyload-bg').each(function() {\n var lazy = $(this);\n var src = lazy.attr('data-src');\n\n lazy.css('background-image', 'url(\"' + src + '\")');\n lazy.removeAttr('data-src');\n lazy.removeClass('lazyload-bg');\n });\n});\n","// region Offer Terms Modal Button\n$(document).on('click', '.js-offer-modal-btn', function (event) {\n event.preventDefault();\n\n let $this = $(this);\n let modalElement = $('.js-offer-modal');\n\n $.ajax({\n method: 'get',\n dataType: 'json',\n url: $this.attr('href'),\n success: function (response) {\n modalElement.html('');\n\n if (response.success) {\n modalElement.append(response.content);\n }\n\n modalElement.find('.modal').modal('show');\n }\n });\n});\n// endregion\n\nfunction setQueryStringParameter(name, value) {\n const params = new URLSearchParams(window.location.search);\n params.set(name, value);\n window.history.replaceState({}, \"\", decodeURIComponent(`${window.location.pathname}?${params}`));\n}\n\n/* region Select/Remove Filter */\n$(document).on('click', '.facets .js-toggle-filter, .js-search-page .js-toggle-filter, .js-search-page .js-remove-filter', function () {\n let url = $(this).attr('data-url');\n\n if (!$(this).hasClass('disabled')) {\n if (url) {\n window.location = url;\n }\n }\n});\n/* endregion */\n\n/* region Toggle Filter Children */\n$(document).on('click', '.has-children:not(.checkbox-container)', function () {\n $(this).toggleClass('active').next().slideToggle();\n});\n/* endregion */\n\n// region Sort Select\n$(document).on('change', 'select.sortBy', function () {\n let url = $(this).val();\n if (url) {\n window.location = url;\n }\n});\n// endregion\n\n// region Load More - Search Page\n$(document).on('click', '.js-load-more', function () {\n let $this = $(this);\n\n $('.loading-icon').show();\n\n $.ajax({\n method: 'GET',\n dataType: 'json',\n url: $(this).attr('data-url'),\n success: function (response) {\n if (response.data) {\n $('.js-current-total').text(response.count);\n $this.attr('data-url', response.next_link)\n\n $('.loading-icon').hide();\n\n // region Remove focus\n $this.focus(function () {\n this.blur();\n });\n // endregion\n\n $('.js-list-results').append(response.data);\n\n // region Call lazyload again\n $('.lazyload-bg').each(function () {\n let lazy = $(this);\n let src = lazy.attr('data-src');\n lazy.css('background-image', 'url(\"' + src + '\")');\n lazy.removeAttr('data-src');\n lazy.removeClass('lazyload-bg');\n });\n // endregion\n\n setQueryStringParameter('page', response.current_page);\n\n if (response.next_link !== '') {\n $this.remove();\n }\n } else {\n $this.remove();\n }\n }\n });\n});\n// endregion\n\n// region Top search - suggestions dropdown\nlet f = -1;\nlet xhr;\n\n$(document).on('keyup paste', '.js-search-field', function (event) {\n if (event.keyCode === 40 || event.keyCode === 38 || event.keyCode === 13 || event.keyCode === 39 || event.keyCode === 37) {\n event.preventDefault();\n return false;\n }\n let $form = $(this).closest('form');\n let suggestionList = $form.find('.js-suggestions-list');\n\n let searchTerm = $(this).val().replace('[^a-zA-Z0-9\\'\\s]', '');\n let searchType = $form.find('.search-type');\n\n if (xhr) {\n xhr.abort();\n }\n\n xhr = $.ajax({\n method: 'GET',\n dataType: 'json',\n data: {s: searchTerm},\n url: $(this).attr('data-url'),\n success: function (response) {\n if (response.data.length > 0) {\n let html = '';\n $(response.data).each(function () {\n html += this.list_html;\n });\n suggestionList.html(html);\n suggestionList.addClass('active').show();\n } else {\n suggestionList.removeClass('active').html('').hide();\n f = -1;\n }\n\n searchType.val(response.type);\n\n // Postcode\n if (response.type === 'postcode' && response.coordinates.lat && response.coordinates.lng) {\n $('input[name=\"coordinates\"]').val(response.coordinates.lat + ',' + response.coordinates.lng);\n }\n }\n });\n\n})\n .on('keydown', '.js-search-field', function (e) {\n let $form = $(this).closest('form');\n let suggestionList = $form.find('.js-suggestions-list');\n\n /*If the arrow DOWN key*/\n if (e.keyCode === 40) {\n f++;\n currentItem(suggestionList);\n } else if (e.keyCode === 38) {\n /*If the arrow UP key is pressed*/\n f--;\n currentItem(suggestionList);\n } else if (e.keyCode === 13) {\n /*If the ENTER key is pressed*/\n e.preventDefault();\n\n if (f > -1) {\n /*and simulate a click on the \"active\" item:*/\n suggestionList.find('.item.active').trigger('click');\n } else {\n $('.js-search-btn').trigger('click');\n }\n }\n });\n\n// Hide the auto complete box\n$(document).on('click', function () {\n let suggestionList = $('.js-suggestions-list');\n\n if (suggestionList.find('.item').length && suggestionList.hasClass('active')) {\n suggestionList.empty();\n f = -1;\n suggestionList.hide();\n }\n});\n\nfunction currentItem(element) {\n element.find('.item.active').removeClass('active');\n let t = element.find('.item').length;\n if (f >= t) {\n f = 0;\n }\n\n if (f < 0) {\n f = (t - 1);\n }\n\n element.find('.item').eq(f).addClass('active').focus();\n}\n\nfunction menu_item_link(element) {\n window.location = $(element).attr('data-url');\n}\n\n$(document).on('click', '.item.active', function () {\n menu_item_link(this);\n});\n\n$(document).on('click', '.js-suggestions-list .item', function () {\n menu_item_link(this);\n});\n\n// endregion\n\n$(document).on('click', '.js-filters-modal', function () {\n $.ajax({\n method: 'GET',\n dataType: 'json',\n url: $('.js-filters-modal-container').attr('data-url'),\n data: {route: $('.js-filters-modal-container').attr('data-route')},\n success: function (response) {\n $('.js-filters-modal-container').attr('data-url', response.facetUrl);\n $('body').addClass('modal-open');\n\n let $filterModalContainer = $('.js-filters-modal-container');\n $filterModalContainer.html(response.facet);\n $filterModalContainer.css({display: 'block', height: $(window).height()});\n }\n });\n});\n\n$(document).on('click', '.js-close-filter-modal', function (event) {\n event.preventDefault();\n\n $('body').removeClass('modal-open');\n\n let $filterModalContainer = $('.js-filters-modal-container');\n $filterModalContainer.html('');\n $filterModalContainer.css({display: 'none', height: $(window).height()});\n});\n\n// #########################################################\n\n// Element\nlet $localSearchMap = $('.local-search-map');\nlet $zeroAlert = $('.zero-alert');\nlet $redraw = $('#redraw');\n\n// Init Vars\nlet markers, bounds, infoWindow, map, lat, lng, coords;\n\nfunction initMap() {\n // from initial page load\n lat = parseFloat($('#local-search-map input[name=\"latitude\"]').val());\n lng = parseFloat($('#local-search-map input[name=\"longitude\"]').val());\n\n // make google maps friendly\n coords = {lat: lat, lng: lng};\n\n $zeroAlert.hide();\n\n if ($localSearchMap.length > 0) {\n bounds = new google.maps.LatLngBounds();\n infoWindow = new google.maps.InfoWindow();\n\n map = new google.maps.Map($localSearchMap[0], {\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n center: coords,\n zoom: 12,\n styles: [\n {\n featureType: \"poi\",\n elementType: \"labels\",\n stylers: [\n {\n visibility: \"off\"\n }\n ]\n }\n ]\n });\n\n if (\"geolocation\" in navigator) {\n navigator.geolocation.getCurrentPosition(function (position) {\n let pos = {\n lat: position.coords.latitude,\n lng: position.coords.longitude\n };\n\n $('#local-search-map input[name=\"lat\"]').val(position.coords.latitude)\n $('#local-search-map input[name=\"lng\"]').val(position.coords.longitude)\n map.setCenter(pos);\n // submitRequest();\n }, showGeoError);\n }\n\n addSearchedMarker(coords);\n\n // region Event Listener\n google.maps.event.addListener(map, 'idle', function () {\n $('#sw-lat').val(map.getBounds().getSouthWest().lat());\n $('#sw-lng').val(map.getBounds().getSouthWest().lng());\n $('#ne-lat').val(map.getBounds().getNorthEast().lat());\n $('#ne-lng').val(map.getBounds().getNorthEast().lng());\n\n // some events do not require a reload of data (eg. infoWindow popup that moves the map)\n if (parseInt($redraw.val(), 10) === 1) {\n submitRequest();\n }\n\n // in case we set not to redraw last time around, set it back to true\n $redraw.val(1);\n });\n // endregion\n }\n}\n\nwindow.initMap = initMap;\n\n/**\n * This is the searched location that stays the same until another search is performed\n * @param {*} coords\n */\nfunction addSearchedMarker(coords) {\n let searched = new google.maps.Marker({\n position: coords\n });\n searched.setMap(map);\n}\n\nfunction setIconsOnTheMap(response) {\n if (markers !== undefined) {\n for (let i = 0; i < markers.length; i++) {\n markers[i].setMap(null);\n }\n }\n\n let locationsArray = response.locations;\n\n // region Sneaky call to show hide zero results alert\n if (locationsArray.length === 0) {\n $zeroAlert.show();\n } else {\n $zeroAlert.hide();\n }\n // endregion\n\n let coordinates;\n\n markers = locationsArray.map(function (location, i) {\n coordinates = {lat: parseFloat(location.latitude), lng: parseFloat(location.longitude)};\n\n let icon = {\n url: location.images.icon,\n scaledSize: new google.maps.Size(32, 32),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(16, 16)\n };\n\n let marker = new google.maps.Marker({position: coordinates, icon: icon});\n\n // region Click Event\n google.maps.event.addListener(marker, 'click', (function (marker) {\n return function () {\n infoWindow.setContent(location.block);\n infoWindow.open(map, marker);\n $('#redraw').val(0);\n }\n })(marker, i));\n // endregion\n\n return marker;\n });\n\n for (let l = 0; l < markers.length; l++) {\n markers[l].setMap(map);\n }\n\n $('.js-results-count').html(markers.length);\n}\n\n/**\n * used to get data from the server and update the map and filters\n */\nfunction submitRequest(url) {\n $('#loading-map').show();\n\n // region Build URL\n url = url === undefined ? $('.js-map-search').attr('data-url') : url;\n\n if (url.indexOf('lat') === -1) {\n if (url.indexOf('?') !== -1) {\n url += '&';\n } else {\n url += '?';\n }\n\n url += 'lat=' + $('input[name=\"latitude\"]').val();\n url += '&lng=' + $('input[name=\"longitude\"]').val();\n url += '&ne_lat=' + $('input[name=\"ne_latitude\"]').val();\n url += '&ne_lng=' + $('input[name=\"ne_longitude\"]').val();\n url += '&sw_lat=' + $('input[name=\"sw_latitude\"]').val();\n url += '&sw_lng=' + $('input[name=\"sw_longitude\"]').val();\n url += '&area=' + $('input[name=\"area\"]').val();\n }\n // endregion\n\n // region Make request to get map data\n $.ajax({\n method: 'get',\n url: url,\n dataType: 'json',\n headers: {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n 'Content-Type': 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n },\n success: function (response) {\n // update the map and icons\n setIconsOnTheMap(response);\n\n // update the side menu filters\n if(response.filterBar !== '') {\n $('#filter-items').html(response.filterBar);\n $('.filter-bar').removeClass('hide');\n }\n\n // take down the loading div\n $('#loading-map').hide();\n },\n error: function (xhr, ajaxOptions, thrownError) {\n // take down the loading div\n $('#loading-map').hide();\n }\n });\n // endregion\n}\n\n// TODO Show error and don't redirect\nfunction showGeoError(error, redirectTo) {\n redirectTo = redirectTo === undefined ? null : redirectTo;\n\n let x;\n switch (error.code) {\n case error.PERMISSION_DENIED:\n x = \"User denied the request for Geolocation.\";\n break;\n case error.POSITION_UNAVAILABLE:\n x = \"Location information is unavailable.\";\n break;\n case error.TIMEOUT:\n x = \"The request to get user location timed out.\";\n break;\n case error.UNKNOWN_ERROR:\n x = \"An unknown error occurred.\";\n break;\n }\n // console.log(x);\n if (redirectTo === 'local-offers') {\n return window.location = localOffersUrl;\n }\n}\n\n$(document).on('click', '.js-local-search-map .js-toggle-filter, .js-local-search-map .js-remove-filter', function () {\n let url = $(this).attr('data-url');\n\n if (!$(this).hasClass('disabled')) {\n if (url) {\n $('.js-map-search').attr('data-url', url);\n\n submitRequest($(this).attr('data-url'));\n }\n }\n});\n","/*!\n * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)\n *\n * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)\n */\n\n(function(factory){\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n}(function($, undefined){\n\tfunction UTCDate(){\n\t\treturn new Date(Date.UTC.apply(Date, arguments));\n\t}\n\tfunction UTCToday(){\n\t\tvar today = new Date();\n\t\treturn UTCDate(today.getFullYear(), today.getMonth(), today.getDate());\n\t}\n\tfunction isUTCEquals(date1, date2) {\n\t\treturn (\n\t\t\tdate1.getUTCFullYear() === date2.getUTCFullYear() &&\n\t\t\tdate1.getUTCMonth() === date2.getUTCMonth() &&\n\t\t\tdate1.getUTCDate() === date2.getUTCDate()\n\t\t);\n\t}\n\tfunction alias(method, deprecationMsg){\n\t\treturn function(){\n\t\t\tif (deprecationMsg !== undefined) {\n\t\t\t\t$.fn.datepicker.deprecated(deprecationMsg);\n\t\t\t}\n\n\t\t\treturn this[method].apply(this, arguments);\n\t\t};\n\t}\n\tfunction isValidDate(d) {\n\t\treturn d && !isNaN(d.getTime());\n\t}\n\n\tvar DateArray = (function(){\n\t\tvar extras = {\n\t\t\tget: function(i){\n\t\t\t\treturn this.slice(i)[0];\n\t\t\t},\n\t\t\tcontains: function(d){\n\t\t\t\t// Array.indexOf is not cross-browser;\n\t\t\t\t// $.inArray doesn't work with Dates\n\t\t\t\tvar val = d && d.valueOf();\n\t\t\t\tfor (var i=0, l=this.length; i < l; i++)\n // Use date arithmetic to allow dates with different times to match\n if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000*60*60*24)\n\t\t\t\t\t\treturn i;\n\t\t\t\treturn -1;\n\t\t\t},\n\t\t\tremove: function(i){\n\t\t\t\tthis.splice(i,1);\n\t\t\t},\n\t\t\treplace: function(new_array){\n\t\t\t\tif (!new_array)\n\t\t\t\t\treturn;\n\t\t\t\tif (!$.isArray(new_array))\n\t\t\t\t\tnew_array = [new_array];\n\t\t\t\tthis.clear();\n\t\t\t\tthis.push.apply(this, new_array);\n\t\t\t},\n\t\t\tclear: function(){\n\t\t\t\tthis.length = 0;\n\t\t\t},\n\t\t\tcopy: function(){\n\t\t\t\tvar a = new DateArray();\n\t\t\t\ta.replace(this);\n\t\t\t\treturn a;\n\t\t\t}\n\t\t};\n\n\t\treturn function(){\n\t\t\tvar a = [];\n\t\t\ta.push.apply(a, arguments);\n\t\t\t$.extend(a, extras);\n\t\t\treturn a;\n\t\t};\n\t})();\n\n\n\t// Picker object\n\n\tvar Datepicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\n\t\tthis._events = [];\n\t\tthis._secondaryEvents = [];\n\n\t\tthis._process_options(options);\n\n\t\tthis.dates = new DateArray();\n\t\tthis.viewDate = this.o.defaultViewDate;\n\t\tthis.focusDate = null;\n\n\t\tthis.element = $(element);\n\t\tthis.isInput = this.element.is('input');\n\t\tthis.inputField = this.isInput ? this.element : this.element.find('input');\n\t\tthis.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;\n\t\tif (this.component && this.component.length === 0)\n\t\t\tthis.component = false;\n\t\tthis.isInline = !this.component && this.element.is('div');\n\n\t\tthis.picker = $(DPGlobal.template);\n\n\t\t// Checking templates and inserting\n\t\tif (this._check_template(this.o.templates.leftArrow)) {\n\t\t\tthis.picker.find('.prev').html(this.o.templates.leftArrow);\n\t\t}\n\n\t\tif (this._check_template(this.o.templates.rightArrow)) {\n\t\t\tthis.picker.find('.next').html(this.o.templates.rightArrow);\n\t\t}\n\n\t\tthis._buildEvents();\n\t\tthis._attachEvents();\n\n\t\tif (this.isInline){\n\t\t\tthis.picker.addClass('datepicker-inline').appendTo(this.element);\n\t\t}\n\t\telse {\n\t\t\tthis.picker.addClass('datepicker-dropdown dropdown-menu');\n\t\t}\n\n\t\tif (this.o.rtl){\n\t\t\tthis.picker.addClass('datepicker-rtl');\n\t\t}\n\n\t\tif (this.o.calendarWeeks) {\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')\n\t\t\t\t.attr('colspan', function(i, val){\n\t\t\t\t\treturn Number(val) + 1;\n\t\t\t\t});\n\t\t}\n\n\t\tthis._process_options({\n\t\t\tstartDate: this._o.startDate,\n\t\t\tendDate: this._o.endDate,\n\t\t\tdaysOfWeekDisabled: this.o.daysOfWeekDisabled,\n\t\t\tdaysOfWeekHighlighted: this.o.daysOfWeekHighlighted,\n\t\t\tdatesDisabled: this.o.datesDisabled\n\t\t});\n\n\t\tthis._allow_update = false;\n\t\tthis.setViewMode(this.o.startView);\n\t\tthis._allow_update = true;\n\n\t\tthis.fillDow();\n\t\tthis.fillMonths();\n\n\t\tthis.update();\n\n\t\tif (this.isInline){\n\t\t\tthis.show();\n\t\t}\n\t};\n\n\tDatepicker.prototype = {\n\t\tconstructor: Datepicker,\n\n\t\t_resolveViewName: function(view){\n\t\t\t$.each(DPGlobal.viewModes, function(i, viewMode){\n\t\t\t\tif (view === i || $.inArray(view, viewMode.names) !== -1){\n\t\t\t\t\tview = i;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn view;\n\t\t},\n\n\t\t_resolveDaysOfWeek: function(daysOfWeek){\n\t\t\tif (!$.isArray(daysOfWeek))\n\t\t\t\tdaysOfWeek = daysOfWeek.split(/[,\\s]*/);\n\t\t\treturn $.map(daysOfWeek, Number);\n\t\t},\n\n\t\t_check_template: function(tmp){\n\t\t\ttry {\n\t\t\t\t// If empty\n\t\t\t\tif (tmp === undefined || tmp === \"\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// If no html, everything ok\n\t\t\t\tif ((tmp.match(/[<>]/g) || []).length <= 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t// Checking if html is fine\n\t\t\t\tvar jDom = $(tmp);\n\t\t\t\treturn jDom.length > 0;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t_process_options: function(opts){\n\t\t\t// Store raw options for reference\n\t\t\tthis._o = $.extend({}, this._o, opts);\n\t\t\t// Processed options\n\t\t\tvar o = this.o = $.extend({}, this._o);\n\n\t\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t\t// fallback to 2 letter code eg \"de\"\n\t\t\tvar lang = o.language;\n\t\t\tif (!dates[lang]){\n\t\t\t\tlang = lang.split('-')[0];\n\t\t\t\tif (!dates[lang])\n\t\t\t\t\tlang = defaults.language;\n\t\t\t}\n\t\t\to.language = lang;\n\n\t\t\t// Retrieve view index from any aliases\n\t\t\to.startView = this._resolveViewName(o.startView);\n\t\t\to.minViewMode = this._resolveViewName(o.minViewMode);\n\t\t\to.maxViewMode = this._resolveViewName(o.maxViewMode);\n\n\t\t\t// Check view is between min and max\n\t\t\to.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));\n\n\t\t\t// true, false, or Number > 0\n\t\t\tif (o.multidate !== true){\n\t\t\t\to.multidate = Number(o.multidate) || false;\n\t\t\t\tif (o.multidate !== false)\n\t\t\t\t\to.multidate = Math.max(0, o.multidate);\n\t\t\t}\n\t\t\to.multidateSeparator = String(o.multidateSeparator);\n\n\t\t\to.weekStart %= 7;\n\t\t\to.weekEnd = (o.weekStart + 6) % 7;\n\n\t\t\tvar format = DPGlobal.parseFormat(o.format);\n\t\t\tif (o.startDate !== -Infinity){\n\t\t\t\tif (!!o.startDate){\n\t\t\t\t\tif (o.startDate instanceof Date)\n\t\t\t\t\t\to.startDate = this._local_to_utc(this._zero_time(o.startDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.startDate = -Infinity;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (o.endDate !== Infinity){\n\t\t\t\tif (!!o.endDate){\n\t\t\t\t\tif (o.endDate instanceof Date)\n\t\t\t\t\t\to.endDate = this._local_to_utc(this._zero_time(o.endDate));\n\t\t\t\t\telse\n\t\t\t\t\t\to.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\to.endDate = Infinity;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\to.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]);\n\t\t\to.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]);\n\n\t\t\to.datesDisabled = o.datesDisabled||[];\n\t\t\tif (!$.isArray(o.datesDisabled)) {\n\t\t\t\to.datesDisabled = o.datesDisabled.split(',');\n\t\t\t}\n\t\t\to.datesDisabled = $.map(o.datesDisabled, function(d){\n\t\t\t\treturn DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);\n\t\t\t});\n\n\t\t\tvar plc = String(o.orientation).toLowerCase().split(/\\s+/g),\n\t\t\t\t_plc = o.orientation.toLowerCase();\n\t\t\tplc = $.grep(plc, function(word){\n\t\t\t\treturn /^auto|left|right|top|bottom$/.test(word);\n\t\t\t});\n\t\t\to.orientation = {x: 'auto', y: 'auto'};\n\t\t\tif (!_plc || _plc === 'auto')\n\t\t\t\t; // no action\n\t\t\telse if (plc.length === 1){\n\t\t\t\tswitch (plc[0]){\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\to.orientation.y = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\to.orientation.x = plc[0];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^left|right$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.x = _plc[0] || 'auto';\n\n\t\t\t\t_plc = $.grep(plc, function(word){\n\t\t\t\t\treturn /^top|bottom$/.test(word);\n\t\t\t\t});\n\t\t\t\to.orientation.y = _plc[0] || 'auto';\n\t\t\t}\n\t\t\tif (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {\n\t\t\t\to.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);\n\t\t\t} else if (o.defaultViewDate) {\n\t\t\t\tvar year = o.defaultViewDate.year || new Date().getFullYear();\n\t\t\t\tvar month = o.defaultViewDate.month || 0;\n\t\t\t\tvar day = o.defaultViewDate.day || 1;\n\t\t\t\to.defaultViewDate = UTCDate(year, month, day);\n\t\t\t} else {\n\t\t\t\to.defaultViewDate = UTCToday();\n\t\t\t}\n\t\t},\n\t\t_applyEvents: function(evs){\n\t\t\tfor (var i=0, el, ch, ev; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.on(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_unapplyEvents: function(evs){\n\t\t\tfor (var i=0, el, ev, ch; i < evs.length; i++){\n\t\t\t\tel = evs[i][0];\n\t\t\t\tif (evs[i].length === 2){\n\t\t\t\t\tch = undefined;\n\t\t\t\t\tev = evs[i][1];\n\t\t\t\t} else if (evs[i].length === 3){\n\t\t\t\t\tch = evs[i][1];\n\t\t\t\t\tev = evs[i][2];\n\t\t\t\t}\n\t\t\t\tel.off(ev, ch);\n\t\t\t}\n\t\t},\n\t\t_buildEvents: function(){\n var events = {\n keyup: $.proxy(function(e){\n if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)\n this.update();\n }, this),\n keydown: $.proxy(this.keydown, this),\n paste: $.proxy(this.paste, this)\n };\n\n if (this.o.showOnFocus === true) {\n events.focus = $.proxy(this.show, this);\n }\n\n if (this.isInput) { // single input\n this._events = [\n [this.element, events]\n ];\n }\n // component: input + button\n else if (this.component && this.inputField.length) {\n this._events = [\n // For components that are not readonly, allow keyboard nav\n [this.inputField, events],\n [this.component, {\n click: $.proxy(this.show, this)\n }]\n ];\n }\n\t\t\telse {\n\t\t\t\tthis._events = [\n\t\t\t\t\t[this.element, {\n\t\t\t\t\t\tclick: $.proxy(this.show, this),\n\t\t\t\t\t\tkeydown: $.proxy(this.keydown, this)\n\t\t\t\t\t}]\n\t\t\t\t];\n\t\t\t}\n\t\t\tthis._events.push(\n\t\t\t\t// Component: listen for blur on element descendants\n\t\t\t\t[this.element, '*', {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}],\n\t\t\t\t// Input: listen for blur on element\n\t\t\t\t[this.element, {\n\t\t\t\t\tblur: $.proxy(function(e){\n\t\t\t\t\t\tthis._focused_from = e.target;\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t);\n\n\t\t\tif (this.o.immediateUpdates) {\n\t\t\t\t// Trigger input updates immediately on changed year/month\n\t\t\t\tthis._events.push([this.element, {\n\t\t\t\t\t'changeYear changeMonth': $.proxy(function(e){\n\t\t\t\t\t\tthis.update(e.date);\n\t\t\t\t\t}, this)\n\t\t\t\t}]);\n\t\t\t}\n\n\t\t\tthis._secondaryEvents = [\n\t\t\t\t[this.picker, {\n\t\t\t\t\tclick: $.proxy(this.click, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.prev, .next', {\n\t\t\t\t\tclick: $.proxy(this.navArrowsClick, this)\n\t\t\t\t}],\n\t\t\t\t[this.picker, '.day:not(.disabled)', {\n\t\t\t\t\tclick: $.proxy(this.dayCellClick, this)\n\t\t\t\t}],\n\t\t\t\t[$(window), {\n\t\t\t\t\tresize: $.proxy(this.place, this)\n\t\t\t\t}],\n\t\t\t\t[$(document), {\n\t\t\t\t\t'mousedown touchstart': $.proxy(function(e){\n\t\t\t\t\t\t// Clicked outside the datepicker, hide it\n\t\t\t\t\t\tif (!(\n\t\t\t\t\t\t\tthis.element.is(e.target) ||\n\t\t\t\t\t\t\tthis.element.find(e.target).length ||\n\t\t\t\t\t\t\tthis.picker.is(e.target) ||\n\t\t\t\t\t\t\tthis.picker.find(e.target).length ||\n\t\t\t\t\t\t\tthis.isInline\n\t\t\t\t\t\t)){\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this)\n\t\t\t\t}]\n\t\t\t];\n\t\t},\n\t\t_attachEvents: function(){\n\t\t\tthis._detachEvents();\n\t\t\tthis._applyEvents(this._events);\n\t\t},\n\t\t_detachEvents: function(){\n\t\t\tthis._unapplyEvents(this._events);\n\t\t},\n\t\t_attachSecondaryEvents: function(){\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis._applyEvents(this._secondaryEvents);\n\t\t},\n\t\t_detachSecondaryEvents: function(){\n\t\t\tthis._unapplyEvents(this._secondaryEvents);\n\t\t},\n\t\t_trigger: function(event, altdate){\n\t\t\tvar date = altdate || this.dates.get(-1),\n\t\t\t\tlocal_date = this._utc_to_local(date);\n\n\t\t\tthis.element.trigger({\n\t\t\t\ttype: event,\n\t\t\t\tdate: local_date,\n\t\t\t\tviewMode: this.viewMode,\n\t\t\t\tdates: $.map(this.dates, this._utc_to_local),\n\t\t\t\tformat: $.proxy(function(ix, format){\n\t\t\t\t\tif (arguments.length === 0){\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t\tformat = this.o.format;\n\t\t\t\t\t} else if (typeof ix === 'string'){\n\t\t\t\t\t\tformat = ix;\n\t\t\t\t\t\tix = this.dates.length - 1;\n\t\t\t\t\t}\n\t\t\t\t\tformat = format || this.o.format;\n\t\t\t\t\tvar date = this.dates.get(ix);\n\t\t\t\t\treturn DPGlobal.formatDate(date, format, this.o.language);\n\t\t\t\t}, this)\n\t\t\t});\n\t\t},\n\n\t\tshow: function(){\n\t\t\tif (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))\n\t\t\t\treturn;\n\t\t\tif (!this.isInline)\n\t\t\t\tthis.picker.appendTo(this.o.container);\n\t\t\tthis.place();\n\t\t\tthis.picker.show();\n\t\t\tthis._attachSecondaryEvents();\n\t\t\tthis._trigger('show');\n\t\t\tif ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {\n\t\t\t\t$(this.element).blur();\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\thide: function(){\n\t\t\tif (this.isInline || !this.picker.is(':visible'))\n\t\t\t\treturn this;\n\t\t\tthis.focusDate = null;\n\t\t\tthis.picker.hide().detach();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.setViewMode(this.o.startView);\n\n\t\t\tif (this.o.forceParse && this.inputField.val())\n\t\t\t\tthis.setValue();\n\t\t\tthis._trigger('hide');\n\t\t\treturn this;\n\t\t},\n\n\t\tdestroy: function(){\n\t\t\tthis.hide();\n\t\t\tthis._detachEvents();\n\t\t\tthis._detachSecondaryEvents();\n\t\t\tthis.picker.remove();\n\t\t\tdelete this.element.data().datepicker;\n\t\t\tif (!this.isInput){\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\tpaste: function(e){\n\t\t\tvar dateString;\n\t\t\tif (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types\n\t\t\t\t&& $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {\n\t\t\t\tdateString = e.originalEvent.clipboardData.getData('text/plain');\n\t\t\t} else if (window.clipboardData) {\n\t\t\t\tdateString = window.clipboardData.getData('Text');\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.setDate(dateString);\n\t\t\tthis.update();\n\t\t\te.preventDefault();\n\t\t},\n\n\t\t_utc_to_local: function(utc){\n\t\t\tif (!utc) {\n\t\t\t\treturn utc;\n\t\t\t}\n\n\t\t\tvar local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));\n\n\t\t\tif (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {\n\t\t\t\tlocal = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));\n\t\t\t}\n\n\t\t\treturn local;\n\t\t},\n\t\t_local_to_utc: function(local){\n\t\t\treturn local && new Date(local.getTime() - (local.getTimezoneOffset()*60000));\n\t\t},\n\t\t_zero_time: function(local){\n\t\t\treturn local && new Date(local.getFullYear(), local.getMonth(), local.getDate());\n\t\t},\n\t\t_zero_utc_time: function(utc){\n\t\t\treturn utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());\n\t\t},\n\n\t\tgetDates: function(){\n\t\t\treturn $.map(this.dates, this._utc_to_local);\n\t\t},\n\n\t\tgetUTCDates: function(){\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn new Date(d);\n\t\t\t});\n\t\t},\n\n\t\tgetDate: function(){\n\t\t\treturn this._utc_to_local(this.getUTCDate());\n\t\t},\n\n\t\tgetUTCDate: function(){\n\t\t\tvar selected_date = this.dates.get(-1);\n\t\t\tif (selected_date !== undefined) {\n\t\t\t\treturn new Date(selected_date);\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\n\t\tclearDates: function(){\n\t\t\tthis.inputField.val('');\n\t\t\tthis.update();\n\t\t\tthis._trigger('changeDate');\n\n\t\t\tif (this.o.autoclose) {\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tsetDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.update.apply(this, args);\n\t\t\tthis._trigger('changeDate');\n\t\t\tthis.setValue();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetUTCDates: function(){\n\t\t\tvar args = $.isArray(arguments[0]) ? arguments[0] : arguments;\n\t\t\tthis.setDates.apply(this, $.map(args, this._utc_to_local));\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDate: alias('setDates'),\n\t\tsetUTCDate: alias('setUTCDates'),\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),\n\n\t\tsetValue: function(){\n\t\t\tvar formatted = this.getFormattedDate();\n\t\t\tthis.inputField.val(formatted);\n\t\t\treturn this;\n\t\t},\n\n\t\tgetFormattedDate: function(format){\n\t\t\tif (format === undefined)\n\t\t\t\tformat = this.o.format;\n\n\t\t\tvar lang = this.o.language;\n\t\t\treturn $.map(this.dates, function(d){\n\t\t\t\treturn DPGlobal.formatDate(d, format, lang);\n\t\t\t}).join(this.o.multidateSeparator);\n\t\t},\n\n\t\tgetStartDate: function(){\n\t\t\treturn this.o.startDate;\n\t\t},\n\n\t\tsetStartDate: function(startDate){\n\t\t\tthis._process_options({startDate: startDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tgetEndDate: function(){\n\t\t\treturn this.o.endDate;\n\t\t},\n\n\t\tsetEndDate: function(endDate){\n\t\t\tthis._process_options({endDate: endDate});\n\t\t\tthis.update();\n\t\t\tthis.updateNavArrows();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekDisabled: function(daysOfWeekDisabled){\n\t\t\tthis._process_options({daysOfWeekDisabled: daysOfWeekDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDaysOfWeekHighlighted: function(daysOfWeekHighlighted){\n\t\t\tthis._process_options({daysOfWeekHighlighted: daysOfWeekHighlighted});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tsetDatesDisabled: function(datesDisabled){\n\t\t\tthis._process_options({datesDisabled: datesDisabled});\n\t\t\tthis.update();\n\t\t\treturn this;\n\t\t},\n\n\t\tplace: function(){\n\t\t\tif (this.isInline)\n\t\t\t\treturn this;\n\t\t\tvar calendarWidth = this.picker.outerWidth(),\n\t\t\t\tcalendarHeight = this.picker.outerHeight(),\n\t\t\t\tvisualPadding = 10,\n\t\t\t\tcontainer = $(this.o.container),\n\t\t\t\twindowWidth = container.width(),\n\t\t\t\tscrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),\n\t\t\t\tappendOffset = container.offset();\n\n\t\t\tvar parentsZindex = [0];\n\t\t\tthis.element.parents().each(function(){\n\t\t\t\tvar itemZIndex = $(this).css('z-index');\n\t\t\t\tif (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));\n\t\t\t});\n\t\t\tvar zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;\n\t\t\tvar offset = this.component ? this.component.parent().offset() : this.element.offset();\n\t\t\tvar height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);\n\t\t\tvar width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);\n\t\t\tvar left = offset.left - appendOffset.left;\n\t\t\tvar top = offset.top - appendOffset.top;\n\n\t\t\tif (this.o.container !== 'body') {\n\t\t\t\ttop += scrollTop;\n\t\t\t}\n\n\t\t\tthis.picker.removeClass(\n\t\t\t\t'datepicker-orient-top datepicker-orient-bottom '+\n\t\t\t\t'datepicker-orient-right datepicker-orient-left'\n\t\t\t);\n\n\t\t\tif (this.o.orientation.x !== 'auto'){\n\t\t\t\tthis.picker.addClass('datepicker-orient-' + this.o.orientation.x);\n\t\t\t\tif (this.o.orientation.x === 'right')\n\t\t\t\t\tleft -= calendarWidth - width;\n\t\t\t}\n\t\t\t// auto x orientation is best-placement: if it crosses a window\n\t\t\t// edge, fudge it sideways\n\t\t\telse {\n\t\t\t\tif (offset.left < 0) {\n\t\t\t\t\t// component is outside the window on the left side. Move it into visible range\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\tleft -= offset.left - visualPadding;\n\t\t\t\t} else if (left + calendarWidth > windowWidth) {\n\t\t\t\t\t// the calendar passes the widow right edge. Align it to component right side\n\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\tleft += width - calendarWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif (this.o.rtl) {\n\t\t\t\t\t\t// Default to right\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-right');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Default to left\n\t\t\t\t\t\tthis.picker.addClass('datepicker-orient-left');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// auto y orientation is best-situation: top or bottom, no fudging,\n\t\t\t// decision based on which shows more of the calendar\n\t\t\tvar yorient = this.o.orientation.y,\n\t\t\t\ttop_overflow;\n\t\t\tif (yorient === 'auto'){\n\t\t\t\ttop_overflow = -scrollTop + top - calendarHeight;\n\t\t\t\tyorient = top_overflow < 0 ? 'bottom' : 'top';\n\t\t\t}\n\n\t\t\tthis.picker.addClass('datepicker-orient-' + yorient);\n\t\t\tif (yorient === 'top')\n\t\t\t\ttop -= calendarHeight + parseInt(this.picker.css('padding-top'));\n\t\t\telse\n\t\t\t\ttop += height;\n\n\t\t\tif (this.o.rtl) {\n\t\t\t\tvar right = windowWidth - (left + width);\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tright: right,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.picker.css({\n\t\t\t\t\ttop: top,\n\t\t\t\t\tleft: left,\n\t\t\t\t\tzIndex: zIndex\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\n\t\t_allow_update: true,\n\t\tupdate: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn this;\n\n\t\t\tvar oldDates = this.dates.copy(),\n\t\t\t\tdates = [],\n\t\t\t\tfromArgs = false;\n\t\t\tif (arguments.length){\n\t\t\t\t$.each(arguments, $.proxy(function(i, date){\n\t\t\t\t\tif (date instanceof Date)\n\t\t\t\t\t\tdate = this._local_to_utc(date);\n\t\t\t\t\tdates.push(date);\n\t\t\t\t}, this));\n\t\t\t\tfromArgs = true;\n\t\t\t} else {\n\t\t\t\tdates = this.isInput\n\t\t\t\t\t\t? this.element.val()\n\t\t\t\t\t\t: this.element.data('date') || this.inputField.val();\n\t\t\t\tif (dates && this.o.multidate)\n\t\t\t\t\tdates = dates.split(this.o.multidateSeparator);\n\t\t\t\telse\n\t\t\t\t\tdates = [dates];\n\t\t\t\tdelete this.element.data().date;\n\t\t\t}\n\n\t\t\tdates = $.map(dates, $.proxy(function(date){\n\t\t\t\treturn DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);\n\t\t\t}, this));\n\t\t\tdates = $.grep(dates, $.proxy(function(date){\n\t\t\t\treturn (\n\t\t\t\t\t!this.dateWithinRange(date) ||\n\t\t\t\t\t!date\n\t\t\t\t);\n\t\t\t}, this), true);\n\t\t\tthis.dates.replace(dates);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis.viewDate = new Date(this.dates.get(-1));\n\t\t\t\telse if (this.viewDate < this.o.startDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.startDate);\n\t\t\t\telse if (this.viewDate > this.o.endDate)\n\t\t\t\t\tthis.viewDate = new Date(this.o.endDate);\n\t\t\t\telse\n\t\t\t\t\tthis.viewDate = this.o.defaultViewDate;\n\t\t\t}\n\n\t\t\tif (fromArgs){\n\t\t\t\t// setting date by clicking\n\t\t\t\tthis.setValue();\n\t\t\t\tthis.element.change();\n\t\t\t}\n\t\t\telse if (this.dates.length){\n\t\t\t\t// setting date by typing\n\t\t\t\tif (String(oldDates) !== String(this.dates) && fromArgs) {\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\t\tthis.element.change();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dates.length && oldDates.length) {\n\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.element.change();\n\t\t\t}\n\n\t\t\tthis.fill();\n\t\t\treturn this;\n\t\t},\n\n\t\tfillDow: function(){\n if (this.o.showWeekDays) {\n\t\t\tvar dowCnt = this.o.weekStart,\n\t\t\t\thtml = '';\n\t\t\tif (this.o.calendarWeeks){\n\t\t\t\thtml += ' ';\n\t\t\t}\n\t\t\twhile (dowCnt < this.o.weekStart + 7){\n\t\t\t\thtml += '';\n\t\t\t}\n\t\t\thtml += '';\n\t\t\tthis.picker.find('.datepicker-days thead').append(html);\n }\n\t\t},\n\n\t\tfillMonths: function(){\n var localDate = this._utc_to_local(this.viewDate);\n\t\t\tvar html = '';\n\t\t\tvar focused;\n\t\t\tfor (var i = 0; i < 12; i++){\n\t\t\t\tfocused = localDate && localDate.getMonth() === i ? ' focused' : '';\n\t\t\t\thtml += '' + dates[this.o.language].monthsShort[i] + '';\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-months td').html(html);\n\t\t},\n\n\t\tsetRange: function(range){\n\t\t\tif (!range || !range.length)\n\t\t\t\tdelete this.range;\n\t\t\telse\n\t\t\t\tthis.range = $.map(range, function(d){\n\t\t\t\t\treturn d.valueOf();\n\t\t\t\t});\n\t\t\tthis.fill();\n\t\t},\n\n\t\tgetClassNames: function(date){\n\t\t\tvar cls = [],\n\t\t\t\tyear = this.viewDate.getUTCFullYear(),\n\t\t\t\tmonth = this.viewDate.getUTCMonth(),\n\t\t\t\ttoday = UTCToday();\n\t\t\tif (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)){\n\t\t\t\tcls.push('old');\n\t\t\t} else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)){\n\t\t\t\tcls.push('new');\n\t\t\t}\n\t\t\tif (this.focusDate && date.valueOf() === this.focusDate.valueOf())\n\t\t\t\tcls.push('focused');\n\t\t\t// Compare internal UTC date with UTC today, not local today\n\t\t\tif (this.o.todayHighlight && isUTCEquals(date, today)) {\n\t\t\t\tcls.push('today');\n\t\t\t}\n\t\t\tif (this.dates.contains(date) !== -1)\n\t\t\t\tcls.push('active');\n\t\t\tif (!this.dateWithinRange(date)){\n\t\t\t\tcls.push('disabled');\n\t\t\t}\n\t\t\tif (this.dateIsDisabled(date)){\n\t\t\t\tcls.push('disabled', 'disabled-date');\n\t\t\t}\n\t\t\tif ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1){\n\t\t\t\tcls.push('highlighted');\n\t\t\t}\n\n\t\t\tif (this.range){\n\t\t\t\tif (date > this.range[0] && date < this.range[this.range.length-1]){\n\t\t\t\t\tcls.push('range');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(date.valueOf(), this.range) !== -1){\n\t\t\t\t\tcls.push('selected');\n\t\t\t\t}\n\t\t\t\tif (date.valueOf() === this.range[0]){\n cls.push('range-start');\n }\n if (date.valueOf() === this.range[this.range.length-1]){\n cls.push('range-end');\n }\n\t\t\t}\n\t\t\treturn cls;\n\t\t},\n\n\t\t_fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn){\n\t\t\tvar html = '';\n\t\t\tvar step = factor / 10;\n\t\t\tvar view = this.picker.find(selector);\n\t\t\tvar startVal = Math.floor(year / factor) * factor;\n\t\t\tvar endVal = startVal + step * 9;\n\t\t\tvar focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;\n\t\t\tvar selected = $.map(this.dates, function(d){\n\t\t\t\treturn Math.floor(d.getUTCFullYear() / step) * step;\n\t\t\t});\n\n\t\t\tvar classes, tooltip, before;\n\t\t\tfor (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {\n\t\t\t\tclasses = [cssClass];\n\t\t\t\ttooltip = null;\n\n\t\t\t\tif (currVal === startVal - step) {\n\t\t\t\t\tclasses.push('old');\n\t\t\t\t} else if (currVal === endVal + step) {\n\t\t\t\t\tclasses.push('new');\n\t\t\t\t}\n\t\t\t\tif ($.inArray(currVal, selected) !== -1) {\n\t\t\t\t\tclasses.push('active');\n\t\t\t\t}\n\t\t\t\tif (currVal < startYear || currVal > endYear) {\n\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t}\n\t\t\t\tif (currVal === focusedVal) {\n\t\t\t\t classes.push('focused');\n }\n\n\t\t\t\tif (beforeFn !== $.noop) {\n\t\t\t\t\tbefore = beforeFn(new Date(currVal, 0, 1));\n\t\t\t\t\tif (before === undefined) {\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\t} else if (typeof before === 'boolean') {\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\t} else if (typeof before === 'string') {\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\t}\n\t\t\t\t\tif (before.enabled === false) {\n\t\t\t\t\t\tclasses.push('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif (before.classes) {\n\t\t\t\t\t\tclasses = classes.concat(before.classes.split(/\\s+/));\n\t\t\t\t\t}\n\t\t\t\t\tif (before.tooltip) {\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\thtml += '' + currVal + '';\n\t\t\t}\n\n\t\t\tview.find('.datepicker-switch').text(startVal + '-' + endVal);\n\t\t\tview.find('td').html(html);\n\t\t},\n\n\t\tfill: function(){\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\ttodaytxt = dates[this.o.language].today || dates['en'].today || '',\n\t\t\t\tcleartxt = dates[this.o.language].clear || dates['en'].clear || '',\n titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,\n todayDate = UTCToday(),\n titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),\n\t\t\t\ttooltip,\n\t\t\t\tbefore;\n\t\t\tif (isNaN(year) || isNaN(month))\n\t\t\t\treturn;\n\t\t\tthis.picker.find('.datepicker-days .datepicker-switch')\n\t\t\t\t\t\t.text(DPGlobal.formatDate(d, titleFormat, this.o.language));\n\t\t\tthis.picker.find('tfoot .today')\n\t\t\t\t\t\t.text(todaytxt)\n .css('display', titleBtnVisible ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('tfoot .clear')\n\t\t\t\t\t\t.text(cleartxt)\n\t\t\t\t\t\t.css('display', this.o.clearBtn === true ? 'table-cell' : 'none');\n\t\t\tthis.picker.find('thead .datepicker-title')\n\t\t\t\t\t\t.text(this.o.title)\n\t\t\t\t\t\t.css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');\n\t\t\tthis.updateNavArrows();\n\t\t\tthis.fillMonths();\n\t\t\tvar prevMonth = UTCDate(year, month, 0),\n\t\t\t\tday = prevMonth.getUTCDate();\n\t\t\tprevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7)%7);\n\t\t\tvar nextMonth = new Date(prevMonth);\n\t\t\tif (prevMonth.getUTCFullYear() < 100){\n nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());\n }\n\t\t\tnextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\n\t\t\tnextMonth = nextMonth.valueOf();\n\t\t\tvar html = [];\n\t\t\tvar weekDay, clsName;\n\t\t\twhile (prevMonth.valueOf() < nextMonth){\n\t\t\t\tweekDay = prevMonth.getUTCDay();\n\t\t\t\tif (weekDay === this.o.weekStart){\n\t\t\t\t\thtml.push('');\n\t\t\t\t\tif (this.o.calendarWeeks){\n\t\t\t\t\t\t// ISO 8601: First week contains first thursday.\n\t\t\t\t\t\t// ISO also states week starts on Monday, but we can be more abstract here.\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\t// Start of current week: based on weekstart/current date\n\t\t\t\t\t\t\tws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),\n\t\t\t\t\t\t\t// Thursday of this week\n\t\t\t\t\t\t\tth = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// First Thursday of year, year from thursday\n\t\t\t\t\t\t\tyth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),\n\t\t\t\t\t\t\t// Calendar week: ms between thursdays, div ms per day, div 7 days\n\t\t\t\t\t\t\tcalWeek = (th - yth) / 864e5 / 7 + 1;\n\t\t\t\t\t\thtml.push(''+ calWeek +'');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclsName = this.getClassNames(prevMonth);\n\t\t\t\tclsName.push('day');\n\n\t\t\t\tvar content = prevMonth.getUTCDate();\n\n\t\t\t\tif (this.o.beforeShowDay !== $.noop){\n\t\t\t\t\tbefore = this.o.beforeShowDay(this._utc_to_local(prevMonth));\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false)\n\t\t\t\t\t\tclsName.push('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t\tclsName = clsName.concat(before.classes.split(/\\s+/));\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t\ttooltip = before.tooltip;\n\t\t\t\t\tif (before.content)\n\t\t\t\t\t\tcontent = before.content;\n\t\t\t\t}\n\n\t\t\t\t//Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)\n\t\t\t\t//Fallback to unique function for older jquery versions\n\t\t\t\tif ($.isFunction($.uniqueSort)) {\n\t\t\t\t\tclsName = $.uniqueSort(clsName);\n\t\t\t\t} else {\n\t\t\t\t\tclsName = $.unique(clsName);\n\t\t\t\t}\n\n\t\t\t\thtml.push('' + content + '');\n\t\t\t\ttooltip = null;\n\t\t\t\tif (weekDay === this.o.weekEnd){\n\t\t\t\t\thtml.push('');\n\t\t\t\t}\n\t\t\t\tprevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\n\t\t\t}\n\t\t\tthis.picker.find('.datepicker-days tbody').html(html.join(''));\n\n\t\t\tvar monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';\n\t\t\tvar months = this.picker.find('.datepicker-months')\n\t\t\t\t\t\t.find('.datepicker-switch')\n\t\t\t\t\t\t\t.text(this.o.maxViewMode < 2 ? monthsTitle : year)\n\t\t\t\t\t\t\t.end()\n\t\t\t\t\t\t.find('tbody span').removeClass('active');\n\n\t\t\t$.each(this.dates, function(i, d){\n\t\t\t\tif (d.getUTCFullYear() === year)\n\t\t\t\t\tmonths.eq(d.getUTCMonth()).addClass('active');\n\t\t\t});\n\n\t\t\tif (year < startYear || year > endYear){\n\t\t\t\tmonths.addClass('disabled');\n\t\t\t}\n\t\t\tif (year === startYear){\n\t\t\t\tmonths.slice(0, startMonth).addClass('disabled');\n\t\t\t}\n\t\t\tif (year === endYear){\n\t\t\t\tmonths.slice(endMonth+1).addClass('disabled');\n\t\t\t}\n\n\t\t\tif (this.o.beforeShowMonth !== $.noop){\n\t\t\t\tvar that = this;\n\t\t\t\t$.each(months, function(i, month){\n var moDate = new Date(year, i, 1);\n var before = that.o.beforeShowMonth(moDate);\n\t\t\t\t\tif (before === undefined)\n\t\t\t\t\t\tbefore = {};\n\t\t\t\t\telse if (typeof before === 'boolean')\n\t\t\t\t\t\tbefore = {enabled: before};\n\t\t\t\t\telse if (typeof before === 'string')\n\t\t\t\t\t\tbefore = {classes: before};\n\t\t\t\t\tif (before.enabled === false && !$(month).hasClass('disabled'))\n\t\t\t\t\t $(month).addClass('disabled');\n\t\t\t\t\tif (before.classes)\n\t\t\t\t\t $(month).addClass(before.classes);\n\t\t\t\t\tif (before.tooltip)\n\t\t\t\t\t $(month).prop('title', before.tooltip);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Generating decade/years picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-years',\n\t\t\t\t'year',\n\t\t\t\t10,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowYear\n\t\t\t);\n\n\t\t\t// Generating century/decades picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-decades',\n\t\t\t\t'decade',\n\t\t\t\t100,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowDecade\n\t\t\t);\n\n\t\t\t// Generating millennium/centuries picker\n\t\t\tthis._fill_yearsView(\n\t\t\t\t'.datepicker-centuries',\n\t\t\t\t'century',\n\t\t\t\t1000,\n\t\t\t\tyear,\n\t\t\t\tstartYear,\n\t\t\t\tendYear,\n\t\t\t\tthis.o.beforeShowCentury\n\t\t\t);\n\t\t},\n\n\t\tupdateNavArrows: function(){\n\t\t\tif (!this._allow_update)\n\t\t\t\treturn;\n\n\t\t\tvar d = new Date(this.viewDate),\n\t\t\t\tyear = d.getUTCFullYear(),\n\t\t\t\tmonth = d.getUTCMonth(),\n\t\t\t\tstartYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,\n\t\t\t\tstartMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,\n\t\t\t\tendYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,\n\t\t\t\tendMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,\n\t\t\t\tprevIsDisabled,\n\t\t\t\tnextIsDisabled,\n\t\t\t\tfactor = 1;\n\t\t\tswitch (this.viewMode){\n\t\t\t\tcase 4:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 3:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 2:\n\t\t\t\t\tfactor *= 10;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\tprevIsDisabled = Math.floor(year / factor) * factor <= startYear;\n\t\t\t\t\tnextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tprevIsDisabled = year <= startYear && month <= startMonth;\n\t\t\t\t\tnextIsDisabled = year >= endYear && month >= endMonth;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis.picker.find('.prev').toggleClass('disabled', prevIsDisabled);\n\t\t\tthis.picker.find('.next').toggleClass('disabled', nextIsDisabled);\n\t\t},\n\n\t\tclick: function(e){\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\tvar target, dir, day, year, month;\n\t\t\ttarget = $(e.target);\n\n\t\t\t// Clicked on the switch\n\t\t\tif (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode){\n\t\t\t\tthis.setViewMode(this.viewMode + 1);\n\t\t\t}\n\n\t\t\t// Clicked on today button\n\t\t\tif (target.hasClass('today') && !target.hasClass('day')){\n\t\t\t\tthis.setViewMode(0);\n\t\t\t\tthis._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');\n\t\t\t}\n\n\t\t\t// Clicked on clear button\n\t\t\tif (target.hasClass('clear')){\n\t\t\t\tthis.clearDates();\n\t\t\t}\n\n\t\t\tif (!target.hasClass('disabled')){\n\t\t\t\t// Clicked on a month, year, decade, century\n\t\t\t\tif (target.hasClass('month')\n\t\t\t\t\t\t|| target.hasClass('year')\n\t\t\t\t\t\t|| target.hasClass('decade')\n\t\t\t\t\t\t|| target.hasClass('century')) {\n\t\t\t\t\tthis.viewDate.setUTCDate(1);\n\n\t\t\t\t\tday = 1;\n\t\t\t\t\tif (this.viewMode === 1){\n\t\t\t\t\t\tmonth = target.parent().find('span').index(target);\n\t\t\t\t\t\tyear = this.viewDate.getUTCFullYear();\n\t\t\t\t\t\tthis.viewDate.setUTCMonth(month);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t\tyear = Number(target.text());\n\t\t\t\t\t\tthis.viewDate.setUTCFullYear(year);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);\n\n\t\t\t\t\tif (this.viewMode === this.o.minViewMode){\n\t\t\t\t\t\tthis._setDate(UTCDate(year, month, day));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setViewMode(this.viewMode - 1);\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.picker.is(':visible') && this._focused_from){\n\t\t\t\tthis._focused_from.focus();\n\t\t\t}\n\t\t\tdelete this._focused_from;\n\t\t},\n\n\t\tdayCellClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar timestamp = $target.data('date');\n\t\t\tvar date = new Date(timestamp);\n\n\t\t\tif (this.o.updateViewDate) {\n\t\t\t\tif (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {\n\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n\t\t\t\t}\n\n\t\t\t\tif (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {\n\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._setDate(date);\n\t\t},\n\n\t\t// Clicked on prev or next\n\t\tnavArrowsClick: function(e){\n\t\t\tvar $target = $(e.currentTarget);\n\t\t\tvar dir = $target.hasClass('prev') ? -1 : 1;\n\t\t\tif (this.viewMode !== 0){\n\t\t\t\tdir *= DPGlobal.viewModes[this.viewMode].navStep * 12;\n\t\t\t}\n\t\t\tthis.viewDate = this.moveMonth(this.viewDate, dir);\n\t\t\tthis._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);\n\t\t\tthis.fill();\n\t\t},\n\n\t\t_toggle_multidate: function(date){\n\t\t\tvar ix = this.dates.contains(date);\n\t\t\tif (!date){\n\t\t\t\tthis.dates.clear();\n\t\t\t}\n\n\t\t\tif (ix !== -1){\n\t\t\t\tif (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive){\n\t\t\t\t\tthis.dates.remove(ix);\n\t\t\t\t}\n\t\t\t} else if (this.o.multidate === false) {\n\t\t\t\tthis.dates.clear();\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.dates.push(date);\n\t\t\t}\n\n\t\t\tif (typeof this.o.multidate === 'number')\n\t\t\t\twhile (this.dates.length > this.o.multidate)\n\t\t\t\t\tthis.dates.remove(0);\n\t\t},\n\n\t\t_setDate: function(date, which){\n\t\t\tif (!which || which === 'date')\n\t\t\t\tthis._toggle_multidate(date && new Date(date));\n\t\t\tif ((!which && this.o.updateViewDate) || which === 'view')\n\t\t\t\tthis.viewDate = date && new Date(date);\n\n\t\t\tthis.fill();\n\t\t\tthis.setValue();\n\t\t\tif (!which || which !== 'view') {\n\t\t\t\tthis._trigger('changeDate');\n\t\t\t}\n\t\t\tthis.inputField.trigger('change');\n\t\t\tif (this.o.autoclose && (!which || which === 'date')){\n\t\t\t\tthis.hide();\n\t\t\t}\n\t\t},\n\n\t\tmoveDay: function(date, dir){\n\t\t\tvar newDate = new Date(date);\n\t\t\tnewDate.setUTCDate(date.getUTCDate() + dir);\n\n\t\t\treturn newDate;\n\t\t},\n\n\t\tmoveWeek: function(date, dir){\n\t\t\treturn this.moveDay(date, dir * 7);\n\t\t},\n\n\t\tmoveMonth: function(date, dir){\n\t\t\tif (!isValidDate(date))\n\t\t\t\treturn this.o.defaultViewDate;\n\t\t\tif (!dir)\n\t\t\t\treturn date;\n\t\t\tvar new_date = new Date(date.valueOf()),\n\t\t\t\tday = new_date.getUTCDate(),\n\t\t\t\tmonth = new_date.getUTCMonth(),\n\t\t\t\tmag = Math.abs(dir),\n\t\t\t\tnew_month, test;\n\t\t\tdir = dir > 0 ? 1 : -1;\n\t\t\tif (mag === 1){\n\t\t\t\ttest = dir === -1\n\t\t\t\t\t// If going back one month, make sure month is not current month\n\t\t\t\t\t// (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t? function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() === month;\n\t\t\t\t\t}\n\t\t\t\t\t// If going forward one month, make sure month is as expected\n\t\t\t\t\t// (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)\n\t\t\t\t\t: function(){\n\t\t\t\t\t\treturn new_date.getUTCMonth() !== new_month;\n\t\t\t\t\t};\n\t\t\t\tnew_month = month + dir;\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t\t// Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11\n\t\t\t\tnew_month = (new_month + 12) % 12;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// For magnitudes >1, move one month at a time...\n\t\t\t\tfor (var i=0; i < mag; i++)\n\t\t\t\t\t// ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...\n\t\t\t\t\tnew_date = this.moveMonth(new_date, dir);\n\t\t\t\t// ...then reset the day, keeping it in the new month\n\t\t\t\tnew_month = new_date.getUTCMonth();\n\t\t\t\tnew_date.setUTCDate(day);\n\t\t\t\ttest = function(){\n\t\t\t\t\treturn new_month !== new_date.getUTCMonth();\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Common date-resetting loop -- if date is beyond end of month, make it\n\t\t\t// end of month\n\t\t\twhile (test()){\n\t\t\t\tnew_date.setUTCDate(--day);\n\t\t\t\tnew_date.setUTCMonth(new_month);\n\t\t\t}\n\t\t\treturn new_date;\n\t\t},\n\n\t\tmoveYear: function(date, dir){\n\t\t\treturn this.moveMonth(date, dir*12);\n\t\t},\n\n\t\tmoveAvailableDate: function(date, dir, fn){\n\t\t\tdo {\n\t\t\t\tdate = this[fn](date, dir);\n\n\t\t\t\tif (!this.dateWithinRange(date))\n\t\t\t\t\treturn false;\n\n\t\t\t\tfn = 'moveDay';\n\t\t\t}\n\t\t\twhile (this.dateIsDisabled(date));\n\n\t\t\treturn date;\n\t\t},\n\n\t\tweekOfDateIsDisabled: function(date){\n\t\t\treturn $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;\n\t\t},\n\n\t\tdateIsDisabled: function(date){\n\t\t\treturn (\n\t\t\t\tthis.weekOfDateIsDisabled(date) ||\n\t\t\t\t$.grep(this.o.datesDisabled, function(d){\n\t\t\t\t\treturn isUTCEquals(date, d);\n\t\t\t\t}).length > 0\n\t\t\t);\n\t\t},\n\n\t\tdateWithinRange: function(date){\n\t\t\treturn date >= this.o.startDate && date <= this.o.endDate;\n\t\t},\n\n\t\tkeydown: function(e){\n\t\t\tif (!this.picker.is(':visible')){\n\t\t\t\tif (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker\n\t\t\t\t\tthis.show();\n\t\t\t\t\te.stopPropagation();\n }\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar dateChanged = false,\n\t\t\t\tdir, newViewDate,\n\t\t\t\tfocusDate = this.focusDate || this.viewDate;\n\t\t\tswitch (e.keyCode){\n\t\t\t\tcase 27: // escape\n\t\t\t\t\tif (this.focusDate){\n\t\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 37: // left\n\t\t\t\tcase 38: // up\n\t\t\t\tcase 39: // right\n\t\t\t\tcase 40: // down\n\t\t\t\t\tif (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;\n if (this.viewMode === 0) {\n \t\t\t\t\tif (e.ctrlKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeYear', this.viewDate);\n \t\t\t\t\t} else if (e.shiftKey){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n\n \t\t\t\t\t\tif (newViewDate)\n \t\t\t\t\t\t\tthis._trigger('changeMonth', this.viewDate);\n \t\t\t\t\t} else if (e.keyCode === 37 || e.keyCode === 39){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');\n \t\t\t\t\t} else if (!this.weekOfDateIsDisabled(focusDate)){\n \t\t\t\t\t\tnewViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');\n \t\t\t\t\t}\n } else if (this.viewMode === 1) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');\n } else if (this.viewMode === 2) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n dir = dir * 4;\n }\n newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');\n }\n\t\t\t\t\tif (newViewDate){\n\t\t\t\t\t\tthis.focusDate = this.viewDate = newViewDate;\n\t\t\t\t\t\tthis.setValue();\n\t\t\t\t\t\tthis.fill();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 13: // enter\n\t\t\t\t\tif (!this.o.forceParse)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tfocusDate = this.focusDate || this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tif (this.o.keyboardNavigation) {\n\t\t\t\t\t\tthis._toggle_multidate(focusDate);\n\t\t\t\t\t\tdateChanged = true;\n\t\t\t\t\t}\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.setValue();\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tif (this.picker.is(':visible')){\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tif (this.o.autoclose)\n\t\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 9: // tab\n\t\t\t\t\tthis.focusDate = null;\n\t\t\t\t\tthis.viewDate = this.dates.get(-1) || this.viewDate;\n\t\t\t\t\tthis.fill();\n\t\t\t\t\tthis.hide();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (dateChanged){\n\t\t\t\tif (this.dates.length)\n\t\t\t\t\tthis._trigger('changeDate');\n\t\t\t\telse\n\t\t\t\t\tthis._trigger('clearDate');\n\t\t\t\tthis.inputField.trigger('change');\n\t\t\t}\n\t\t},\n\n\t\tsetViewMode: function(viewMode){\n\t\t\tthis.viewMode = viewMode;\n\t\t\tthis.picker\n\t\t\t\t.children('div')\n\t\t\t\t.hide()\n\t\t\t\t.filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)\n\t\t\t\t\t.show();\n\t\t\tthis.updateNavArrows();\n this._trigger('changeViewMode', new Date(this.viewDate));\n\t\t}\n\t};\n\n\tvar DateRangePicker = function(element, options){\n\t\t$.data(element, 'datepicker', this);\n\t\tthis.element = $(element);\n\t\tthis.inputs = $.map(options.inputs, function(i){\n\t\t\treturn i.jquery ? i[0] : i;\n\t\t});\n\t\tdelete options.inputs;\n\n\t\tthis.keepEmptyValues = options.keepEmptyValues;\n\t\tdelete options.keepEmptyValues;\n\n\t\tdatepickerPlugin.call($(this.inputs), options)\n\t\t\t.on('changeDate', $.proxy(this.dateUpdated, this));\n\n\t\tthis.pickers = $.map(this.inputs, function(i){\n\t\t\treturn $.data(i, 'datepicker');\n\t\t});\n\t\tthis.updateDates();\n\t};\n\tDateRangePicker.prototype = {\n\t\tupdateDates: function(){\n\t\t\tthis.dates = $.map(this.pickers, function(i){\n\t\t\t\treturn i.getUTCDate();\n\t\t\t});\n\t\t\tthis.updateRanges();\n\t\t},\n\t\tupdateRanges: function(){\n\t\t\tvar range = $.map(this.dates, function(d){\n\t\t\t\treturn d.valueOf();\n\t\t\t});\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.setRange(range);\n\t\t\t});\n\t\t},\n\t\tclearDates: function(){\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tp.clearDates();\n\t\t\t});\n\t\t},\n\t\tdateUpdated: function(e){\n\t\t\t// `this.updating` is a workaround for preventing infinite recursion\n\t\t\t// between `changeDate` triggering and `setUTCDate` calling. Until\n\t\t\t// there is a better mechanism.\n\t\t\tif (this.updating)\n\t\t\t\treturn;\n\t\t\tthis.updating = true;\n\n\t\t\tvar dp = $.data(e.target, 'datepicker');\n\n\t\t\tif (dp === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar new_date = dp.getUTCDate(),\n\t\t\t\tkeep_empty_values = this.keepEmptyValues,\n\t\t\t\ti = $.inArray(e.target, this.inputs),\n\t\t\t\tj = i - 1,\n\t\t\t\tk = i + 1,\n\t\t\t\tl = this.inputs.length;\n\t\t\tif (i === -1)\n\t\t\t\treturn;\n\n\t\t\t$.each(this.pickers, function(i, p){\n\t\t\t\tif (!p.getUTCDate() && (p === dp || !keep_empty_values))\n\t\t\t\t\tp.setUTCDate(new_date);\n\t\t\t});\n\n\t\t\tif (new_date < this.dates[j]){\n\t\t\t\t// Date being moved earlier/left\n\t\t\t\twhile (j >= 0 && new_date < this.dates[j]){\n\t\t\t\t\tthis.pickers[j--].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t} else if (new_date > this.dates[k]){\n\t\t\t\t// Date being moved later/right\n\t\t\t\twhile (k < l && new_date > this.dates[k]){\n\t\t\t\t\tthis.pickers[k++].setUTCDate(new_date);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateDates();\n\n\t\t\tdelete this.updating;\n\t\t},\n\t\tdestroy: function(){\n\t\t\t$.map(this.pickers, function(p){ p.destroy(); });\n\t\t\t$(this.inputs).off('changeDate', this.dateUpdated);\n\t\t\tdelete this.element.data().datepicker;\n\t\t},\n\t\tremove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')\n\t};\n\n\tfunction opts_from_el(el, prefix){\n\t\t// Derive options from element data-attrs\n\t\tvar data = $(el).data(),\n\t\t\tout = {}, inkey,\n\t\t\treplace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');\n\t\tprefix = new RegExp('^' + prefix.toLowerCase());\n\t\tfunction re_lower(_,a){\n\t\t\treturn a.toLowerCase();\n\t\t}\n\t\tfor (var key in data)\n\t\t\tif (prefix.test(key)){\n\t\t\t\tinkey = key.replace(replace, re_lower);\n\t\t\t\tout[inkey] = data[key];\n\t\t\t}\n\t\treturn out;\n\t}\n\n\tfunction opts_from_locale(lang){\n\t\t// Derive options from locale plugins\n\t\tvar out = {};\n\t\t// Check if \"de-DE\" style date is available, if not language should\n\t\t// fallback to 2 letter code eg \"de\"\n\t\tif (!dates[lang]){\n\t\t\tlang = lang.split('-')[0];\n\t\t\tif (!dates[lang])\n\t\t\t\treturn;\n\t\t}\n\t\tvar d = dates[lang];\n\t\t$.each(locale_opts, function(i,k){\n\t\t\tif (k in d)\n\t\t\t\tout[k] = d[k];\n\t\t});\n\t\treturn out;\n\t}\n\n\tvar old = $.fn.datepicker;\n\tvar datepickerPlugin = function(option){\n\t\tvar args = Array.apply(null, arguments);\n\t\targs.shift();\n\t\tvar internal_return;\n\t\tthis.each(function(){\n\t\t\tvar $this = $(this),\n\t\t\t\tdata = $this.data('datepicker'),\n\t\t\t\toptions = typeof option === 'object' && option;\n\t\t\tif (!data){\n\t\t\t\tvar elopts = opts_from_el(this, 'date'),\n\t\t\t\t\t// Preliminary otions\n\t\t\t\t\txopts = $.extend({}, defaults, elopts, options),\n\t\t\t\t\tlocopts = opts_from_locale(xopts.language),\n\t\t\t\t\t// Options priority: js args, data-attrs, locales, defaults\n\t\t\t\t\topts = $.extend({}, defaults, locopts, elopts, options);\n\t\t\t\tif ($this.hasClass('input-daterange') || opts.inputs){\n\t\t\t\t\t$.extend(opts, {\n\t\t\t\t\t\tinputs: opts.inputs || $this.find('input').toArray()\n\t\t\t\t\t});\n\t\t\t\t\tdata = new DateRangePicker(this, opts);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdata = new Datepicker(this, opts);\n\t\t\t\t}\n\t\t\t\t$this.data('datepicker', data);\n\t\t\t}\n\t\t\tif (typeof option === 'string' && typeof data[option] === 'function'){\n\t\t\t\tinternal_return = data[option].apply(data, args);\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tinternal_return === undefined ||\n\t\t\tinternal_return instanceof Datepicker ||\n\t\t\tinternal_return instanceof DateRangePicker\n\t\t)\n\t\t\treturn this;\n\n\t\tif (this.length > 1)\n\t\t\tthrow new Error('Using only allowed for the collection of a single element (' + option + ' function)');\n\t\telse\n\t\t\treturn internal_return;\n\t};\n\t$.fn.datepicker = datepickerPlugin;\n\n\tvar defaults = $.fn.datepicker.defaults = {\n\t\tassumeNearbyYear: false,\n\t\tautoclose: false,\n\t\tbeforeShowDay: $.noop,\n\t\tbeforeShowMonth: $.noop,\n\t\tbeforeShowYear: $.noop,\n\t\tbeforeShowDecade: $.noop,\n\t\tbeforeShowCentury: $.noop,\n\t\tcalendarWeeks: false,\n\t\tclearBtn: false,\n\t\ttoggleActive: false,\n\t\tdaysOfWeekDisabled: [],\n\t\tdaysOfWeekHighlighted: [],\n\t\tdatesDisabled: [],\n\t\tendDate: Infinity,\n\t\tforceParse: true,\n\t\tformat: 'mm/dd/yyyy',\n\t\tkeepEmptyValues: false,\n\t\tkeyboardNavigation: true,\n\t\tlanguage: 'en',\n\t\tminViewMode: 0,\n\t\tmaxViewMode: 4,\n\t\tmultidate: false,\n\t\tmultidateSeparator: ',',\n\t\torientation: \"auto\",\n\t\trtl: false,\n\t\tstartDate: -Infinity,\n\t\tstartView: 0,\n\t\ttodayBtn: false,\n\t\ttodayHighlight: false,\n\t\tupdateViewDate: true,\n\t\tweekStart: 0,\n\t\tdisableTouchKeyboard: false,\n\t\tenableOnReadonly: true,\n\t\tshowOnFocus: true,\n\t\tzIndexOffset: 10,\n\t\tcontainer: 'body',\n\t\timmediateUpdates: false,\n\t\ttitle: '',\n\t\ttemplates: {\n\t\t\tleftArrow: '«',\n\t\t\trightArrow: '»'\n\t\t},\n showWeekDays: true\n\t};\n\tvar locale_opts = $.fn.datepicker.locale_opts = [\n\t\t'format',\n\t\t'rtl',\n\t\t'weekStart'\n\t];\n\t$.fn.datepicker.Constructor = Datepicker;\n\tvar dates = $.fn.datepicker.dates = {\n\t\ten: {\n\t\t\tdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t\t\tdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t\t\tdaysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n\t\t\tmonths: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t\t\tmonthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\t\t\ttoday: \"Today\",\n\t\t\tclear: \"Clear\",\n\t\t\ttitleFormat: \"MM yyyy\"\n\t\t}\n\t};\n\n\tvar DPGlobal = {\n\t\tviewModes: [\n\t\t\t{\n\t\t\t\tnames: ['days', 'month'],\n\t\t\t\tclsName: 'days',\n\t\t\t\te: 'changeMonth'\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['months', 'year'],\n\t\t\t\tclsName: 'months',\n\t\t\t\te: 'changeYear',\n\t\t\t\tnavStep: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['years', 'decade'],\n\t\t\t\tclsName: 'years',\n\t\t\t\te: 'changeDecade',\n\t\t\t\tnavStep: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['decades', 'century'],\n\t\t\t\tclsName: 'decades',\n\t\t\t\te: 'changeCentury',\n\t\t\t\tnavStep: 100\n\t\t\t},\n\t\t\t{\n\t\t\t\tnames: ['centuries', 'millennium'],\n\t\t\t\tclsName: 'centuries',\n\t\t\t\te: 'changeMillennium',\n\t\t\t\tnavStep: 1000\n\t\t\t}\n\t\t],\n\t\tvalidParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,\n\t\tnonpunctuation: /[^ -\\/:-@\\u5e74\\u6708\\u65e5\\[-`{-~\\t\\n\\r]+/g,\n\t\tparseFormat: function(format){\n\t\t\tif (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')\n return format;\n // IE treats \\0 as a string end in inputs (truncating the value),\n\t\t\t// so it's a bad format delimiter, anyway\n\t\t\tvar separators = format.replace(this.validParts, '\\0').split('\\0'),\n\t\t\t\tparts = format.match(this.validParts);\n\t\t\tif (!separators || !separators.length || !parts || parts.length === 0){\n\t\t\t\tthrow new Error(\"Invalid date format.\");\n\t\t\t}\n\t\t\treturn {separators: separators, parts: parts};\n\t\t},\n\t\tparseDate: function(date, format, language, assumeNearby){\n\t\t\tif (!date)\n\t\t\t\treturn undefined;\n\t\t\tif (date instanceof Date)\n\t\t\t\treturn date;\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toValue)\n\t\t\t\treturn format.toValue(date, format, language);\n\t\t\tvar fn_map = {\n\t\t\t\t\td: 'moveDay',\n\t\t\t\t\tm: 'moveMonth',\n\t\t\t\t\tw: 'moveWeek',\n\t\t\t\t\ty: 'moveYear'\n\t\t\t\t},\n\t\t\t\tdateAliases = {\n\t\t\t\t\tyesterday: '-1d',\n\t\t\t\t\ttoday: '+0d',\n\t\t\t\t\ttomorrow: '+1d'\n\t\t\t\t},\n\t\t\t\tparts, part, dir, i, fn;\n\t\t\tif (date in dateAliases){\n\t\t\t\tdate = dateAliases[date];\n\t\t\t}\n\t\t\tif (/^[\\-+]\\d+[dmwy]([\\s,]+[\\-+]\\d+[dmwy])*$/i.test(date)){\n\t\t\t\tparts = date.match(/([\\-+]\\d+)([dmwy])/gi);\n\t\t\t\tdate = new Date();\n\t\t\t\tfor (i=0; i < parts.length; i++){\n\t\t\t\t\tpart = parts[i].match(/([\\-+]\\d+)([dmwy])/i);\n\t\t\t\t\tdir = Number(part[1]);\n\t\t\t\t\tfn = fn_map[part[2].toLowerCase()];\n\t\t\t\t\tdate = Datepicker.prototype[fn](date, dir);\n\t\t\t\t}\n\t\t\t\treturn Datepicker.prototype._zero_utc_time(date);\n\t\t\t}\n\n\t\t\tparts = date && date.match(this.nonpunctuation) || [];\n\n\t\t\tfunction applyNearbyYear(year, threshold){\n\t\t\t\tif (threshold === true)\n\t\t\t\t\tthreshold = 10;\n\n\t\t\t\t// if year is 2 digits or less, than the user most likely is trying to get a recent century\n\t\t\t\tif (year < 100){\n\t\t\t\t\tyear += 2000;\n\t\t\t\t\t// if the new year is more than threshold years in advance, use last century\n\t\t\t\t\tif (year > ((new Date()).getFullYear()+threshold)){\n\t\t\t\t\t\tyear -= 100;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn year;\n\t\t\t}\n\n\t\t\tvar parsed = {},\n\t\t\t\tsetters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],\n\t\t\t\tsetters_map = {\n\t\t\t\t\tyyyy: function(d,v){\n\t\t\t\t\t\treturn d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);\n\t\t\t\t\t},\n\t\t\t\t\tm: function(d,v){\n\t\t\t\t\t\tif (isNaN(d))\n\t\t\t\t\t\t\treturn d;\n\t\t\t\t\t\tv -= 1;\n\t\t\t\t\t\twhile (v < 0) v += 12;\n\t\t\t\t\t\tv %= 12;\n\t\t\t\t\t\td.setUTCMonth(v);\n\t\t\t\t\t\twhile (d.getUTCMonth() !== v)\n\t\t\t\t\t\t\td.setUTCDate(d.getUTCDate()-1);\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t},\n\t\t\t\t\td: function(d,v){\n\t\t\t\t\t\treturn d.setUTCDate(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tval, filtered;\n\t\t\tsetters_map['yy'] = setters_map['yyyy'];\n\t\t\tsetters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\n\t\t\tsetters_map['dd'] = setters_map['d'];\n\t\t\tdate = UTCToday();\n\t\t\tvar fparts = format.parts.slice();\n\t\t\t// Remove noop parts\n\t\t\tif (parts.length !== fparts.length){\n\t\t\t\tfparts = $(fparts).filter(function(i,p){\n\t\t\t\t\treturn $.inArray(p, setters_order) !== -1;\n\t\t\t\t}).toArray();\n\t\t\t}\n\t\t\t// Process remainder\n\t\t\tfunction match_part(){\n\t\t\t\tvar m = this.slice(0, parts[i].length),\n\t\t\t\t\tp = parts[i].slice(0, m.length);\n\t\t\t\treturn m.toLowerCase() === p.toLowerCase();\n\t\t\t}\n\t\t\tif (parts.length === fparts.length){\n\t\t\t\tvar cnt;\n\t\t\t\tfor (i=0, cnt = fparts.length; i < cnt; i++){\n\t\t\t\t\tval = parseInt(parts[i], 10);\n\t\t\t\t\tpart = fparts[i];\n\t\t\t\t\tif (isNaN(val)){\n\t\t\t\t\t\tswitch (part){\n\t\t\t\t\t\t\tcase 'MM':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].months).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].months) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'M':\n\t\t\t\t\t\t\t\tfiltered = $(dates[language].monthsShort).filter(match_part);\n\t\t\t\t\t\t\t\tval = $.inArray(filtered[0], dates[language].monthsShort) + 1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tparsed[part] = val;\n\t\t\t\t}\n\t\t\t\tvar _date, s;\n\t\t\t\tfor (i=0; i < setters_order.length; i++){\n\t\t\t\t\ts = setters_order[i];\n\t\t\t\t\tif (s in parsed && !isNaN(parsed[s])){\n\t\t\t\t\t\t_date = new Date(date);\n\t\t\t\t\t\tsetters_map[s](_date, parsed[s]);\n\t\t\t\t\t\tif (!isNaN(_date))\n\t\t\t\t\t\t\tdate = _date;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t},\n\t\tformatDate: function(date, format, language){\n\t\t\tif (!date)\n\t\t\t\treturn '';\n\t\t\tif (typeof format === 'string')\n\t\t\t\tformat = DPGlobal.parseFormat(format);\n\t\t\tif (format.toDisplay)\n return format.toDisplay(date, format, language);\n var val = {\n\t\t\t\td: date.getUTCDate(),\n\t\t\t\tD: dates[language].daysShort[date.getUTCDay()],\n\t\t\t\tDD: dates[language].days[date.getUTCDay()],\n\t\t\t\tm: date.getUTCMonth() + 1,\n\t\t\t\tM: dates[language].monthsShort[date.getUTCMonth()],\n\t\t\t\tMM: dates[language].months[date.getUTCMonth()],\n\t\t\t\tyy: date.getUTCFullYear().toString().substring(2),\n\t\t\t\tyyyy: date.getUTCFullYear()\n\t\t\t};\n\t\t\tval.dd = (val.d < 10 ? '0' : '') + val.d;\n\t\t\tval.mm = (val.m < 10 ? '0' : '') + val.m;\n\t\t\tdate = [];\n\t\t\tvar seps = $.extend([], format.separators);\n\t\t\tfor (var i=0, cnt = format.parts.length; i <= cnt; i++){\n\t\t\t\tif (seps.length)\n\t\t\t\t\tdate.push(seps.shift());\n\t\t\t\tdate.push(val[format.parts[i]]);\n\t\t\t}\n\t\t\treturn date.join('');\n\t\t},\n\t\theadTemplate: ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.leftArrow+''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+defaults.templates.rightArrow+''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t'',\n\t\tcontTemplate: '',\n\t\tfootTemplate: ''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t''\n\t};\n\tDPGlobal.template = '
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t\t''+\n\t\t\t\t\t\t\t\t\tDPGlobal.headTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.contTemplate+\n\t\t\t\t\t\t\t\t\tDPGlobal.footTemplate+\n\t\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t\t'
'+\n\t\t\t\t\t\t'
';\n\n\t$.fn.datepicker.DPGlobal = DPGlobal;\n\n\n\t/* DATEPICKER NO CONFLICT\n\t* =================== */\n\n\t$.fn.datepicker.noConflict = function(){\n\t\t$.fn.datepicker = old;\n\t\treturn this;\n\t};\n\n\t/* DATEPICKER VERSION\n\t * =================== */\n\t$.fn.datepicker.version = '1.9.0';\n\n\t$.fn.datepicker.deprecated = function(msg){\n\t\tvar console = window.console;\n\t\tif (console && console.warn) {\n\t\t\tconsole.warn('DEPRECATED: ' + msg);\n\t\t}\n\t};\n\n\n\t/* DATEPICKER DATA-API\n\t* ================== */\n\n\t$(document).on(\n\t\t'focus.datepicker.data-api click.datepicker.data-api',\n\t\t'[data-provide=\"datepicker\"]',\n\t\tfunction(e){\n\t\t\tvar $this = $(this);\n\t\t\tif ($this.data('datepicker'))\n\t\t\t\treturn;\n\t\t\te.preventDefault();\n\t\t\t// component click requires us to explicitly show it\n\t\t\tdatepickerPlugin.call($this, 'show');\n\t\t}\n\t);\n\t$(function(){\n\t\tdatepickerPlugin.call($('[data-provide=\"datepicker-inline\"]'));\n\t});\n\n}));\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","// Use strict mode (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode)\n\"use strict\";\n\n\n// Requires\nvar Typo = require(\"typo-js\");\n\n\n// Create function\nfunction CodeMirrorSpellChecker(options) {\n\t// Initialize\n\toptions = options || {};\n\n\n\t// Verify\n\tif(typeof options.codeMirrorInstance !== \"function\" || typeof options.codeMirrorInstance.defineMode !== \"function\") {\n\t\tconsole.log(\"CodeMirror Spell Checker: You must provide an instance of CodeMirror via the option `codeMirrorInstance`\");\n\t\treturn;\n\t}\n\n\n\t// Because some browsers don't support this functionality yet\n\tif(!String.prototype.includes) {\n\t\tString.prototype.includes = function() {\n\t\t\t\"use strict\";\n\t\t\treturn String.prototype.indexOf.apply(this, arguments) !== -1;\n\t\t};\n\t}\n\n\n\t// Define the new mode\n\toptions.codeMirrorInstance.defineMode(\"spell-checker\", function(config) {\n\t\t// Load AFF/DIC data\n\t\tif(!CodeMirrorSpellChecker.aff_loading) {\n\t\t\tCodeMirrorSpellChecker.aff_loading = true;\n\t\t\tvar xhr_aff = new XMLHttpRequest();\n\t\t\txhr_aff.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.aff\", true);\n\t\t\txhr_aff.onload = function() {\n\t\t\t\tif(xhr_aff.readyState === 4 && xhr_aff.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.aff_data = xhr_aff.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr_aff.send(null);\n\t\t}\n\n\t\tif(!CodeMirrorSpellChecker.dic_loading) {\n\t\t\tCodeMirrorSpellChecker.dic_loading = true;\n\t\t\tvar xhr_dic = new XMLHttpRequest();\n\t\t\txhr_dic.open(\"GET\", \"https://cdn.jsdelivr.net/codemirror.spell-checker/latest/en_US.dic\", true);\n\t\t\txhr_dic.onload = function() {\n\t\t\t\tif(xhr_dic.readyState === 4 && xhr_dic.status === 200) {\n\t\t\t\t\tCodeMirrorSpellChecker.dic_data = xhr_dic.responseText;\n\t\t\t\t\tCodeMirrorSpellChecker.num_loaded++;\n\n\t\t\t\t\tif(CodeMirrorSpellChecker.num_loaded == 2) {\n\t\t\t\t\t\tCodeMirrorSpellChecker.typo = new Typo(\"en_US\", CodeMirrorSpellChecker.aff_data, CodeMirrorSpellChecker.dic_data, {\n\t\t\t\t\t\t\tplatform: \"any\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr_dic.send(null);\n\t\t}\n\n\n\t\t// Define what separates a word\n\t\tvar rx_word = \"!\\\"#$%&()*+,-./:;<=>?@[\\\\]^_`{|}~ \";\n\n\n\t\t// Create the overlay and such\n\t\tvar overlay = {\n\t\t\ttoken: function(stream) {\n\t\t\t\tvar ch = stream.peek();\n\t\t\t\tvar word = \"\";\n\n\t\t\t\tif(rx_word.includes(ch)) {\n\t\t\t\t\tstream.next();\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\twhile((ch = stream.peek()) != null && !rx_word.includes(ch)) {\n\t\t\t\t\tword += ch;\n\t\t\t\t\tstream.next();\n\t\t\t\t}\n\n\t\t\t\tif(CodeMirrorSpellChecker.typo && !CodeMirrorSpellChecker.typo.check(word))\n\t\t\t\t\treturn \"spell-error\"; // CSS class: cm-spell-error\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\tvar mode = options.codeMirrorInstance.getMode(\n\t\t\tconfig, config.backdrop || \"text/plain\"\n\t\t);\n\n\t\treturn options.codeMirrorInstance.overlayMode(mode, overlay, true);\n\t});\n}\n\n\n// Initialize data globally to reduce memory consumption\nCodeMirrorSpellChecker.num_loaded = 0;\nCodeMirrorSpellChecker.aff_loading = false;\nCodeMirrorSpellChecker.dic_loading = false;\nCodeMirrorSpellChecker.aff_data = \"\";\nCodeMirrorSpellChecker.dic_data = \"\";\nCodeMirrorSpellChecker.typo;\n\n\n// Export\nmodule.exports = CodeMirrorSpellChecker;","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/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.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/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/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 var listRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]\\s|[*+-]\\s|(\\d+)([.)]))(\\s*)/,\n emptyListRE = /^(\\s*)(>[> ]*|[*+-] \\[[x ]\\]|[*+-]|(\\d+)[.)])(\\s*)$/,\n unorderedListRE = /[*+-]\\s/;\n\n CodeMirror.commands.newlineAndIndentContinueMarkdownList = function(cm) {\n if (cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections(), replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].head;\n\n // If we're not in Markdown mode, fall back to normal newlineAndIndent\n var eolState = cm.getStateAfter(pos.line);\n var inner = CodeMirror.innerMode(cm.getMode(), eolState);\n if (inner.mode.name !== \"markdown\") {\n cm.execCommand(\"newlineAndIndent\");\n return;\n } else {\n eolState = inner.state;\n }\n\n var inList = eolState.list !== false;\n var inQuote = eolState.quote !== 0;\n\n var line = cm.getLine(pos.line), match = listRE.exec(line);\n var cursorBeforeBullet = /^\\s*$/.test(line.slice(0, pos.ch));\n if (!ranges[i].empty() || (!inList && !inQuote) || !match || cursorBeforeBullet) {\n cm.execCommand(\"newlineAndIndent\");\n return;\n }\n if (emptyListRE.test(line)) {\n var endOfQuote = inQuote && />\\s*$/.test(line)\n var endOfList = !/>\\s*$/.test(line)\n if (endOfQuote || endOfList) cm.replaceRange(\"\", {\n line: pos.line, ch: 0\n }, {\n line: pos.line, ch: pos.ch + 1\n });\n replacements[i] = \"\\n\";\n } else {\n var indent = match[1], after = match[5];\n var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(\">\") >= 0);\n var bullet = numbered ? (parseInt(match[3], 10) + 1) + match[4] : match[2].replace(\"x\", \" \");\n replacements[i] = \"\\n\" + indent + bullet + after;\n\n if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);\n }\n }\n\n cm.replaceSelections(replacements);\n };\n\n // Auto-updating Markdown list numbers when a new item is added to the\n // middle of a list\n function incrementRemainingMarkdownListNumbers(cm, pos) {\n var startLine = pos.line, lookAhead = 0, skipCount = 0;\n var startItem = listRE.exec(cm.getLine(startLine)), startIndent = startItem[1];\n\n do {\n lookAhead += 1;\n var nextLineNumber = startLine + lookAhead;\n var nextLine = cm.getLine(nextLineNumber), nextItem = listRE.exec(nextLine);\n\n if (nextItem) {\n var nextIndent = nextItem[1];\n var newNumber = (parseInt(startItem[3], 10) + lookAhead - skipCount);\n var nextNumber = (parseInt(nextItem[3], 10)), itemNumber = nextNumber;\n\n if (startIndent === nextIndent && !isNaN(nextNumber)) {\n if (newNumber === nextNumber) itemNumber = nextNumber + 1;\n if (newNumber > nextNumber) itemNumber = newNumber + 1;\n cm.replaceRange(\n nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),\n {\n line: nextLineNumber, ch: 0\n }, {\n line: nextLineNumber, ch: nextLine.length\n });\n } else {\n if (startIndent.length > nextIndent.length) return;\n // This doesn't run if the next line immediately indents, as it is\n // not clear of the users intention (new indented item or same level)\n if ((startIndent.length < nextIndent.length) && (lookAhead === 1)) return;\n skipCount += 1;\n }\n }\n } while (nextItem);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/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/LICENSE\n\n// Because sometimes you need to mark the selected *text*.\n//\n// Adds an option 'styleSelectedText' which, when enabled, gives\n// selected text the CSS class given as option value, or\n// \"CodeMirror-selectedtext\" when the value is not a string.\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.defineOption(\"styleSelectedText\", false, function(cm, val, old) {\n var prev = old && old != CodeMirror.Init;\n if (val && !prev) {\n cm.state.markedSelection = [];\n cm.state.markedSelectionStyle = typeof val == \"string\" ? val : \"CodeMirror-selectedtext\";\n reset(cm);\n cm.on(\"cursorActivity\", onCursorActivity);\n cm.on(\"change\", onChange);\n } else if (!val && prev) {\n cm.off(\"cursorActivity\", onCursorActivity);\n cm.off(\"change\", onChange);\n clear(cm);\n cm.state.markedSelection = cm.state.markedSelectionStyle = null;\n }\n });\n\n function onCursorActivity(cm) {\n if (cm.state.markedSelection)\n cm.operation(function() { update(cm); });\n }\n\n function onChange(cm) {\n if (cm.state.markedSelection && cm.state.markedSelection.length)\n cm.operation(function() { clear(cm); });\n }\n\n var CHUNK_SIZE = 8;\n var Pos = CodeMirror.Pos;\n var cmp = CodeMirror.cmpPos;\n\n function coverRange(cm, from, to, addAt) {\n if (cmp(from, to) == 0) return;\n var array = cm.state.markedSelection;\n var cls = cm.state.markedSelectionStyle;\n for (var line = from.line;;) {\n var start = line == from.line ? from : Pos(line, 0);\n var endLine = line + CHUNK_SIZE, atEnd = endLine >= to.line;\n var end = atEnd ? to : Pos(endLine, 0);\n var mark = cm.markText(start, end, {className: cls});\n if (addAt == null) array.push(mark);\n else array.splice(addAt++, 0, mark);\n if (atEnd) break;\n line = endLine;\n }\n }\n\n function clear(cm) {\n var array = cm.state.markedSelection;\n for (var i = 0; i < array.length; ++i) array[i].clear();\n array.length = 0;\n }\n\n function reset(cm) {\n clear(cm);\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++)\n coverRange(cm, ranges[i].from(), ranges[i].to());\n }\n\n function update(cm) {\n if (!cm.somethingSelected()) return clear(cm);\n if (cm.listSelections().length > 1) return reset(cm);\n\n var from = cm.getCursor(\"start\"), to = cm.getCursor(\"end\");\n\n var array = cm.state.markedSelection;\n if (!array.length) return coverRange(cm, from, to);\n\n var coverStart = array[0].find(), coverEnd = array[array.length - 1].find();\n if (!coverStart || !coverEnd || to.line - from.line <= CHUNK_SIZE ||\n cmp(from, coverEnd.to) >= 0 || cmp(to, coverStart.from) <= 0)\n return reset(cm);\n\n while (cmp(from, coverStart.from) > 0) {\n array.shift().clear();\n coverStart = array[0].find();\n }\n if (cmp(from, coverStart.from) < 0) {\n if (coverStart.to.line - from.line < CHUNK_SIZE) {\n array.shift().clear();\n coverRange(cm, from, coverStart.to, 0);\n } else {\n coverRange(cm, from, coverStart.from, 0);\n }\n }\n\n while (cmp(to, coverEnd.to) < 0) {\n array.pop().clear();\n coverEnd = array[array.length - 1].find();\n }\n if (cmp(to, coverEnd.to) > 0) {\n if (to.line - coverEnd.from.line < CHUNK_SIZE) {\n array.pop().clear();\n coverRange(cm, coverEnd.from, to);\n } else {\n coverRange(cm, coverEnd.to, to);\n }\n }\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), 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\\//.test(userAgent);\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 && 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 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 // 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 height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.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 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 (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range.head, curFragment); }\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 (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 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 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 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 }\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.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.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\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.pointerEvents = \"none\"; }\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 // 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 var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\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 && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\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 && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\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) {\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 = 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)\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; 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 input = this;\n if (this.selectionInEditor())\n { this.pollSelection(); }\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.62.0\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../markdown/markdown\"), require(\"../../addon/mode/overlay\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../markdown/markdown\", \"../../addon/mode/overlay\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\\.beep|\\.lwz|\\.xpc|\\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\\.beeps?|xmpp|xri|ymsgr|z39\\.50[rs]?):(?:\\/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}\\/)(?:[^\\s()<>]|\\([^\\s()<>]*\\))+(?:\\([^\\s()<>]*\\)|[^\\s`*!()\\[\\]{};:'\".,<>?«»“”‘’]))/i\n\nCodeMirror.defineMode(\"gfm\", function(config, modeConfig) {\n var codeDepth = 0;\n function blankLine(state) {\n state.code = false;\n return null;\n }\n var gfmOverlay = {\n startState: function() {\n return {\n code: false,\n codeBlock: false,\n ateSpace: false\n };\n },\n copyState: function(s) {\n return {\n code: s.code,\n codeBlock: s.codeBlock,\n ateSpace: s.ateSpace\n };\n },\n token: function(stream, state) {\n state.combineTokens = null;\n\n // Hack to prevent formatting override inside code blocks (block and inline)\n if (state.codeBlock) {\n if (stream.match(/^```+/)) {\n state.codeBlock = false;\n return null;\n }\n stream.skipToEnd();\n return null;\n }\n if (stream.sol()) {\n state.code = false;\n }\n if (stream.sol() && stream.match(/^```+/)) {\n stream.skipToEnd();\n state.codeBlock = true;\n return null;\n }\n // If this block is changed, it may need to be updated in Markdown mode\n if (stream.peek() === '`') {\n stream.next();\n var before = stream.pos;\n stream.eatWhile('`');\n var difference = 1 + stream.pos - before;\n if (!state.code) {\n codeDepth = difference;\n state.code = true;\n } else {\n if (difference === codeDepth) { // Must be exact\n state.code = false;\n }\n }\n return null;\n } else if (state.code) {\n stream.next();\n return null;\n }\n // Check if space. If so, links can be formatted later on\n if (stream.eatSpace()) {\n state.ateSpace = true;\n return null;\n }\n if (stream.sol() || state.ateSpace) {\n state.ateSpace = false;\n if (modeConfig.gitHubSpice !== false) {\n if(stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+@)?(?=.{0,6}\\d)(?:[a-f0-9]{7,40}\\b)/)) {\n // User/Project@SHA\n // User@SHA\n // SHA\n state.combineTokens = true;\n return \"link\";\n } else if (stream.match(/^(?:[a-zA-Z0-9\\-_]+\\/)?(?:[a-zA-Z0-9\\-_]+)?#[0-9]+\\b/)) {\n // User/Project#Num\n // User#Num\n // #Num\n state.combineTokens = true;\n return \"link\";\n }\n }\n }\n if (stream.match(urlRE) &&\n stream.string.slice(stream.start - 2, stream.start) != \"](\" &&\n (stream.start == 0 || /\\W/.test(stream.string.charAt(stream.start - 1)))) {\n // URLs\n // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls\n // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine\n // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL\n state.combineTokens = true;\n return \"link\";\n }\n stream.next();\n return null;\n },\n blankLine: blankLine\n };\n\n var markdownConfig = {\n taskLists: true,\n strikethrough: true,\n emoji: true\n };\n for (var attr in modeConfig) {\n markdownConfig[attr] = modeConfig[attr];\n }\n markdownConfig.name = \"markdown\";\n return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay);\n\n}, \"markdown\");\n\n CodeMirror.defineMIME(\"text/x-gfm\", \"gfm\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../meta\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../meta\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"markdown\", function(cmCfg, modeCfg) {\n\n var htmlMode = CodeMirror.getMode(cmCfg, \"text/html\");\n var htmlModeMissing = htmlMode.name == \"null\"\n\n function getMode(name) {\n if (CodeMirror.findModeByName) {\n var found = CodeMirror.findModeByName(name);\n if (found) name = found.mime || found.mimes[0];\n }\n var mode = CodeMirror.getMode(cmCfg, name);\n return mode.name == \"null\" ? null : mode;\n }\n\n // Should characters that affect highlighting be highlighted separate?\n // Does not include characters that will be output (such as `1.` and `-` for lists)\n if (modeCfg.highlightFormatting === undefined)\n modeCfg.highlightFormatting = false;\n\n // Maximum number of nested blockquotes. Set to 0 for infinite nesting.\n // Excess `>` will emit `error` token.\n if (modeCfg.maxBlockquoteDepth === undefined)\n modeCfg.maxBlockquoteDepth = 0;\n\n // Turn on task lists? (\"- [ ] \" and \"- [x] \")\n if (modeCfg.taskLists === undefined) modeCfg.taskLists = false;\n\n // Turn on strikethrough syntax\n if (modeCfg.strikethrough === undefined)\n modeCfg.strikethrough = false;\n\n if (modeCfg.emoji === undefined)\n modeCfg.emoji = false;\n\n if (modeCfg.fencedCodeBlockHighlighting === undefined)\n modeCfg.fencedCodeBlockHighlighting = true;\n\n if (modeCfg.fencedCodeBlockDefaultMode === undefined)\n modeCfg.fencedCodeBlockDefaultMode = 'text/plain';\n\n if (modeCfg.xml === undefined)\n modeCfg.xml = true;\n\n // Allow token types to be overridden by user-provided token types.\n if (modeCfg.tokenTypeOverrides === undefined)\n modeCfg.tokenTypeOverrides = {};\n\n var tokenTypes = {\n header: \"header\",\n code: \"comment\",\n quote: \"quote\",\n list1: \"variable-2\",\n list2: \"variable-3\",\n list3: \"keyword\",\n hr: \"hr\",\n image: \"image\",\n imageAltText: \"image-alt-text\",\n imageMarker: \"image-marker\",\n formatting: \"formatting\",\n linkInline: \"link\",\n linkEmail: \"link\",\n linkText: \"link\",\n linkHref: \"string\",\n em: \"em\",\n strong: \"strong\",\n strikethrough: \"strikethrough\",\n emoji: \"builtin\"\n };\n\n for (var tokenType in tokenTypes) {\n if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) {\n tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType];\n }\n }\n\n var hrRE = /^([*\\-_])(?:\\s*\\1){2,}\\s*$/\n , listRE = /^(?:[*\\-+]|^[0-9]+([.)]))\\s+/\n , taskListRE = /^\\[(x| )\\](?=\\s)/i // Must follow listRE\n , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/\n , setextHeaderRE = /^ {0,3}(?:\\={1,}|-{2,})\\s*$/\n , textRE = /^[^#!\\[\\]*_\\\\<>` \"'(~:]+/\n , fencedCodeRE = /^(~~~+|```+)[ \\t]*([\\w\\/+#-]*)[^\\n`]*$/\n , linkDefRE = /^\\s*\\[[^\\]]+?\\]:.*$/ // naive link-definition\n , punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/\n , expandedTab = \" \" // CommonMark specifies tab as 4 spaces\n\n function switchInline(stream, state, f) {\n state.f = state.inline = f;\n return f(stream, state);\n }\n\n function switchBlock(stream, state, f) {\n state.f = state.block = f;\n return f(stream, state);\n }\n\n function lineIsEmpty(line) {\n return !line || !/\\S/.test(line.string)\n }\n\n // Blocks\n\n function blankLine(state) {\n // Reset linkTitle state\n state.linkTitle = false;\n state.linkHref = false;\n state.linkText = false;\n // Reset EM state\n state.em = false;\n // Reset STRONG state\n state.strong = false;\n // Reset strikethrough state\n state.strikethrough = false;\n // Reset state.quote\n state.quote = 0;\n // Reset state.indentedCode\n state.indentedCode = false;\n if (state.f == htmlBlock) {\n var exit = htmlModeMissing\n if (!exit) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n exit = inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)\n }\n if (exit) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n // Mark this line as blank\n state.prevLine = state.thisLine\n state.thisLine = {stream: null}\n return null;\n }\n\n function blockNormal(stream, state) {\n var firstTokenOnLine = stream.column() === state.indentation;\n var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream);\n var prevLineIsIndentedCode = state.indentedCode;\n var prevLineIsHr = state.prevLine.hr;\n var prevLineIsList = state.list !== false;\n var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3;\n\n state.indentedCode = false;\n\n var lineIndentation = state.indentation;\n // compute once per line (on first token)\n if (state.indentationDiff === null) {\n state.indentationDiff = state.indentation;\n if (prevLineIsList) {\n state.list = null;\n // While this list item's marker's indentation is less than the deepest\n // list item's content's indentation,pop the deepest list item\n // indentation off the stack, and update block indentation state\n while (lineIndentation < state.listStack[state.listStack.length - 1]) {\n state.listStack.pop();\n if (state.listStack.length) {\n state.indentation = state.listStack[state.listStack.length - 1];\n // less than the first list's indent -> the line is no longer a list\n } else {\n state.list = false;\n }\n }\n if (state.list !== false) {\n state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1]\n }\n }\n }\n\n // not comprehensive (currently only for setext detection purposes)\n var allowsInlineContinuation = (\n !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header &&\n (!prevLineIsList || !prevLineIsIndentedCode) &&\n !state.prevLine.fencedCodeEnd\n );\n\n var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) &&\n state.indentation <= maxNonCodeIndentation && stream.match(hrRE);\n\n var match = null;\n if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd ||\n state.prevLine.header || prevLineLineIsEmpty)) {\n stream.skipToEnd();\n state.indentedCode = true;\n return tokenTypes.code;\n } else if (stream.eatSpace()) {\n return null;\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) {\n state.quote = 0;\n state.header = match[1].length;\n state.thisLine.header = true;\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n state.f = state.inline;\n return getType(state);\n } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) {\n state.quote = firstTokenOnLine ? 1 : state.quote + 1;\n if (modeCfg.highlightFormatting) state.formatting = \"quote\";\n stream.eatSpace();\n return getType(state);\n } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) {\n var listType = match[1] ? \"ol\" : \"ul\";\n\n state.indentation = lineIndentation + stream.current().length;\n state.list = true;\n state.quote = 0;\n\n // Add this list item's content's indentation to the stack\n state.listStack.push(state.indentation);\n // Reset inline styles which shouldn't propagate across list items\n state.em = false;\n state.strong = false;\n state.code = false;\n state.strikethrough = false;\n\n if (modeCfg.taskLists && stream.match(taskListRE, false)) {\n state.taskList = true;\n }\n state.f = state.inline;\n if (modeCfg.highlightFormatting) state.formatting = [\"list\", \"list-\" + listType];\n return getType(state);\n } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) {\n state.quote = 0;\n state.fencedEndRE = new RegExp(match[1] + \"+ *$\");\n // try switching mode\n state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2] || modeCfg.fencedCodeBlockDefaultMode );\n if (state.localMode) state.localState = CodeMirror.startState(state.localMode);\n state.f = state.block = local;\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n state.code = -1\n return getType(state);\n // SETEXT has lowest block-scope precedence after HR, so check it after\n // the others (code, blockquote, list...)\n } else if (\n // if setext set, indicates line after ---/===\n state.setext || (\n // line before ---/===\n (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false &&\n !state.code && !isHr && !linkDefRE.test(stream.string) &&\n (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE))\n )\n ) {\n if ( !state.setext ) {\n state.header = match[0].charAt(0) == '=' ? 1 : 2;\n state.setext = state.header;\n } else {\n state.header = state.setext;\n // has no effect on type so we can reset it now\n state.setext = 0;\n stream.skipToEnd();\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n }\n state.thisLine.header = true;\n state.f = state.inline;\n return getType(state);\n } else if (isHr) {\n stream.skipToEnd();\n state.hr = true;\n state.thisLine.hr = true;\n return tokenTypes.hr;\n } else if (stream.peek() === '[') {\n return switchInline(stream, state, footnoteLink);\n }\n\n return switchInline(stream, state, state.inline);\n }\n\n function htmlBlock(stream, state) {\n var style = htmlMode.token(stream, state.htmlState);\n if (!htmlModeMissing) {\n var inner = CodeMirror.innerMode(htmlMode, state.htmlState)\n if ((inner.mode.name == \"xml\" && inner.state.tagStart === null &&\n (!inner.state.context && inner.state.tokenize.isInText)) ||\n (state.md_inside && stream.current().indexOf(\">\") > -1)) {\n state.f = inlineNormal;\n state.block = blockNormal;\n state.htmlState = null;\n }\n }\n return style;\n }\n\n function local(stream, state) {\n var currListInd = state.listStack[state.listStack.length - 1] || 0;\n var hasExitedList = state.indentation < currListInd;\n var maxFencedEndInd = currListInd + 3;\n if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) {\n if (modeCfg.highlightFormatting) state.formatting = \"code-block\";\n var returnType;\n if (!hasExitedList) returnType = getType(state)\n state.localMode = state.localState = null;\n state.block = blockNormal;\n state.f = inlineNormal;\n state.fencedEndRE = null;\n state.code = 0\n state.thisLine.fencedCodeEnd = true;\n if (hasExitedList) return switchBlock(stream, state, state.block);\n return returnType;\n } else if (state.localMode) {\n return state.localMode.token(stream, state.localState);\n } else {\n stream.skipToEnd();\n return tokenTypes.code;\n }\n }\n\n // Inline\n function getType(state) {\n var styles = [];\n\n if (state.formatting) {\n styles.push(tokenTypes.formatting);\n\n if (typeof state.formatting === \"string\") state.formatting = [state.formatting];\n\n for (var i = 0; i < state.formatting.length; i++) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i]);\n\n if (state.formatting[i] === \"header\") {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.header);\n }\n\n // Add `formatting-quote` and `formatting-quote-#` for blockquotes\n // Add `error` instead if the maximum blockquote nesting depth is passed\n if (state.formatting[i] === \"quote\") {\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.formatting + \"-\" + state.formatting[i] + \"-\" + state.quote);\n } else {\n styles.push(\"error\");\n }\n }\n }\n }\n\n if (state.taskOpen) {\n styles.push(\"meta\");\n return styles.length ? styles.join(' ') : null;\n }\n if (state.taskClosed) {\n styles.push(\"property\");\n return styles.length ? styles.join(' ') : null;\n }\n\n if (state.linkHref) {\n styles.push(tokenTypes.linkHref, \"url\");\n } else { // Only apply inline styles to non-url text\n if (state.strong) { styles.push(tokenTypes.strong); }\n if (state.em) { styles.push(tokenTypes.em); }\n if (state.strikethrough) { styles.push(tokenTypes.strikethrough); }\n if (state.emoji) { styles.push(tokenTypes.emoji); }\n if (state.linkText) { styles.push(tokenTypes.linkText); }\n if (state.code) { styles.push(tokenTypes.code); }\n if (state.image) { styles.push(tokenTypes.image); }\n if (state.imageAltText) { styles.push(tokenTypes.imageAltText, \"link\"); }\n if (state.imageMarker) { styles.push(tokenTypes.imageMarker); }\n }\n\n if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + \"-\" + state.header); }\n\n if (state.quote) {\n styles.push(tokenTypes.quote);\n\n // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth\n if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) {\n styles.push(tokenTypes.quote + \"-\" + state.quote);\n } else {\n styles.push(tokenTypes.quote + \"-\" + modeCfg.maxBlockquoteDepth);\n }\n }\n\n if (state.list !== false) {\n var listMod = (state.listStack.length - 1) % 3;\n if (!listMod) {\n styles.push(tokenTypes.list1);\n } else if (listMod === 1) {\n styles.push(tokenTypes.list2);\n } else {\n styles.push(tokenTypes.list3);\n }\n }\n\n if (state.trailingSpaceNewLine) {\n styles.push(\"trailing-space-new-line\");\n } else if (state.trailingSpace) {\n styles.push(\"trailing-space-\" + (state.trailingSpace % 2 ? \"a\" : \"b\"));\n }\n\n return styles.length ? styles.join(' ') : null;\n }\n\n function handleText(stream, state) {\n if (stream.match(textRE, true)) {\n return getType(state);\n }\n return undefined;\n }\n\n function inlineNormal(stream, state) {\n var style = state.text(stream, state);\n if (typeof style !== 'undefined')\n return style;\n\n if (state.list) { // List marker (*, +, -, 1., etc)\n state.list = null;\n return getType(state);\n }\n\n if (state.taskList) {\n var taskOpen = stream.match(taskListRE, true)[1] === \" \";\n if (taskOpen) state.taskOpen = true;\n else state.taskClosed = true;\n if (modeCfg.highlightFormatting) state.formatting = \"task\";\n state.taskList = false;\n return getType(state);\n }\n\n state.taskOpen = false;\n state.taskClosed = false;\n\n if (state.header && stream.match(/^#+$/, true)) {\n if (modeCfg.highlightFormatting) state.formatting = \"header\";\n return getType(state);\n }\n\n var ch = stream.next();\n\n // Matches link titles present on next line\n if (state.linkTitle) {\n state.linkTitle = false;\n var matchCh = ch;\n if (ch === '(') {\n matchCh = ')';\n }\n matchCh = (matchCh+'').replace(/([.?*+^\\[\\]\\\\(){}|-])/g, \"\\\\$1\");\n var regex = '^\\\\s*(?:[^' + matchCh + '\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)' + matchCh;\n if (stream.match(new RegExp(regex), true)) {\n return tokenTypes.linkHref;\n }\n }\n\n // If this block is changed, it may need to be updated in GFM mode\n if (ch === '`') {\n var previousFormatting = state.formatting;\n if (modeCfg.highlightFormatting) state.formatting = \"code\";\n stream.eatWhile('`');\n var count = stream.current().length\n if (state.code == 0 && (!state.quote || count == 1)) {\n state.code = count\n return getType(state)\n } else if (count == state.code) { // Must be exact\n var t = getType(state)\n state.code = 0\n return t\n } else {\n state.formatting = previousFormatting\n return getType(state)\n }\n } else if (state.code) {\n return getType(state);\n }\n\n if (ch === '\\\\') {\n stream.next();\n if (modeCfg.highlightFormatting) {\n var type = getType(state);\n var formattingEscape = tokenTypes.formatting + \"-escape\";\n return type ? type + \" \" + formattingEscape : formattingEscape;\n }\n }\n\n if (ch === '!' && stream.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/, false)) {\n state.imageMarker = true;\n state.image = true;\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === '[' && state.imageMarker && stream.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/, false)) {\n state.imageMarker = false;\n state.imageAltText = true\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n return getType(state);\n }\n\n if (ch === ']' && state.imageAltText) {\n if (modeCfg.highlightFormatting) state.formatting = \"image\";\n var type = getType(state);\n state.imageAltText = false;\n state.image = false;\n state.inline = state.f = linkHref;\n return type;\n }\n\n if (ch === '[' && !state.image) {\n if (state.linkText && stream.match(/^.*?\\]/)) return getType(state)\n state.linkText = true;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n return getType(state);\n }\n\n if (ch === ']' && state.linkText) {\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n state.linkText = false;\n state.inline = state.f = stream.match(/\\(.*?\\)| ?\\[.*?\\]/, false) ? linkHref : inlineNormal\n return type;\n }\n\n if (ch === '<' && stream.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n if (ch === '<' && stream.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/, false)) {\n state.f = state.inline = linkInline;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkEmail;\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^(!--|\\?|!\\[CDATA\\[|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*(?:>|$))/i, false)) {\n var end = stream.string.indexOf(\">\", stream.pos);\n if (end != -1) {\n var atts = stream.string.substring(stream.start, end);\n if (/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(atts)) state.md_inside = true;\n }\n stream.backUp(1);\n state.htmlState = CodeMirror.startState(htmlMode);\n return switchBlock(stream, state, htmlBlock);\n }\n\n if (modeCfg.xml && ch === '<' && stream.match(/^\\/\\w*?>/)) {\n state.md_inside = false;\n return \"tag\";\n } else if (ch === \"*\" || ch === \"_\") {\n var len = 1, before = stream.pos == 1 ? \" \" : stream.string.charAt(stream.pos - 2)\n while (len < 3 && stream.eat(ch)) len++\n var after = stream.peek() || \" \"\n // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis\n var leftFlanking = !/\\s/.test(after) && (!punctuation.test(after) || /\\s/.test(before) || punctuation.test(before))\n var rightFlanking = !/\\s/.test(before) && (!punctuation.test(before) || /\\s/.test(after) || punctuation.test(after))\n var setEm = null, setStrong = null\n if (len % 2) { // Em\n if (!state.em && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setEm = true\n else if (state.em == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setEm = false\n }\n if (len > 1) { // Strong\n if (!state.strong && leftFlanking && (ch === \"*\" || !rightFlanking || punctuation.test(before)))\n setStrong = true\n else if (state.strong == ch && rightFlanking && (ch === \"*\" || !leftFlanking || punctuation.test(after)))\n setStrong = false\n }\n if (setStrong != null || setEm != null) {\n if (modeCfg.highlightFormatting) state.formatting = setEm == null ? \"strong\" : setStrong == null ? \"em\" : \"strong em\"\n if (setEm === true) state.em = ch\n if (setStrong === true) state.strong = ch\n var t = getType(state)\n if (setEm === false) state.em = false\n if (setStrong === false) state.strong = false\n return t\n }\n } else if (ch === ' ') {\n if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(1);\n }\n }\n }\n\n if (modeCfg.strikethrough) {\n if (ch === '~' && stream.eatWhile(ch)) {\n if (state.strikethrough) {// Remove strikethrough\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n var t = getType(state);\n state.strikethrough = false;\n return t;\n } else if (stream.match(/^[^\\s]/, false)) {// Add strikethrough\n state.strikethrough = true;\n if (modeCfg.highlightFormatting) state.formatting = \"strikethrough\";\n return getType(state);\n }\n } else if (ch === ' ') {\n if (stream.match('~~', true)) { // Probably surrounded by space\n if (stream.peek() === ' ') { // Surrounded by spaces, ignore\n return getType(state);\n } else { // Not surrounded by spaces, back up pointer\n stream.backUp(2);\n }\n }\n }\n }\n\n if (modeCfg.emoji && ch === \":\" && stream.match(/^(?:[a-z_\\d+][a-z_\\d+-]*|\\-[a-z_\\d+][a-z_\\d+-]*):/)) {\n state.emoji = true;\n if (modeCfg.highlightFormatting) state.formatting = \"emoji\";\n var retType = getType(state);\n state.emoji = false;\n return retType;\n }\n\n if (ch === ' ') {\n if (stream.match(/^ +$/, false)) {\n state.trailingSpace++;\n } else if (state.trailingSpace) {\n state.trailingSpaceNewLine = true;\n }\n }\n\n return getType(state);\n }\n\n function linkInline(stream, state) {\n var ch = stream.next();\n\n if (ch === \">\") {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var type = getType(state);\n if (type){\n type += \" \";\n } else {\n type = \"\";\n }\n return type + tokenTypes.linkInline;\n }\n\n stream.match(/^[^>]+/, true);\n\n return tokenTypes.linkInline;\n }\n\n function linkHref(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n var ch = stream.next();\n if (ch === '(' || ch === '[') {\n state.f = state.inline = getLinkHrefInside(ch === \"(\" ? \")\" : \"]\");\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n state.linkHref = true;\n return getType(state);\n }\n return 'error';\n }\n\n var linkRE = {\n \")\": /^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\n \"]\": /^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/\n }\n\n function getLinkHrefInside(endChar) {\n return function(stream, state) {\n var ch = stream.next();\n\n if (ch === endChar) {\n state.f = state.inline = inlineNormal;\n if (modeCfg.highlightFormatting) state.formatting = \"link-string\";\n var returnState = getType(state);\n state.linkHref = false;\n return returnState;\n }\n\n stream.match(linkRE[endChar])\n state.linkHref = true;\n return getType(state);\n };\n }\n\n function footnoteLink(stream, state) {\n if (stream.match(/^([^\\]\\\\]|\\\\.)*\\]:/, false)) {\n state.f = footnoteLinkInside;\n stream.next(); // Consume [\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n state.linkText = true;\n return getType(state);\n }\n return switchInline(stream, state, inlineNormal);\n }\n\n function footnoteLinkInside(stream, state) {\n if (stream.match(']:', true)) {\n state.f = state.inline = footnoteUrl;\n if (modeCfg.highlightFormatting) state.formatting = \"link\";\n var returnType = getType(state);\n state.linkText = false;\n return returnType;\n }\n\n stream.match(/^([^\\]\\\\]|\\\\.)+/, true);\n\n return tokenTypes.linkText;\n }\n\n function footnoteUrl(stream, state) {\n // Check if space, and return NULL if so (to avoid marking the space)\n if(stream.eatSpace()){\n return null;\n }\n // Match URL\n stream.match(/^[^\\s]+/, true);\n // Check for link title\n if (stream.peek() === undefined) { // End of line, set flag to check next line\n state.linkTitle = true;\n } else { // More content on line, check if link title\n stream.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\.)+\"|'(?:[^'\\\\]|\\\\.)+'|\\((?:[^)\\\\]|\\\\.)+\\)))?/, true);\n }\n state.f = state.inline = inlineNormal;\n return tokenTypes.linkHref + \" url\";\n }\n\n var mode = {\n startState: function() {\n return {\n f: blockNormal,\n\n prevLine: {stream: null},\n thisLine: {stream: null},\n\n block: blockNormal,\n htmlState: null,\n indentation: 0,\n\n inline: inlineNormal,\n text: handleText,\n\n formatting: false,\n linkText: false,\n linkHref: false,\n linkTitle: false,\n code: 0,\n em: false,\n strong: false,\n header: 0,\n setext: 0,\n hr: false,\n taskList: false,\n list: false,\n listStack: [],\n quote: 0,\n trailingSpace: 0,\n trailingSpaceNewLine: false,\n strikethrough: false,\n emoji: false,\n fencedEndRE: null\n };\n },\n\n copyState: function(s) {\n return {\n f: s.f,\n\n prevLine: s.prevLine,\n thisLine: s.thisLine,\n\n block: s.block,\n htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState),\n indentation: s.indentation,\n\n localMode: s.localMode,\n localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null,\n\n inline: s.inline,\n text: s.text,\n formatting: false,\n linkText: s.linkText,\n linkTitle: s.linkTitle,\n linkHref: s.linkHref,\n code: s.code,\n em: s.em,\n strong: s.strong,\n strikethrough: s.strikethrough,\n emoji: s.emoji,\n header: s.header,\n setext: s.setext,\n hr: s.hr,\n taskList: s.taskList,\n list: s.list,\n listStack: s.listStack.slice(0),\n quote: s.quote,\n indentedCode: s.indentedCode,\n trailingSpace: s.trailingSpace,\n trailingSpaceNewLine: s.trailingSpaceNewLine,\n md_inside: s.md_inside,\n fencedEndRE: s.fencedEndRE\n };\n },\n\n token: function(stream, state) {\n\n // Reset state.formatting\n state.formatting = false;\n\n if (stream != state.thisLine.stream) {\n state.header = 0;\n state.hr = false;\n\n if (stream.match(/^\\s*$/, true)) {\n blankLine(state);\n return null;\n }\n\n state.prevLine = state.thisLine\n state.thisLine = {stream: stream}\n\n // Reset state.taskList\n state.taskList = false;\n\n // Reset state.trailingSpace\n state.trailingSpace = 0;\n state.trailingSpaceNewLine = false;\n\n if (!state.localState) {\n state.f = state.block;\n if (state.f != htmlBlock) {\n var indentation = stream.match(/^\\s*/, true)[0].replace(/\\t/g, expandedTab).length;\n state.indentation = indentation;\n state.indentationDiff = null;\n if (indentation > 0) return null;\n }\n }\n }\n return state.f(stream, state);\n },\n\n innerMode: function(state) {\n if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode};\n if (state.localState) return {state: state.localState, mode: state.localMode};\n return {state: state, mode: mode};\n },\n\n indent: function(state, textAfter, line) {\n if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line)\n if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line)\n return CodeMirror.Pass\n },\n\n blankLine: blankLine,\n\n getType: getType,\n\n blockCommentStart: \"\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n fold: \"markdown\"\n };\n return mode;\n}, \"xml\");\n\nCodeMirror.defineMIME(\"text/markdown\", \"markdown\");\n\nCodeMirror.defineMIME(\"text/x-markdown\", \"markdown\");\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/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.modeInfo = [\n {name: \"APL\", mime: \"text/apl\", mode: \"apl\", ext: [\"dyalog\", \"apl\"]},\n {name: \"PGP\", mimes: [\"application/pgp\", \"application/pgp-encrypted\", \"application/pgp-keys\", \"application/pgp-signature\"], mode: \"asciiarmor\", ext: [\"asc\", \"pgp\", \"sig\"]},\n {name: \"ASN.1\", mime: \"text/x-ttcn-asn\", mode: \"asn.1\", ext: [\"asn\", \"asn1\"]},\n {name: \"Asterisk\", mime: \"text/x-asterisk\", mode: \"asterisk\", file: /^extensions\\.conf$/i},\n {name: \"Brainfuck\", mime: \"text/x-brainfuck\", mode: \"brainfuck\", ext: [\"b\", \"bf\"]},\n {name: \"C\", mime: \"text/x-csrc\", mode: \"clike\", ext: [\"c\", \"h\", \"ino\"]},\n {name: \"C++\", mime: \"text/x-c++src\", mode: \"clike\", ext: [\"cpp\", \"c++\", \"cc\", \"cxx\", \"hpp\", \"h++\", \"hh\", \"hxx\"], alias: [\"cpp\"]},\n {name: \"Cobol\", mime: \"text/x-cobol\", mode: \"cobol\", ext: [\"cob\", \"cpy\"]},\n {name: \"C#\", mime: \"text/x-csharp\", mode: \"clike\", ext: [\"cs\"], alias: [\"csharp\", \"cs\"]},\n {name: \"Clojure\", mime: \"text/x-clojure\", mode: \"clojure\", ext: [\"clj\", \"cljc\", \"cljx\"]},\n {name: \"ClojureScript\", mime: \"text/x-clojurescript\", mode: \"clojure\", ext: [\"cljs\"]},\n {name: \"Closure Stylesheets (GSS)\", mime: \"text/x-gss\", mode: \"css\", ext: [\"gss\"]},\n {name: \"CMake\", mime: \"text/x-cmake\", mode: \"cmake\", ext: [\"cmake\", \"cmake.in\"], file: /^CMakeLists\\.txt$/},\n {name: \"CoffeeScript\", mimes: [\"application/vnd.coffeescript\", \"text/coffeescript\", \"text/x-coffeescript\"], mode: \"coffeescript\", ext: [\"coffee\"], alias: [\"coffee\", \"coffee-script\"]},\n {name: \"Common Lisp\", mime: \"text/x-common-lisp\", mode: \"commonlisp\", ext: [\"cl\", \"lisp\", \"el\"], alias: [\"lisp\"]},\n {name: \"Cypher\", mime: \"application/x-cypher-query\", mode: \"cypher\", ext: [\"cyp\", \"cypher\"]},\n {name: \"Cython\", mime: \"text/x-cython\", mode: \"python\", ext: [\"pyx\", \"pxd\", \"pxi\"]},\n {name: \"Crystal\", mime: \"text/x-crystal\", mode: \"crystal\", ext: [\"cr\"]},\n {name: \"CSS\", mime: \"text/css\", mode: \"css\", ext: [\"css\"]},\n {name: \"CQL\", mime: \"text/x-cassandra\", mode: \"sql\", ext: [\"cql\"]},\n {name: \"D\", mime: \"text/x-d\", mode: \"d\", ext: [\"d\"]},\n {name: \"Dart\", mimes: [\"application/dart\", \"text/x-dart\"], mode: \"dart\", ext: [\"dart\"]},\n {name: \"diff\", mime: \"text/x-diff\", mode: \"diff\", ext: [\"diff\", \"patch\"]},\n {name: \"Django\", mime: \"text/x-django\", mode: \"django\"},\n {name: \"Dockerfile\", mime: \"text/x-dockerfile\", mode: \"dockerfile\", file: /^Dockerfile$/},\n {name: \"DTD\", mime: \"application/xml-dtd\", mode: \"dtd\", ext: [\"dtd\"]},\n {name: \"Dylan\", mime: \"text/x-dylan\", mode: \"dylan\", ext: [\"dylan\", \"dyl\", \"intr\"]},\n {name: \"EBNF\", mime: \"text/x-ebnf\", mode: \"ebnf\"},\n {name: \"ECL\", mime: \"text/x-ecl\", mode: \"ecl\", ext: [\"ecl\"]},\n {name: \"edn\", mime: \"application/edn\", mode: \"clojure\", ext: [\"edn\"]},\n {name: \"Eiffel\", mime: \"text/x-eiffel\", mode: \"eiffel\", ext: [\"e\"]},\n {name: \"Elm\", mime: \"text/x-elm\", mode: \"elm\", ext: [\"elm\"]},\n {name: \"Embedded JavaScript\", mime: \"application/x-ejs\", mode: \"htmlembedded\", ext: [\"ejs\"]},\n {name: \"Embedded Ruby\", mime: \"application/x-erb\", mode: \"htmlembedded\", ext: [\"erb\"]},\n {name: \"Erlang\", mime: \"text/x-erlang\", mode: \"erlang\", ext: [\"erl\"]},\n {name: \"Esper\", mime: \"text/x-esper\", mode: \"sql\"},\n {name: \"Factor\", mime: \"text/x-factor\", mode: \"factor\", ext: [\"factor\"]},\n {name: \"FCL\", mime: \"text/x-fcl\", mode: \"fcl\"},\n {name: \"Forth\", mime: \"text/x-forth\", mode: \"forth\", ext: [\"forth\", \"fth\", \"4th\"]},\n {name: \"Fortran\", mime: \"text/x-fortran\", mode: \"fortran\", ext: [\"f\", \"for\", \"f77\", \"f90\", \"f95\"]},\n {name: \"F#\", mime: \"text/x-fsharp\", mode: \"mllike\", ext: [\"fs\"], alias: [\"fsharp\"]},\n {name: \"Gas\", mime: \"text/x-gas\", mode: \"gas\", ext: [\"s\"]},\n {name: \"Gherkin\", mime: \"text/x-feature\", mode: \"gherkin\", ext: [\"feature\"]},\n {name: \"GitHub Flavored Markdown\", mime: \"text/x-gfm\", mode: \"gfm\", file: /^(readme|contributing|history)\\.md$/i},\n {name: \"Go\", mime: \"text/x-go\", mode: \"go\", ext: [\"go\"]},\n {name: \"Groovy\", mime: \"text/x-groovy\", mode: \"groovy\", ext: [\"groovy\", \"gradle\"], file: /^Jenkinsfile$/},\n {name: \"HAML\", mime: \"text/x-haml\", mode: \"haml\", ext: [\"haml\"]},\n {name: \"Haskell\", mime: \"text/x-haskell\", mode: \"haskell\", ext: [\"hs\"]},\n {name: \"Haskell (Literate)\", mime: \"text/x-literate-haskell\", mode: \"haskell-literate\", ext: [\"lhs\"]},\n {name: \"Haxe\", mime: \"text/x-haxe\", mode: \"haxe\", ext: [\"hx\"]},\n {name: \"HXML\", mime: \"text/x-hxml\", mode: \"haxe\", ext: [\"hxml\"]},\n {name: \"ASP.NET\", mime: \"application/x-aspx\", mode: \"htmlembedded\", ext: [\"aspx\"], alias: [\"asp\", \"aspx\"]},\n {name: \"HTML\", mime: \"text/html\", mode: \"htmlmixed\", ext: [\"html\", \"htm\", \"handlebars\", \"hbs\"], alias: [\"xhtml\"]},\n {name: \"HTTP\", mime: \"message/http\", mode: \"http\"},\n {name: \"IDL\", mime: \"text/x-idl\", mode: \"idl\", ext: [\"pro\"]},\n {name: \"Pug\", mime: \"text/x-pug\", mode: \"pug\", ext: [\"jade\", \"pug\"], alias: [\"jade\"]},\n {name: \"Java\", mime: \"text/x-java\", mode: \"clike\", ext: [\"java\"]},\n {name: \"Java Server Pages\", mime: \"application/x-jsp\", mode: \"htmlembedded\", ext: [\"jsp\"], alias: [\"jsp\"]},\n {name: \"JavaScript\", mimes: [\"text/javascript\", \"text/ecmascript\", \"application/javascript\", \"application/x-javascript\", \"application/ecmascript\"],\n mode: \"javascript\", ext: [\"js\"], alias: [\"ecmascript\", \"js\", \"node\"]},\n {name: \"JSON\", mimes: [\"application/json\", \"application/x-json\"], mode: \"javascript\", ext: [\"json\", \"map\"], alias: [\"json5\"]},\n {name: \"JSON-LD\", mime: \"application/ld+json\", mode: \"javascript\", ext: [\"jsonld\"], alias: [\"jsonld\"]},\n {name: \"JSX\", mime: \"text/jsx\", mode: \"jsx\", ext: [\"jsx\"]},\n {name: \"Jinja2\", mime: \"text/jinja2\", mode: \"jinja2\", ext: [\"j2\", \"jinja\", \"jinja2\"]},\n {name: \"Julia\", mime: \"text/x-julia\", mode: \"julia\", ext: [\"jl\"], alias: [\"jl\"]},\n {name: \"Kotlin\", mime: \"text/x-kotlin\", mode: \"clike\", ext: [\"kt\"]},\n {name: \"LESS\", mime: \"text/x-less\", mode: \"css\", ext: [\"less\"]},\n {name: \"LiveScript\", mime: \"text/x-livescript\", mode: \"livescript\", ext: [\"ls\"], alias: [\"ls\"]},\n {name: \"Lua\", mime: \"text/x-lua\", mode: \"lua\", ext: [\"lua\"]},\n {name: \"Markdown\", mime: \"text/x-markdown\", mode: \"markdown\", ext: [\"markdown\", \"md\", \"mkd\"]},\n {name: \"mIRC\", mime: \"text/mirc\", mode: \"mirc\"},\n {name: \"MariaDB SQL\", mime: \"text/x-mariadb\", mode: \"sql\"},\n {name: \"Mathematica\", mime: \"text/x-mathematica\", mode: \"mathematica\", ext: [\"m\", \"nb\", \"wl\", \"wls\"]},\n {name: \"Modelica\", mime: \"text/x-modelica\", mode: \"modelica\", ext: [\"mo\"]},\n {name: \"MUMPS\", mime: \"text/x-mumps\", mode: \"mumps\", ext: [\"mps\"]},\n {name: \"MS SQL\", mime: \"text/x-mssql\", mode: \"sql\"},\n {name: \"mbox\", mime: \"application/mbox\", mode: \"mbox\", ext: [\"mbox\"]},\n {name: \"MySQL\", mime: \"text/x-mysql\", mode: \"sql\"},\n {name: \"Nginx\", mime: \"text/x-nginx-conf\", mode: \"nginx\", file: /nginx.*\\.conf$/i},\n {name: \"NSIS\", mime: \"text/x-nsis\", mode: \"nsis\", ext: [\"nsh\", \"nsi\"]},\n {name: \"NTriples\", mimes: [\"application/n-triples\", \"application/n-quads\", \"text/n-triples\"],\n mode: \"ntriples\", ext: [\"nt\", \"nq\"]},\n {name: \"Objective-C\", mime: \"text/x-objectivec\", mode: \"clike\", ext: [\"m\"], alias: [\"objective-c\", \"objc\"]},\n {name: \"Objective-C++\", mime: \"text/x-objectivec++\", mode: \"clike\", ext: [\"mm\"], alias: [\"objective-c++\", \"objc++\"]},\n {name: \"OCaml\", mime: \"text/x-ocaml\", mode: \"mllike\", ext: [\"ml\", \"mli\", \"mll\", \"mly\"]},\n {name: \"Octave\", mime: \"text/x-octave\", mode: \"octave\", ext: [\"m\"]},\n {name: \"Oz\", mime: \"text/x-oz\", mode: \"oz\", ext: [\"oz\"]},\n {name: \"Pascal\", mime: \"text/x-pascal\", mode: \"pascal\", ext: [\"p\", \"pas\"]},\n {name: \"PEG.js\", mime: \"null\", mode: \"pegjs\", ext: [\"jsonld\"]},\n {name: \"Perl\", mime: \"text/x-perl\", mode: \"perl\", ext: [\"pl\", \"pm\"]},\n {name: \"PHP\", mimes: [\"text/x-php\", \"application/x-httpd-php\", \"application/x-httpd-php-open\"], mode: \"php\", ext: [\"php\", \"php3\", \"php4\", \"php5\", \"php7\", \"phtml\"]},\n {name: \"Pig\", mime: \"text/x-pig\", mode: \"pig\", ext: [\"pig\"]},\n {name: \"Plain Text\", mime: \"text/plain\", mode: \"null\", ext: [\"txt\", \"text\", \"conf\", \"def\", \"list\", \"log\"]},\n {name: \"PLSQL\", mime: \"text/x-plsql\", mode: \"sql\", ext: [\"pls\"]},\n {name: \"PostgreSQL\", mime: \"text/x-pgsql\", mode: \"sql\"},\n {name: \"PowerShell\", mime: \"application/x-powershell\", mode: \"powershell\", ext: [\"ps1\", \"psd1\", \"psm1\"]},\n {name: \"Properties files\", mime: \"text/x-properties\", mode: \"properties\", ext: [\"properties\", \"ini\", \"in\"], alias: [\"ini\", \"properties\"]},\n {name: \"ProtoBuf\", mime: \"text/x-protobuf\", mode: \"protobuf\", ext: [\"proto\"]},\n {name: \"Python\", mime: \"text/x-python\", mode: \"python\", ext: [\"BUILD\", \"bzl\", \"py\", \"pyw\"], file: /^(BUCK|BUILD)$/},\n {name: \"Puppet\", mime: \"text/x-puppet\", mode: \"puppet\", ext: [\"pp\"]},\n {name: \"Q\", mime: \"text/x-q\", mode: \"q\", ext: [\"q\"]},\n {name: \"R\", mime: \"text/x-rsrc\", mode: \"r\", ext: [\"r\", \"R\"], alias: [\"rscript\"]},\n {name: \"reStructuredText\", mime: \"text/x-rst\", mode: \"rst\", ext: [\"rst\"], alias: [\"rst\"]},\n {name: \"RPM Changes\", mime: \"text/x-rpm-changes\", mode: \"rpm\"},\n {name: \"RPM Spec\", mime: \"text/x-rpm-spec\", mode: \"rpm\", ext: [\"spec\"]},\n {name: \"Ruby\", mime: \"text/x-ruby\", mode: \"ruby\", ext: [\"rb\"], alias: [\"jruby\", \"macruby\", \"rake\", \"rb\", \"rbx\"]},\n {name: \"Rust\", mime: \"text/x-rustsrc\", mode: \"rust\", ext: [\"rs\"]},\n {name: \"SAS\", mime: \"text/x-sas\", mode: \"sas\", ext: [\"sas\"]},\n {name: \"Sass\", mime: \"text/x-sass\", mode: \"sass\", ext: [\"sass\"]},\n {name: \"Scala\", mime: \"text/x-scala\", mode: \"clike\", ext: [\"scala\"]},\n {name: \"Scheme\", mime: \"text/x-scheme\", mode: \"scheme\", ext: [\"scm\", \"ss\"]},\n {name: \"SCSS\", mime: \"text/x-scss\", mode: \"css\", ext: [\"scss\"]},\n {name: \"Shell\", mimes: [\"text/x-sh\", \"application/x-sh\"], mode: \"shell\", ext: [\"sh\", \"ksh\", \"bash\"], alias: [\"bash\", \"sh\", \"zsh\"], file: /^PKGBUILD$/},\n {name: \"Sieve\", mime: \"application/sieve\", mode: \"sieve\", ext: [\"siv\", \"sieve\"]},\n {name: \"Slim\", mimes: [\"text/x-slim\", \"application/x-slim\"], mode: \"slim\", ext: [\"slim\"]},\n {name: \"Smalltalk\", mime: \"text/x-stsrc\", mode: \"smalltalk\", ext: [\"st\"]},\n {name: \"Smarty\", mime: \"text/x-smarty\", mode: \"smarty\", ext: [\"tpl\"]},\n {name: \"Solr\", mime: \"text/x-solr\", mode: \"solr\"},\n {name: \"SML\", mime: \"text/x-sml\", mode: \"mllike\", ext: [\"sml\", \"sig\", \"fun\", \"smackspec\"]},\n {name: \"Soy\", mime: \"text/x-soy\", mode: \"soy\", ext: [\"soy\"], alias: [\"closure template\"]},\n {name: \"SPARQL\", mime: \"application/sparql-query\", mode: \"sparql\", ext: [\"rq\", \"sparql\"], alias: [\"sparul\"]},\n {name: \"Spreadsheet\", mime: \"text/x-spreadsheet\", mode: \"spreadsheet\", alias: [\"excel\", \"formula\"]},\n {name: \"SQL\", mime: \"text/x-sql\", mode: \"sql\", ext: [\"sql\"]},\n {name: \"SQLite\", mime: \"text/x-sqlite\", mode: \"sql\"},\n {name: \"Squirrel\", mime: \"text/x-squirrel\", mode: \"clike\", ext: [\"nut\"]},\n {name: \"Stylus\", mime: \"text/x-styl\", mode: \"stylus\", ext: [\"styl\"]},\n {name: \"Swift\", mime: \"text/x-swift\", mode: \"swift\", ext: [\"swift\"]},\n {name: \"sTeX\", mime: \"text/x-stex\", mode: \"stex\"},\n {name: \"LaTeX\", mime: \"text/x-latex\", mode: \"stex\", ext: [\"text\", \"ltx\", \"tex\"], alias: [\"tex\"]},\n {name: \"SystemVerilog\", mime: \"text/x-systemverilog\", mode: \"verilog\", ext: [\"v\", \"sv\", \"svh\"]},\n {name: \"Tcl\", mime: \"text/x-tcl\", mode: \"tcl\", ext: [\"tcl\"]},\n {name: \"Textile\", mime: \"text/x-textile\", mode: \"textile\", ext: [\"textile\"]},\n {name: \"TiddlyWiki\", mime: \"text/x-tiddlywiki\", mode: \"tiddlywiki\"},\n {name: \"Tiki wiki\", mime: \"text/tiki\", mode: \"tiki\"},\n {name: \"TOML\", mime: \"text/x-toml\", mode: \"toml\", ext: [\"toml\"]},\n {name: \"Tornado\", mime: \"text/x-tornado\", mode: \"tornado\"},\n {name: \"troff\", mime: \"text/troff\", mode: \"troff\", ext: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]},\n {name: \"TTCN\", mime: \"text/x-ttcn\", mode: \"ttcn\", ext: [\"ttcn\", \"ttcn3\", \"ttcnpp\"]},\n {name: \"TTCN_CFG\", mime: \"text/x-ttcn-cfg\", mode: \"ttcn-cfg\", ext: [\"cfg\"]},\n {name: \"Turtle\", mime: \"text/turtle\", mode: \"turtle\", ext: [\"ttl\"]},\n {name: \"TypeScript\", mime: \"application/typescript\", mode: \"javascript\", ext: [\"ts\"], alias: [\"ts\"]},\n {name: \"TypeScript-JSX\", mime: \"text/typescript-jsx\", mode: \"jsx\", ext: [\"tsx\"], alias: [\"tsx\"]},\n {name: \"Twig\", mime: \"text/x-twig\", mode: \"twig\"},\n {name: \"Web IDL\", mime: \"text/x-webidl\", mode: \"webidl\", ext: [\"webidl\"]},\n {name: \"VB.NET\", mime: \"text/x-vb\", mode: \"vb\", ext: [\"vb\"]},\n {name: \"VBScript\", mime: \"text/vbscript\", mode: \"vbscript\", ext: [\"vbs\"]},\n {name: \"Velocity\", mime: \"text/velocity\", mode: \"velocity\", ext: [\"vtl\"]},\n {name: \"Verilog\", mime: \"text/x-verilog\", mode: \"verilog\", ext: [\"v\"]},\n {name: \"VHDL\", mime: \"text/x-vhdl\", mode: \"vhdl\", ext: [\"vhd\", \"vhdl\"]},\n {name: \"Vue.js Component\", mimes: [\"script/x-vue\", \"text/x-vue\"], mode: \"vue\", ext: [\"vue\"]},\n {name: \"XML\", mimes: [\"application/xml\", \"text/xml\"], mode: \"xml\", ext: [\"xml\", \"xsl\", \"xsd\", \"svg\"], alias: [\"rss\", \"wsdl\", \"xsd\"]},\n {name: \"XQuery\", mime: \"application/xquery\", mode: \"xquery\", ext: [\"xy\", \"xquery\"]},\n {name: \"Yacas\", mime: \"text/x-yacas\", mode: \"yacas\", ext: [\"ys\"]},\n {name: \"YAML\", mimes: [\"text/x-yaml\", \"text/yaml\"], mode: \"yaml\", ext: [\"yaml\", \"yml\"], alias: [\"yml\"]},\n {name: \"Z80\", mime: \"text/x-z80\", mode: \"z80\", ext: [\"z80\"]},\n {name: \"mscgen\", mime: \"text/x-mscgen\", mode: \"mscgen\", ext: [\"mscgen\", \"mscin\", \"msc\"]},\n {name: \"xu\", mime: \"text/x-xu\", mode: \"mscgen\", ext: [\"xu\"]},\n {name: \"msgenny\", mime: \"text/x-msgenny\", mode: \"mscgen\", ext: [\"msgenny\"]},\n {name: \"WebAssembly\", mime: \"text/webassembly\", mode: \"wast\", ext: [\"wat\", \"wast\"]},\n ];\n // Ensure all modes have a mime property for backwards compatibility\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mimes) info.mime = info.mimes[0];\n }\n\n CodeMirror.findModeByMIME = function(mime) {\n mime = mime.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.mime == mime) return info;\n if (info.mimes) for (var j = 0; j < info.mimes.length; j++)\n if (info.mimes[j] == mime) return info;\n }\n if (/\\+xml$/.test(mime)) return CodeMirror.findModeByMIME(\"application/xml\")\n if (/\\+json$/.test(mime)) return CodeMirror.findModeByMIME(\"application/json\")\n };\n\n CodeMirror.findModeByExtension = function(ext) {\n ext = ext.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.ext) for (var j = 0; j < info.ext.length; j++)\n if (info.ext[j] == ext) return info;\n }\n };\n\n CodeMirror.findModeByFileName = function(filename) {\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.file && info.file.test(filename)) return info;\n }\n var dot = filename.lastIndexOf(\".\");\n var ext = dot > -1 && filename.substring(dot + 1, filename.length);\n if (ext) return CodeMirror.findModeByExtension(ext);\n };\n\n CodeMirror.findModeByName = function(name) {\n name = name.toLowerCase();\n for (var i = 0; i < CodeMirror.modeInfo.length; i++) {\n var info = CodeMirror.modeInfo[i];\n if (info.name.toLowerCase() == name) return info;\n if (info.alias) for (var j = 0; j < info.alias.length; j++)\n if (info.alias[j].toLowerCase() == name) return info;\n }\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/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 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(parentTagName) ||\n !config.contextGrabbers[parentTagName].hasOwnProperty(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(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(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","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\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 = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\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' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\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) {\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 (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\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","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\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 versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (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 && +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 global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\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.noTargetGet - prevent calling a getter on target\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] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\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 // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n /* global globalThis -- safe */\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\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 hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.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.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\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) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\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 : typeof detection == 'function' ? 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","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n /* global Symbol -- required for testing */\n return !Symbol.sham &&\n // Chrome 38 Symbol has incorrect toString conversion\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n (IS_NODE ? V8_VERSION === 38 : V8_VERSION > 37 && V8_VERSION < 41);\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(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 propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(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\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\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) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.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} : nativePropertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\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.\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(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.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var getBuiltIn = require('../internals/get-built-in');\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\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 ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(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.9.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var toInteger = require('../internals/to-integer');\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 = toInteger(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 ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\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(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\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 id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n /* global Symbol -- safe */\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\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 createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar sameValue = require('../internals/same-value');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@search logic\nfixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.es/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = requireObjectCoercible(this);\n var searcher = regexp == undefined ? undefined : regexp[SEARCH];\n return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative(nativeSearch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","/*!\n * dist/inputmask\n * https://github.com/RobinHerbots/Inputmask\n * Copyright (c) 2010 - 2020 Robin Herbots\n * Licensed under the MIT license\n * Version: 5.0.3\n */\n!function webpackUniversalModuleDefinition(root, factory) {\n if (\"object\" == typeof exports && \"object\" == typeof module) module.exports = factory(); else if (\"function\" == typeof define && define.amd) define([], factory); else {\n var a = factory();\n for (var i in a) (\"object\" == typeof exports ? exports : root)[i] = a[i];\n }\n}(window, function() {\n return modules = [ function(module) {\n module.exports = JSON.parse('{\"BACKSPACE\":8,\"BACKSPACE_SAFARI\":127,\"DELETE\":46,\"DOWN\":40,\"END\":35,\"ENTER\":13,\"ESCAPE\":27,\"HOME\":36,\"INSERT\":45,\"LEFT\":37,\"PAGE_DOWN\":34,\"PAGE_UP\":33,\"RIGHT\":39,\"SPACE\":32,\"TAB\":9,\"UP\":38,\"X\":88,\"CONTROL\":17}');\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var $ = __webpack_require__(2), window = __webpack_require__(3), document = window.document, generateMaskSet = __webpack_require__(4).generateMaskSet, analyseMask = __webpack_require__(4).analyseMask, maskScope = __webpack_require__(7);\n function Inputmask(alias, options, internal) {\n if (!(this instanceof Inputmask)) return new Inputmask(alias, options, internal);\n this.el = void 0, this.events = {}, this.maskset = void 0, this.refreshValue = !1, \n !0 !== internal && ($.isPlainObject(alias) ? options = alias : (options = options || {}, \n alias && (options.alias = alias)), this.opts = $.extend(!0, {}, this.defaults, options), \n this.noMasksCache = options && void 0 !== options.definitions, this.userOptions = options || {}, \n resolveAlias(this.opts.alias, options, this.opts), this.isRTL = this.opts.numericInput);\n }\n function resolveAlias(aliasStr, options, opts) {\n var aliasDefinition = Inputmask.prototype.aliases[aliasStr];\n return aliasDefinition ? (aliasDefinition.alias && resolveAlias(aliasDefinition.alias, void 0, opts), \n $.extend(!0, opts, aliasDefinition), $.extend(!0, opts, options), !0) : (null === opts.mask && (opts.mask = aliasStr), \n !1);\n }\n function importAttributeOptions(npt, opts, userOptions, dataAttribute) {\n function importOption(option, optionData) {\n optionData = void 0 !== optionData ? optionData : npt.getAttribute(dataAttribute + \"-\" + option), \n null !== optionData && (\"string\" == typeof optionData && (0 === option.indexOf(\"on\") ? optionData = window[optionData] : \"false\" === optionData ? optionData = !1 : \"true\" === optionData && (optionData = !0)), \n userOptions[option] = optionData);\n }\n if (!0 === opts.importDataAttributes) {\n var attrOptions = npt.getAttribute(dataAttribute), option, dataoptions, optionData, p;\n if (attrOptions && \"\" !== attrOptions && (attrOptions = attrOptions.replace(/'/g, '\"'), \n dataoptions = JSON.parse(\"{\" + attrOptions + \"}\")), dataoptions) for (p in optionData = void 0, \n dataoptions) if (\"alias\" === p.toLowerCase()) {\n optionData = dataoptions[p];\n break;\n }\n for (option in importOption(\"alias\", optionData), userOptions.alias && resolveAlias(userOptions.alias, userOptions, opts), \n opts) {\n if (dataoptions) for (p in optionData = void 0, dataoptions) if (p.toLowerCase() === option.toLowerCase()) {\n optionData = dataoptions[p];\n break;\n }\n importOption(option, optionData);\n }\n }\n return $.extend(!0, opts, userOptions), \"rtl\" !== npt.dir && !opts.rightAlign || (npt.style.textAlign = \"right\"), \n \"rtl\" !== npt.dir && !opts.numericInput || (npt.dir = \"ltr\", npt.removeAttribute(\"dir\"), \n opts.isRTL = !0), Object.keys(userOptions).length;\n }\n Inputmask.prototype = {\n dataAttribute: \"data-inputmask\",\n defaults: {\n _maxTestPos: 500,\n placeholder: \"_\",\n optionalmarker: [ \"[\", \"]\" ],\n quantifiermarker: [ \"{\", \"}\" ],\n groupmarker: [ \"(\", \")\" ],\n alternatormarker: \"|\",\n escapeChar: \"\\\\\",\n mask: null,\n regex: null,\n oncomplete: $.noop,\n onincomplete: $.noop,\n oncleared: $.noop,\n repeat: 0,\n greedy: !1,\n autoUnmask: !1,\n removeMaskOnSubmit: !1,\n clearMaskOnLostFocus: !0,\n insertMode: !0,\n insertModeVisual: !0,\n clearIncomplete: !1,\n alias: null,\n onKeyDown: $.noop,\n onBeforeMask: null,\n onBeforePaste: function onBeforePaste(pastedValue, opts) {\n return $.isFunction(opts.onBeforeMask) ? opts.onBeforeMask.call(this, pastedValue, opts) : pastedValue;\n },\n onBeforeWrite: null,\n onUnMask: null,\n showMaskOnFocus: !0,\n showMaskOnHover: !0,\n onKeyValidation: $.noop,\n skipOptionalPartCharacter: \" \",\n numericInput: !1,\n rightAlign: !1,\n undoOnEscape: !0,\n radixPoint: \"\",\n _radixDance: !1,\n groupSeparator: \"\",\n keepStatic: null,\n positionCaretOnTab: !0,\n tabThrough: !1,\n supportsInputType: [ \"text\", \"tel\", \"url\", \"password\", \"search\" ],\n ignorables: [ 8, 9, 19, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 93, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 0, 229 ],\n isComplete: null,\n preValidation: null,\n postValidation: null,\n staticDefinitionSymbol: void 0,\n jitMasking: !1,\n nullable: !0,\n inputEventOnly: !1,\n noValuePatching: !1,\n positionCaretOnClick: \"lvp\",\n casing: null,\n inputmode: \"text\",\n importDataAttributes: !0,\n shiftPositions: !0\n },\n definitions: {\n 9: {\n validator: \"[0-9\\uff11-\\uff19]\",\n definitionSymbol: \"*\"\n },\n a: {\n validator: \"[A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\",\n definitionSymbol: \"*\"\n },\n \"*\": {\n validator: \"[0-9\\uff11-\\uff19A-Za-z\\u0410-\\u044f\\u0401\\u0451\\xc0-\\xff\\xb5]\"\n }\n },\n aliases: {},\n masksCache: {},\n mask: function mask(elems) {\n var that = this;\n return \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n var scopedOpts = $.extend(!0, {}, that.opts);\n if (importAttributeOptions(el, scopedOpts, $.extend(!0, {}, that.userOptions), that.dataAttribute)) {\n var maskset = generateMaskSet(scopedOpts, that.noMasksCache);\n void 0 !== maskset && (void 0 !== el.inputmask && (el.inputmask.opts.autoUnmask = !0, \n el.inputmask.remove()), el.inputmask = new Inputmask(void 0, void 0, !0), el.inputmask.opts = scopedOpts, \n el.inputmask.noMasksCache = that.noMasksCache, el.inputmask.userOptions = $.extend(!0, {}, that.userOptions), \n el.inputmask.isRTL = scopedOpts.isRTL || scopedOpts.numericInput, el.inputmask.el = el, \n el.inputmask.maskset = maskset, $.data(el, \"_inputmask_opts\", scopedOpts), maskScope.call(el.inputmask, {\n action: \"mask\"\n }));\n }\n }), elems && elems[0] && elems[0].inputmask || this;\n },\n option: function option(options, noremask) {\n return \"string\" == typeof options ? this.opts[options] : \"object\" === _typeof(options) ? ($.extend(this.userOptions, options), \n this.el && !0 !== noremask && this.mask(this.el), this) : void 0;\n },\n unmaskedvalue: function unmaskedvalue(value) {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"unmaskedvalue\",\n value: value\n });\n },\n remove: function remove() {\n return maskScope.call(this, {\n action: \"remove\"\n });\n },\n getemptymask: function getemptymask() {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"getemptymask\"\n });\n },\n hasMaskedValue: function hasMaskedValue() {\n return !this.opts.autoUnmask;\n },\n isComplete: function isComplete() {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"isComplete\"\n });\n },\n getmetadata: function getmetadata() {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"getmetadata\"\n });\n },\n isValid: function isValid(value) {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"isValid\",\n value: value\n });\n },\n format: function format(value, metadata) {\n return this.maskset = this.maskset || generateMaskSet(this.opts, this.noMasksCache), \n maskScope.call(this, {\n action: \"format\",\n value: value,\n metadata: metadata\n });\n },\n setValue: function setValue(value) {\n this.el && $(this.el).trigger(\"setvalue\", [ value ]);\n },\n analyseMask: analyseMask\n }, Inputmask.extendDefaults = function(options) {\n $.extend(!0, Inputmask.prototype.defaults, options);\n }, Inputmask.extendDefinitions = function(definition) {\n $.extend(!0, Inputmask.prototype.definitions, definition);\n }, Inputmask.extendAliases = function(alias) {\n $.extend(!0, Inputmask.prototype.aliases, alias);\n }, Inputmask.format = function(value, options, metadata) {\n return Inputmask(options).format(value, metadata);\n }, Inputmask.unmask = function(value, options) {\n return Inputmask(options).unmaskedvalue(value);\n }, Inputmask.isValid = function(value, options) {\n return Inputmask(options).isValid(value);\n }, Inputmask.remove = function(elems) {\n \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n el.inputmask && el.inputmask.remove();\n });\n }, Inputmask.setValue = function(elems, value) {\n \"string\" == typeof elems && (elems = document.getElementById(elems) || document.querySelectorAll(elems)), \n elems = elems.nodeName ? [ elems ] : elems, $.each(elems, function(ndx, el) {\n el.inputmask ? el.inputmask.setValue(value) : $(el).trigger(\"setvalue\", [ value ]);\n });\n };\n var escapeRegexRegex = new RegExp(\"(\\\\\" + [ \"/\", \".\", \"*\", \"+\", \"?\", \"|\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"\\\\\", \"$\", \"^\" ].join(\"|\\\\\") + \")\", \"gim\");\n Inputmask.escapeRegex = function(str) {\n return str.replace(escapeRegexRegex, \"\\\\$1\");\n }, Inputmask.dependencyLib = $, window.Inputmask = Inputmask, module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var window = __webpack_require__(3), document = window.document;\n function indexOf(list, elem) {\n for (var i = 0, len = list.length; i < len; i++) if (list[i] === elem) return i;\n return -1;\n }\n function isWindow(obj) {\n return null != obj && obj === obj.window;\n }\n function isArraylike(obj) {\n var length = \"length\" in obj && obj.length, ltype = _typeof(obj);\n return \"function\" !== ltype && !isWindow(obj) && (!(1 !== obj.nodeType || !length) || (\"array\" === ltype || 0 === length || \"number\" == typeof length && 0 < length && length - 1 in obj));\n }\n function isValidElement(elem) {\n return elem instanceof Element;\n }\n function DependencyLib(elem) {\n return elem instanceof DependencyLib ? elem : this instanceof DependencyLib ? void (null != elem && elem !== window && (this[0] = elem.nodeName ? elem : void 0 !== elem[0] && elem[0].nodeName ? elem[0] : document.querySelector(elem), \n void 0 !== this[0] && null !== this[0] && (this[0].eventRegistry = this[0].eventRegistry || {}))) : new DependencyLib(elem);\n }\n DependencyLib.prototype = {\n on: function on(events, handler) {\n function addEvent(ev, namespace) {\n elem.addEventListener ? elem.addEventListener(ev, handler, !1) : elem.attachEvent && elem.attachEvent(\"on\" + ev, handler), \n eventRegistry[ev] = eventRegistry[ev] || {}, eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || [], \n eventRegistry[ev][namespace].push(handler);\n }\n if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = events.split(\" \"), endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n addEvent(ev, namespace);\n }\n return this;\n },\n off: function off(events, handler) {\n var eventRegistry, elem;\n function removeEvent(ev, namespace, handler) {\n if (ev in eventRegistry == !0) if (elem.removeEventListener ? elem.removeEventListener(ev, handler, !1) : elem.detachEvent && elem.detachEvent(\"on\" + ev, handler), \n \"global\" === namespace) for (var nmsp in eventRegistry[ev]) eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1); else eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1);\n }\n function resolveNamespace(ev, namespace) {\n var evts = [], hndx, hndL;\n if (0 < ev.length) if (void 0 === handler) for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) evts.push({\n ev: ev,\n namespace: namespace && 0 < namespace.length ? namespace : \"global\",\n handler: eventRegistry[ev][namespace][hndx]\n }); else evts.push({\n ev: ev,\n namespace: namespace && 0 < namespace.length ? namespace : \"global\",\n handler: handler\n }); else if (0 < namespace.length) for (var evNdx in eventRegistry) for (var nmsp in eventRegistry[evNdx]) if (nmsp === namespace) if (void 0 === handler) for (hndx = 0, \n hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) evts.push({\n ev: evNdx,\n namespace: nmsp,\n handler: eventRegistry[evNdx][nmsp][hndx]\n }); else evts.push({\n ev: evNdx,\n namespace: nmsp,\n handler: handler\n });\n return evts;\n }\n if (isValidElement(this[0])) {\n eventRegistry = this[0].eventRegistry, elem = this[0];\n for (var _events = events.split(\" \"), endx = 0; endx < _events.length; endx++) for (var nsEvent = _events[endx].split(\".\"), offEvents = resolveNamespace(nsEvent[0], nsEvent[1]), i = 0, offEventsL = offEvents.length; i < offEventsL; i++) removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler);\n }\n return this;\n },\n trigger: function trigger(events, argument_1) {\n if (isValidElement(this[0])) for (var eventRegistry = this[0].eventRegistry, elem = this[0], _events = \"string\" == typeof events ? events.split(\" \") : [ events.type ], endx = 0; endx < _events.length; endx++) {\n var nsEvent = _events[endx].split(\".\"), ev = nsEvent[0], namespace = nsEvent[1] || \"global\";\n if (void 0 !== document && \"global\" === namespace) {\n var evnt, i, params = {\n bubbles: !0,\n cancelable: !0,\n detail: argument_1\n };\n if (document.createEvent) {\n try {\n evnt = new CustomEvent(ev, params);\n } catch (e) {\n evnt = document.createEvent(\"CustomEvent\"), evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail);\n }\n events.type && DependencyLib.extend(evnt, events), elem.dispatchEvent(evnt);\n } else evnt = document.createEventObject(), evnt.eventType = ev, evnt.detail = argument_1, \n events.type && DependencyLib.extend(evnt, events), elem.fireEvent(\"on\" + evnt.eventType, evnt);\n } else if (void 0 !== eventRegistry[ev]) if (events = events.type ? events : DependencyLib.Event(events), \n events.detail = arguments.slice(1), \"global\" === namespace) for (var nmsp in eventRegistry[ev]) for (i = 0; i < eventRegistry[ev][nmsp].length; i++) eventRegistry[ev][nmsp][i].apply(elem, arguments); else for (i = 0; i < eventRegistry[ev][namespace].length; i++) eventRegistry[ev][namespace][i].apply(elem, arguments);\n }\n return this;\n }\n }, DependencyLib.isFunction = function(obj) {\n return \"function\" == typeof obj;\n }, DependencyLib.noop = function() {}, DependencyLib.isArray = Array.isArray, DependencyLib.inArray = function(elem, arr, i) {\n return null == arr ? -1 : indexOf(arr, elem, i);\n }, DependencyLib.valHooks = void 0, DependencyLib.isPlainObject = function(obj) {\n return \"object\" === _typeof(obj) && !obj.nodeType && !isWindow(obj) && !(obj.constructor && !Object.hasOwnProperty.call(obj.constructor.prototype, \"isPrototypeOf\"));\n }, DependencyLib.extend = function() {\n var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = !1;\n for (\"boolean\" == typeof target && (deep = target, target = arguments[i] || {}, \n i++), \"object\" === _typeof(target) || DependencyLib.isFunction(target) || (target = {}), \n i === length && (target = this, i--); i < length; i++) if (null != (options = arguments[i])) for (name in options) src = target[name], \n copy = options[name], target !== copy && (deep && copy && (DependencyLib.isPlainObject(copy) || (copyIsArray = DependencyLib.isArray(copy))) ? (clone = copyIsArray ? (copyIsArray = !1, \n src && DependencyLib.isArray(src) ? src : []) : src && DependencyLib.isPlainObject(src) ? src : {}, \n target[name] = DependencyLib.extend(deep, clone, copy)) : void 0 !== copy && (target[name] = copy));\n return target;\n }, DependencyLib.each = function(obj, callback) {\n var value, i = 0;\n if (isArraylike(obj)) for (var length = obj.length; i < length && (value = callback.call(obj[i], i, obj[i]), \n !1 !== value); i++) ; else for (i in obj) if (value = callback.call(obj[i], i, obj[i]), \n !1 === value) break;\n return obj;\n }, DependencyLib.data = function(owner, key, value) {\n if (void 0 === value) return owner.__data ? owner.__data[key] : null;\n owner.__data = owner.__data || {}, owner.__data[key] = value;\n }, \"function\" == typeof window.CustomEvent ? DependencyLib.Event = window.CustomEvent : (DependencyLib.Event = function(event, params) {\n params = params || {\n bubbles: !1,\n cancelable: !1,\n detail: void 0\n };\n var evt = document.createEvent(\"CustomEvent\");\n return evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail), \n evt;\n }, DependencyLib.Event.prototype = window.Event.prototype), module.exports = DependencyLib;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var __WEBPACK_AMD_DEFINE_RESULT__;\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return \"undefined\" != typeof window ? window : new (eval(\"require('jsdom').JSDOM\"))(\"\").window;\n }.call(exports, __webpack_require__, exports, module), void 0 === __WEBPACK_AMD_DEFINE_RESULT__ || (module.exports = __WEBPACK_AMD_DEFINE_RESULT__);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var $ = __webpack_require__(2);\n function generateMaskSet(opts, nocache) {\n var ms;\n function generateMask(mask, metadata, opts) {\n var regexMask = !1, masksetDefinition, maskdefKey;\n if (null !== mask && \"\" !== mask || (regexMask = null !== opts.regex, mask = regexMask ? (mask = opts.regex, \n mask.replace(/^(\\^)(.*)(\\$)$/, \"$2\")) : (regexMask = !0, \".*\")), 1 === mask.length && !1 === opts.greedy && 0 !== opts.repeat && (opts.placeholder = \"\"), \n 0 < opts.repeat || \"*\" === opts.repeat || \"+\" === opts.repeat) {\n var repeatStart = \"*\" === opts.repeat ? 0 : \"+\" === opts.repeat ? 1 : opts.repeat;\n mask = opts.groupmarker[0] + mask + opts.groupmarker[1] + opts.quantifiermarker[0] + repeatStart + \",\" + opts.repeat + opts.quantifiermarker[1];\n }\n return maskdefKey = regexMask ? \"regex_\" + opts.regex : opts.numericInput ? mask.split(\"\").reverse().join(\"\") : mask, \n !1 !== opts.keepStatic && (maskdefKey = \"ks_\" + maskdefKey), void 0 === Inputmask.prototype.masksCache[maskdefKey] || !0 === nocache ? (masksetDefinition = {\n mask: mask,\n maskToken: Inputmask.prototype.analyseMask(mask, regexMask, opts),\n validPositions: {},\n _buffer: void 0,\n buffer: void 0,\n tests: {},\n excludes: {},\n metadata: metadata,\n maskLength: void 0,\n jitOffset: {}\n }, !0 !== nocache && (Inputmask.prototype.masksCache[maskdefKey] = masksetDefinition, \n masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]))) : masksetDefinition = $.extend(!0, {}, Inputmask.prototype.masksCache[maskdefKey]), \n masksetDefinition;\n }\n if ($.isFunction(opts.mask) && (opts.mask = opts.mask(opts)), $.isArray(opts.mask)) {\n if (1 < opts.mask.length) {\n null === opts.keepStatic && (opts.keepStatic = !0);\n var altMask = opts.groupmarker[0];\n return $.each(opts.isRTL ? opts.mask.reverse() : opts.mask, function(ndx, msk) {\n 1 < altMask.length && (altMask += opts.groupmarker[1] + opts.alternatormarker + opts.groupmarker[0]), \n void 0 === msk.mask || $.isFunction(msk.mask) ? altMask += msk : altMask += msk.mask;\n }), altMask += opts.groupmarker[1], generateMask(altMask, opts.mask, opts);\n }\n opts.mask = opts.mask.pop();\n }\n return null === opts.keepStatic && (opts.keepStatic = !1), ms = opts.mask && void 0 !== opts.mask.mask && !$.isFunction(opts.mask.mask) ? generateMask(opts.mask.mask, opts.mask, opts) : generateMask(opts.mask, opts.mask, opts), \n ms;\n }\n function analyseMask(mask, regexMask, opts) {\n var tokenizer = /(?:[?*+]|\\{[0-9+*]+(?:,[0-9+*]*)?(?:\\|[0-9+*]*)?\\})|[^.?*+^${[]()|\\\\]+|./g, regexTokenizer = /\\[\\^?]?(?:[^\\\\\\]]+|\\\\[\\S\\s]?)*]?|\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\\S\\s]?)|\\((?:\\?[:=!]?)?|(?:[?*+]|\\{[0-9]+(?:,[0-9]*)?\\})\\??|[^.?*+^${[()|\\\\]+|./g, escaped = !1, currentToken = new MaskToken(), match, m, openenings = [], maskTokens = [], openingToken, currentOpeningToken, alternator, lastMatch, closeRegexGroup = !1;\n function MaskToken(isGroup, isOptional, isQuantifier, isAlternator) {\n this.matches = [], this.openGroup = isGroup || !1, this.alternatorGroup = !1, this.isGroup = isGroup || !1, \n this.isOptional = isOptional || !1, this.isQuantifier = isQuantifier || !1, this.isAlternator = isAlternator || !1, \n this.quantifier = {\n min: 1,\n max: 1\n };\n }\n function insertTestDefinition(mtoken, element, position) {\n position = void 0 !== position ? position : mtoken.matches.length;\n var prevMatch = mtoken.matches[position - 1];\n if (regexMask) 0 === element.indexOf(\"[\") || escaped && /\\\\d|\\\\s|\\\\w]/i.test(element) || \".\" === element ? mtoken.matches.splice(position++, 0, {\n fn: new RegExp(element, opts.casing ? \"i\" : \"\"),\n static: !1,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== element,\n casing: null,\n def: element,\n placeholder: void 0,\n nativeDef: element\n }) : (escaped && (element = element[element.length - 1]), $.each(element.split(\"\"), function(ndx, lmnt) {\n prevMatch = mtoken.matches[position - 1], mtoken.matches.splice(position++, 0, {\n fn: /[a-z]/i.test(opts.staticDefinitionSymbol || lmnt) ? new RegExp(\"[\" + (opts.staticDefinitionSymbol || lmnt) + \"]\", opts.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== lmnt && !0 !== prevMatch.static,\n casing: null,\n def: opts.staticDefinitionSymbol || lmnt,\n placeholder: void 0 !== opts.staticDefinitionSymbol ? lmnt : void 0,\n nativeDef: (escaped ? \"'\" : \"\") + lmnt\n });\n })), escaped = !1; else {\n var maskdef = (opts.definitions ? opts.definitions[element] : void 0) || Inputmask.prototype.definitions[element];\n maskdef && !escaped ? mtoken.matches.splice(position++, 0, {\n fn: maskdef.validator ? \"string\" == typeof maskdef.validator ? new RegExp(maskdef.validator, opts.casing ? \"i\" : \"\") : new function() {\n this.test = maskdef.validator;\n }() : new RegExp(\".\"),\n static: maskdef.static || !1,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== (maskdef.definitionSymbol || element),\n casing: maskdef.casing,\n def: maskdef.definitionSymbol || element,\n placeholder: maskdef.placeholder,\n nativeDef: element,\n generated: maskdef.generated\n }) : (mtoken.matches.splice(position++, 0, {\n fn: /[a-z]/i.test(opts.staticDefinitionSymbol || element) ? new RegExp(\"[\" + (opts.staticDefinitionSymbol || element) + \"]\", opts.casing ? \"i\" : \"\") : null,\n static: !0,\n optionality: !1,\n newBlockMarker: void 0 === prevMatch ? \"master\" : prevMatch.def !== element && !0 !== prevMatch.static,\n casing: null,\n def: opts.staticDefinitionSymbol || element,\n placeholder: void 0 !== opts.staticDefinitionSymbol ? element : void 0,\n nativeDef: (escaped ? \"'\" : \"\") + element\n }), escaped = !1);\n }\n }\n function verifyGroupMarker(maskToken) {\n maskToken && maskToken.matches && $.each(maskToken.matches, function(ndx, token) {\n var nextToken = maskToken.matches[ndx + 1];\n (void 0 === nextToken || void 0 === nextToken.matches || !1 === nextToken.isQuantifier) && token && token.isGroup && (token.isGroup = !1, \n regexMask || (insertTestDefinition(token, opts.groupmarker[0], 0), !0 !== token.openGroup && insertTestDefinition(token, opts.groupmarker[1]))), \n verifyGroupMarker(token);\n });\n }\n function defaultCase() {\n if (0 < openenings.length) {\n if (currentOpeningToken = openenings[openenings.length - 1], insertTestDefinition(currentOpeningToken, m), \n currentOpeningToken.isAlternator) {\n alternator = openenings.pop();\n for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup && (alternator.matches[mndx].isGroup = !1);\n 0 < openenings.length ? (currentOpeningToken = openenings[openenings.length - 1], \n currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);\n }\n } else insertTestDefinition(currentToken, m);\n }\n function reverseTokens(maskToken) {\n function reverseStatic(st) {\n return st === opts.optionalmarker[0] ? st = opts.optionalmarker[1] : st === opts.optionalmarker[1] ? st = opts.optionalmarker[0] : st === opts.groupmarker[0] ? st = opts.groupmarker[1] : st === opts.groupmarker[1] && (st = opts.groupmarker[0]), \n st;\n }\n for (var match in maskToken.matches = maskToken.matches.reverse(), maskToken.matches) if (Object.prototype.hasOwnProperty.call(maskToken.matches, match)) {\n var intMatch = parseInt(match);\n if (maskToken.matches[match].isQuantifier && maskToken.matches[intMatch + 1] && maskToken.matches[intMatch + 1].isGroup) {\n var qt = maskToken.matches[match];\n maskToken.matches.splice(match, 1), maskToken.matches.splice(intMatch + 1, 0, qt);\n }\n void 0 !== maskToken.matches[match].matches ? maskToken.matches[match] = reverseTokens(maskToken.matches[match]) : maskToken.matches[match] = reverseStatic(maskToken.matches[match]);\n }\n return maskToken;\n }\n function groupify(matches) {\n var groupToken = new MaskToken(!0);\n return groupToken.openGroup = !1, groupToken.matches = matches, groupToken;\n }\n function closeGroup() {\n if (openingToken = openenings.pop(), openingToken.openGroup = !1, void 0 !== openingToken) if (0 < openenings.length) {\n if (currentOpeningToken = openenings[openenings.length - 1], currentOpeningToken.matches.push(openingToken), \n currentOpeningToken.isAlternator) {\n alternator = openenings.pop();\n for (var mndx = 0; mndx < alternator.matches.length; mndx++) alternator.matches[mndx].isGroup = !1, \n alternator.matches[mndx].alternatorGroup = !1;\n 0 < openenings.length ? (currentOpeningToken = openenings[openenings.length - 1], \n currentOpeningToken.matches.push(alternator)) : currentToken.matches.push(alternator);\n }\n } else currentToken.matches.push(openingToken); else defaultCase();\n }\n function groupQuantifier(matches) {\n var lastMatch = matches.pop();\n return lastMatch.isQuantifier && (lastMatch = groupify([ matches.pop(), lastMatch ])), \n lastMatch;\n }\n for (regexMask && (opts.optionalmarker[0] = void 0, opts.optionalmarker[1] = void 0); match = regexMask ? regexTokenizer.exec(mask) : tokenizer.exec(mask); ) {\n if (m = match[0], regexMask) switch (m.charAt(0)) {\n case \"?\":\n m = \"{0,1}\";\n break;\n\n case \"+\":\n case \"*\":\n m = \"{\" + m + \"}\";\n break;\n\n case \"|\":\n if (0 === openenings.length) {\n var altRegexGroup = groupify(currentToken.matches);\n altRegexGroup.openGroup = !0, openenings.push(altRegexGroup), currentToken.matches = [], \n closeRegexGroup = !0;\n }\n break;\n }\n if (escaped) defaultCase(); else switch (m.charAt(0)) {\n case \"(?=\":\n break;\n\n case \"(?!\":\n break;\n\n case \"(?<=\":\n break;\n\n case \"(? altMatch.alternation) for (var i = altMatch.alternation; i < alternationNdx; i++) if (targetMatch.locator[i] !== altMatch.locator[i]) {\n alternationNdx = i, shouldMerge = !0;\n break;\n }\n if (shouldMerge) {\n targetMatch.mloc = targetMatch.mloc || {};\n var locNdx = targetMatch.locator[alternationNdx];\n if (void 0 !== locNdx) {\n if (\"string\" == typeof locNdx && (locNdx = locNdx.split(\",\")[0]), void 0 === targetMatch.mloc[locNdx] && (targetMatch.mloc[locNdx] = targetMatch.locator.slice()), \n void 0 !== altMatch) {\n for (var ndx in altMatch.mloc) \"string\" == typeof ndx && (ndx = ndx.split(\",\")[0]), \n void 0 === targetMatch.mloc[ndx] && (targetMatch.mloc[ndx] = altMatch.mloc[ndx]);\n targetMatch.locator[alternationNdx] = Object.keys(targetMatch.mloc).join(\",\");\n }\n return !0;\n }\n targetMatch.alternation = void 0;\n }\n return !1;\n }\n function isSameLevel(targetMatch, altMatch) {\n if (targetMatch.locator.length !== altMatch.locator.length) return !1;\n for (var locNdx = targetMatch.alternation + 1; locNdx < targetMatch.locator.length; locNdx++) if (targetMatch.locator[locNdx] !== altMatch.locator[locNdx]) return !1;\n return !0;\n }\n if (testPos > opts._maxTestPos && void 0 !== quantifierRecurse) throw \"Inputmask: There is probably an error in your mask definition or in the code. Create an issue on github with an example of the mask you are using. \" + maskset.mask;\n if (testPos === pos && void 0 === match.matches) return matches.push({\n match: match,\n locator: loopNdx.reverse(),\n cd: cacheDependency,\n mloc: {}\n }), !0;\n if (void 0 !== match.matches) {\n if (match.isGroup && quantifierRecurse !== match) {\n if (match = handleMatch(maskToken.matches[$.inArray(match, maskToken.matches) + 1], loopNdx, quantifierRecurse), \n match) return !0;\n } else if (match.isOptional) {\n var optionalToken = match, mtchsNdx = matches.length;\n if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse), \n match) {\n if ($.each(matches, function(ndx, mtch) {\n mtchsNdx <= ndx && (mtch.match.optionality = !0);\n }), latestMatch = matches[matches.length - 1].match, void 0 !== quantifierRecurse || !isFirstMatch(latestMatch, optionalToken)) return !0;\n insertStop = !0, testPos = pos;\n }\n } else if (match.isAlternator) {\n var alternateToken = match, malternateMatches = [], maltMatches, currentMatches = matches.slice(), loopNdxCnt = loopNdx.length, altIndex = 0 < ndxInitializer.length ? ndxInitializer.shift() : -1;\n if (-1 === altIndex || \"string\" == typeof altIndex) {\n var currentPos = testPos, ndxInitializerClone = ndxInitializer.slice(), altIndexArr = [], amndx;\n if (\"string\" == typeof altIndex) altIndexArr = altIndex.split(\",\"); else for (amndx = 0; amndx < alternateToken.matches.length; amndx++) altIndexArr.push(amndx.toString());\n if (void 0 !== maskset.excludes[pos]) {\n for (var altIndexArrClone = altIndexArr.slice(), i = 0, exl = maskset.excludes[pos].length; i < exl; i++) {\n var excludeSet = maskset.excludes[pos][i].toString().split(\":\");\n loopNdx.length == excludeSet[1] && altIndexArr.splice(altIndexArr.indexOf(excludeSet[0]), 1);\n }\n 0 === altIndexArr.length && (delete maskset.excludes[pos], altIndexArr = altIndexArrClone);\n }\n (!0 === opts.keepStatic || isFinite(parseInt(opts.keepStatic)) && currentPos >= opts.keepStatic) && (altIndexArr = altIndexArr.slice(0, 1));\n for (var unMatchedAlternation = !1, ndx = 0; ndx < altIndexArr.length; ndx++) {\n amndx = parseInt(altIndexArr[ndx]), matches = [], ndxInitializer = \"string\" == typeof altIndex && resolveNdxInitializer(testPos, amndx, loopNdxCnt) || ndxInitializerClone.slice(), \n alternateToken.matches[amndx] && handleMatch(alternateToken.matches[amndx], [ amndx ].concat(loopNdx), quantifierRecurse) ? match = !0 : 0 === ndx && (unMatchedAlternation = !0), \n maltMatches = matches.slice(), testPos = currentPos, matches = [];\n for (var ndx1 = 0; ndx1 < maltMatches.length; ndx1++) {\n var altMatch = maltMatches[ndx1], dropMatch = !1;\n altMatch.match.jit = altMatch.match.jit || unMatchedAlternation, altMatch.alternation = altMatch.alternation || loopNdxCnt, \n setMergeLocators(altMatch);\n for (var ndx2 = 0; ndx2 < malternateMatches.length; ndx2++) {\n var altMatch2 = malternateMatches[ndx2];\n if (\"string\" != typeof altIndex || void 0 !== altMatch.alternation && -1 !== $.inArray(altMatch.locator[altMatch.alternation].toString(), altIndexArr)) {\n if (altMatch.match.nativeDef === altMatch2.match.nativeDef) {\n dropMatch = !0, setMergeLocators(altMatch2, altMatch);\n break;\n }\n if (isSubsetOf(altMatch, altMatch2)) {\n setMergeLocators(altMatch, altMatch2) && (dropMatch = !0, malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch));\n break;\n }\n if (isSubsetOf(altMatch2, altMatch)) {\n setMergeLocators(altMatch2, altMatch);\n break;\n }\n if (staticCanMatchDefinition(altMatch, altMatch2)) {\n isSameLevel(altMatch, altMatch2) || void 0 !== el.inputmask.userOptions.keepStatic ? setMergeLocators(altMatch, altMatch2) && (dropMatch = !0, \n malternateMatches.splice(malternateMatches.indexOf(altMatch2), 0, altMatch)) : opts.keepStatic = !0;\n break;\n }\n }\n }\n dropMatch || malternateMatches.push(altMatch);\n }\n }\n matches = currentMatches.concat(malternateMatches), testPos = pos, insertStop = 0 < matches.length, \n match = 0 < malternateMatches.length, ndxInitializer = ndxInitializerClone.slice();\n } else match = handleMatch(alternateToken.matches[altIndex] || maskToken.matches[altIndex], [ altIndex ].concat(loopNdx), quantifierRecurse);\n if (match) return !0;\n } else if (match.isQuantifier && quantifierRecurse !== maskToken.matches[$.inArray(match, maskToken.matches) - 1]) for (var qt = match, qndx = 0 < ndxInitializer.length ? ndxInitializer.shift() : 0; qndx < (isNaN(qt.quantifier.max) ? qndx + 1 : qt.quantifier.max) && testPos <= pos; qndx++) {\n var tokenGroup = maskToken.matches[$.inArray(qt, maskToken.matches) - 1];\n if (match = handleMatch(tokenGroup, [ qndx ].concat(loopNdx), tokenGroup), match) {\n if (latestMatch = matches[matches.length - 1].match, latestMatch.optionalQuantifier = qndx >= qt.quantifier.min, \n latestMatch.jit = (qndx || 1) * tokenGroup.matches.indexOf(latestMatch) >= qt.quantifier.jit, \n latestMatch.optionalQuantifier && isFirstMatch(latestMatch, tokenGroup)) {\n insertStop = !0, testPos = pos;\n break;\n }\n return latestMatch.jit && (maskset.jitOffset[pos] = tokenGroup.matches.length - tokenGroup.matches.indexOf(latestMatch)), \n !0;\n }\n } else if (match = resolveTestFromToken(match, ndxInitializer, loopNdx, quantifierRecurse), \n match) return !0;\n } else testPos++;\n }\n for (var tndx = 0 < ndxInitializer.length ? ndxInitializer.shift() : 0; tndx < maskToken.matches.length; tndx++) if (!0 !== maskToken.matches[tndx].isQuantifier) {\n var match = handleMatch(maskToken.matches[tndx], [ tndx ].concat(loopNdx), quantifierRecurse);\n if (match && testPos === pos) return match;\n if (pos < testPos) break;\n }\n }\n function mergeLocators(pos, tests) {\n var locator = [];\n return $.isArray(tests) || (tests = [ tests ]), 0 < tests.length && (void 0 === tests[0].alternation || !0 === opts.keepStatic ? (locator = determineTestTemplate(pos, tests.slice()).locator.slice(), \n 0 === locator.length && (locator = tests[0].locator.slice())) : $.each(tests, function(ndx, tst) {\n if (\"\" !== tst.def) if (0 === locator.length) locator = tst.locator.slice(); else for (var i = 0; i < locator.length; i++) tst.locator[i] && -1 === locator[i].toString().indexOf(tst.locator[i]) && (locator[i] += \",\" + tst.locator[i]);\n })), locator;\n }\n if (-1 < pos && (void 0 === maxLength || pos < maxLength)) {\n if (void 0 === ndxIntlzr) {\n for (var previousPos = pos - 1, test; void 0 === (test = maskset.validPositions[previousPos] || maskset.tests[previousPos]) && -1 < previousPos; ) previousPos--;\n void 0 !== test && -1 < previousPos && (ndxInitializer = mergeLocators(previousPos, test), \n cacheDependency = ndxInitializer.join(\"\"), testPos = previousPos);\n }\n if (maskset.tests[pos] && maskset.tests[pos][0].cd === cacheDependency) return maskset.tests[pos];\n for (var mtndx = ndxInitializer.shift(); mtndx < maskTokens.length; mtndx++) {\n var match = resolveTestFromToken(maskTokens[mtndx], ndxInitializer, [ mtndx ]);\n if (match && testPos === pos || pos < testPos) break;\n }\n }\n return 0 !== matches.length && !insertStop || matches.push({\n match: {\n fn: null,\n static: !0,\n optionality: !1,\n casing: null,\n def: \"\",\n placeholder: \"\"\n },\n locator: [],\n mloc: {},\n cd: cacheDependency\n }), void 0 !== ndxIntlzr && maskset.tests[pos] ? $.extend(!0, [], matches) : (maskset.tests[pos] = $.extend(!0, [], matches), \n maskset.tests[pos]);\n }\n function getBufferTemplate() {\n return void 0 === maskset._buffer && (maskset._buffer = getMaskTemplate(!1, 1), \n void 0 === maskset.buffer && (maskset.buffer = maskset._buffer.slice())), maskset._buffer;\n }\n function getBuffer(noCache) {\n return void 0 !== maskset.buffer && !0 !== noCache || (maskset.buffer = getMaskTemplate(!0, getLastValidPosition(), !0), \n void 0 === maskset._buffer && (maskset._buffer = maskset.buffer.slice())), maskset.buffer;\n }\n function refreshFromBuffer(start, end, buffer) {\n var i, p, skipOptionalPartCharacter = opts.skipOptionalPartCharacter, bffr = isRTL ? buffer.slice().reverse() : buffer;\n if (opts.skipOptionalPartCharacter = \"\", !0 === start) resetMaskSet(), maskset.tests = {}, \n start = 0, end = buffer.length, p = determineNewCaretPosition({\n begin: 0,\n end: 0\n }, !1).begin; else {\n for (i = start; i < end; i++) delete maskset.validPositions[i];\n p = start;\n }\n var keypress = new $.Event(\"keypress\");\n for (i = start; i < end; i++) {\n keypress.which = bffr[i].toString().charCodeAt(0), ignorable = !1;\n var valResult = EventHandlers.keypressEvent.call(el, keypress, !0, !1, !1, p);\n !1 !== valResult && (p = valResult.forwardPosition);\n }\n opts.skipOptionalPartCharacter = skipOptionalPartCharacter;\n }\n function casing(elem, test, pos) {\n switch (opts.casing || test.casing) {\n case \"upper\":\n elem = elem.toUpperCase();\n break;\n\n case \"lower\":\n elem = elem.toLowerCase();\n break;\n\n case \"title\":\n var posBefore = maskset.validPositions[pos - 1];\n elem = 0 === pos || posBefore && posBefore.input === String.fromCharCode(keyCode.SPACE) ? elem.toUpperCase() : elem.toLowerCase();\n break;\n\n default:\n if ($.isFunction(opts.casing)) {\n var args = Array.prototype.slice.call(arguments);\n args.push(maskset.validPositions), elem = opts.casing.apply(this, args);\n }\n }\n return elem;\n }\n function checkAlternationMatch(altArr1, altArr2, na) {\n for (var altArrC = opts.greedy ? altArr2 : altArr2.slice(0, 1), isMatch = !1, naArr = void 0 !== na ? na.split(\",\") : [], naNdx, i = 0; i < naArr.length; i++) -1 !== (naNdx = altArr1.indexOf(naArr[i])) && altArr1.splice(naNdx, 1);\n for (var alndx = 0; alndx < altArr1.length; alndx++) if (-1 !== $.inArray(altArr1[alndx], altArrC)) {\n isMatch = !0;\n break;\n }\n return isMatch;\n }\n function alternate(maskPos, c, strict, fromIsValid, rAltPos, selection) {\n var validPsClone = $.extend(!0, {}, maskset.validPositions), tstClone = $.extend(!0, {}, maskset.tests), lastAlt, alternation, isValidRslt = !1, returnRslt = !1, altPos, prevAltPos, i, validPos, decisionPos, lAltPos = void 0 !== rAltPos ? rAltPos : getLastValidPosition(), nextPos, input, begin, end;\n if (selection && (begin = selection.begin, end = selection.end, selection.begin > selection.end && (begin = selection.end, \n end = selection.begin)), -1 === lAltPos && void 0 === rAltPos) lastAlt = 0, prevAltPos = getTest(lastAlt), \n alternation = prevAltPos.alternation; else for (;0 <= lAltPos; lAltPos--) if (altPos = maskset.validPositions[lAltPos], \n altPos && void 0 !== altPos.alternation) {\n if (prevAltPos && prevAltPos.locator[altPos.alternation] !== altPos.locator[altPos.alternation]) break;\n lastAlt = lAltPos, alternation = maskset.validPositions[lastAlt].alternation, prevAltPos = altPos;\n }\n if (void 0 !== alternation) {\n decisionPos = parseInt(lastAlt), maskset.excludes[decisionPos] = maskset.excludes[decisionPos] || [], \n !0 !== maskPos && maskset.excludes[decisionPos].push(getDecisionTaker(prevAltPos) + \":\" + prevAltPos.alternation);\n var validInputs = [], resultPos = -1;\n for (i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) -1 === resultPos && maskPos <= i && void 0 !== c && (validInputs.push(c), \n resultPos = validInputs.length - 1), validPos = maskset.validPositions[i], validPos && !0 !== validPos.generatedInput && (void 0 === selection || i < begin || end <= i) && validInputs.push(validPos.input), \n delete maskset.validPositions[i];\n for (-1 === resultPos && void 0 !== c && (validInputs.push(c), resultPos = validInputs.length - 1); void 0 !== maskset.excludes[decisionPos] && maskset.excludes[decisionPos].length < 10; ) {\n for (maskset.tests = {}, resetMaskSet(!0), isValidRslt = !0, i = 0; i < validInputs.length && (nextPos = isValidRslt.caret || getLastValidPosition(void 0, !0) + 1, \n input = validInputs[i], isValidRslt = isValid(nextPos, input, !1, fromIsValid, !0)); i++) i === resultPos && (returnRslt = isValidRslt), \n 1 == maskPos && isValidRslt && (returnRslt = {\n caretPos: i\n });\n if (isValidRslt) break;\n if (resetMaskSet(), prevAltPos = getTest(decisionPos), maskset.validPositions = $.extend(!0, {}, validPsClone), \n maskset.tests = $.extend(!0, {}, tstClone), !maskset.excludes[decisionPos]) {\n returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);\n break;\n }\n var decisionTaker = getDecisionTaker(prevAltPos);\n if (-1 !== maskset.excludes[decisionPos].indexOf(decisionTaker + \":\" + prevAltPos.alternation)) {\n returnRslt = alternate(maskPos, c, strict, fromIsValid, decisionPos - 1, selection);\n break;\n }\n for (maskset.excludes[decisionPos].push(decisionTaker + \":\" + prevAltPos.alternation), \n i = decisionPos; i < getLastValidPosition(void 0, !0) + 1; i++) delete maskset.validPositions[i];\n }\n }\n return returnRslt && !1 === opts.keepStatic || delete maskset.excludes[decisionPos], \n returnRslt;\n }\n function isValid(pos, c, strict, fromIsValid, fromAlternate, validateOnly) {\n function isSelection(posObj) {\n return isRTL ? 1 < posObj.begin - posObj.end || posObj.begin - posObj.end == 1 : 1 < posObj.end - posObj.begin || posObj.end - posObj.begin == 1;\n }\n strict = !0 === strict;\n var maskPos = pos;\n function processCommandObject(commandObj) {\n if (void 0 !== commandObj) {\n if (void 0 !== commandObj.remove && ($.isArray(commandObj.remove) || (commandObj.remove = [ commandObj.remove ]), \n $.each(commandObj.remove.sort(function(a, b) {\n return b.pos - a.pos;\n }), function(ndx, lmnt) {\n revalidateMask({\n begin: lmnt,\n end: lmnt + 1\n });\n }), commandObj.remove = void 0), void 0 !== commandObj.insert && ($.isArray(commandObj.insert) || (commandObj.insert = [ commandObj.insert ]), \n $.each(commandObj.insert.sort(function(a, b) {\n return a.pos - b.pos;\n }), function(ndx, lmnt) {\n \"\" !== lmnt.c && isValid(lmnt.pos, lmnt.c, void 0 === lmnt.strict || lmnt.strict, void 0 !== lmnt.fromIsValid ? lmnt.fromIsValid : fromIsValid);\n }), commandObj.insert = void 0), commandObj.refreshFromBuffer && commandObj.buffer) {\n var refresh = commandObj.refreshFromBuffer;\n refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, commandObj.buffer), \n commandObj.refreshFromBuffer = void 0;\n }\n void 0 !== commandObj.rewritePosition && (maskPos = commandObj.rewritePosition, \n commandObj = !0);\n }\n return commandObj;\n }\n function _isValid(position, c, strict) {\n var rslt = !1;\n return $.each(getTests(position), function(ndx, tst) {\n var test = tst.match;\n if (getBuffer(!0), rslt = null != test.fn ? test.fn.test(c, maskset, position, strict, opts, isSelection(pos)) : (c === test.def || c === opts.skipOptionalPartCharacter) && \"\" !== test.def && {\n c: getPlaceholder(position, test, !0) || test.def,\n pos: position\n }, !1 !== rslt) {\n var elem = void 0 !== rslt.c ? rslt.c : c, validatedPos = position;\n return elem = elem === opts.skipOptionalPartCharacter && !0 === test.static ? getPlaceholder(position, test, !0) || test.def : elem, \n rslt = processCommandObject(rslt), !0 !== rslt && void 0 !== rslt.pos && rslt.pos !== position && (validatedPos = rslt.pos), \n !0 !== rslt && void 0 === rslt.pos && void 0 === rslt.c ? !1 : (!1 === revalidateMask(pos, $.extend({}, tst, {\n input: casing(elem, test, validatedPos)\n }), fromIsValid, validatedPos) && (rslt = !1), !1);\n }\n }), rslt;\n }\n void 0 !== pos.begin && (maskPos = isRTL ? pos.end : pos.begin);\n var result = !0, positionsClone = $.extend(!0, {}, maskset.validPositions);\n if (!1 === opts.keepStatic && void 0 !== maskset.excludes[maskPos] && !0 !== fromAlternate && !0 !== fromIsValid) for (var i = maskPos; i < (isRTL ? pos.begin : pos.end); i++) void 0 !== maskset.excludes[i] && (maskset.excludes[i] = void 0, \n delete maskset.tests[i]);\n if ($.isFunction(opts.preValidation) && !0 !== fromIsValid && !0 !== validateOnly && (result = opts.preValidation.call(el, getBuffer(), maskPos, c, isSelection(pos), opts, maskset, pos, strict || fromAlternate), \n result = processCommandObject(result)), !0 === result) {\n if (void 0 === maxLength || maskPos < maxLength) {\n if (result = _isValid(maskPos, c, strict), (!strict || !0 === fromIsValid) && !1 === result && !0 !== validateOnly) {\n var currentPosValid = maskset.validPositions[maskPos];\n if (!currentPosValid || !0 !== currentPosValid.match.static || currentPosValid.match.def !== c && c !== opts.skipOptionalPartCharacter) {\n if (opts.insertMode || void 0 === maskset.validPositions[seekNext(maskPos)] || pos.end > maskPos) {\n var skip = !1;\n if (maskset.jitOffset[maskPos] && void 0 === maskset.validPositions[seekNext(maskPos)] && (result = isValid(maskPos + maskset.jitOffset[maskPos], c, !0), \n !1 !== result && (!0 !== fromAlternate && (result.caret = maskPos), skip = !0)), \n pos.end > maskPos && (maskset.validPositions[maskPos] = void 0), !skip && !isMask(maskPos, opts.keepStatic)) for (var nPos = maskPos + 1, snPos = seekNext(maskPos); nPos <= snPos; nPos++) if (result = _isValid(nPos, c, strict), \n !1 !== result) {\n result = trackbackPositions(maskPos, void 0 !== result.pos ? result.pos : nPos) || result, \n maskPos = nPos;\n break;\n }\n }\n } else result = {\n caret: seekNext(maskPos)\n };\n }\n } else result = !1;\n !1 !== result || !opts.keepStatic || !isComplete(getBuffer()) && 0 !== maskPos || strict || !0 === fromAlternate ? isSelection(pos) && maskset.tests[maskPos] && 1 < maskset.tests[maskPos].length && opts.keepStatic && !strict && !0 !== fromAlternate && (result = alternate(!0)) : result = alternate(maskPos, c, strict, fromIsValid, void 0, pos), \n !0 === result && (result = {\n pos: maskPos\n });\n }\n if ($.isFunction(opts.postValidation) && !0 !== fromIsValid && !0 !== validateOnly) {\n var postResult = opts.postValidation.call(el, getBuffer(!0), void 0 !== pos.begin ? isRTL ? pos.end : pos.begin : pos, c, result, opts, maskset, strict);\n void 0 !== postResult && (result = !0 === postResult ? result : postResult);\n }\n result && void 0 === result.pos && (result.pos = maskPos), !1 === result || !0 === validateOnly ? (resetMaskSet(!0), \n maskset.validPositions = $.extend(!0, {}, positionsClone)) : trackbackPositions(void 0, maskPos, !0);\n var endResult = processCommandObject(result);\n return endResult;\n }\n function trackbackPositions(originalPos, newPos, fillOnly) {\n if (void 0 === originalPos) for (originalPos = newPos - 1; 0 < originalPos && !maskset.validPositions[originalPos]; originalPos--) ;\n for (var ps = originalPos; ps < newPos; ps++) if (void 0 === maskset.validPositions[ps] && !isMask(ps, !0)) {\n var vp = 0 == ps ? getTest(ps) : maskset.validPositions[ps - 1];\n if (vp) {\n var tests = getTests(ps).slice();\n \"\" === tests[tests.length - 1].match.def && tests.pop();\n var bestMatch = determineTestTemplate(ps, tests), np;\n if (bestMatch && (!0 !== bestMatch.match.jit || \"master\" === bestMatch.match.newBlockMarker && (np = maskset.validPositions[ps + 1]) && !0 === np.match.optionalQuantifier) && (bestMatch = $.extend({}, bestMatch, {\n input: getPlaceholder(ps, bestMatch.match, !0) || bestMatch.match.def\n }), bestMatch.generatedInput = !0, revalidateMask(ps, bestMatch, !0), !0 !== fillOnly)) {\n var cvpInput = maskset.validPositions[newPos].input;\n return maskset.validPositions[newPos] = void 0, isValid(newPos, cvpInput, !0, !0);\n }\n }\n }\n }\n function revalidateMask(pos, validTest, fromIsValid, validatedPos) {\n function IsEnclosedStatic(pos, valids, selection) {\n var posMatch = valids[pos];\n if (void 0 === posMatch || !0 !== posMatch.match.static || !0 === posMatch.match.optionality || void 0 !== valids[0] && void 0 !== valids[0].alternation) return !1;\n var prevMatch = selection.begin <= pos - 1 ? valids[pos - 1] && !0 === valids[pos - 1].match.static && valids[pos - 1] : valids[pos - 1], nextMatch = selection.end > pos + 1 ? valids[pos + 1] && !0 === valids[pos + 1].match.static && valids[pos + 1] : valids[pos + 1];\n return prevMatch && nextMatch;\n }\n var offset = 0, begin = void 0 !== pos.begin ? pos.begin : pos, end = void 0 !== pos.end ? pos.end : pos;\n if (pos.begin > pos.end && (begin = pos.end, end = pos.begin), validatedPos = void 0 !== validatedPos ? validatedPos : begin, \n begin !== end || opts.insertMode && void 0 !== maskset.validPositions[validatedPos] && void 0 === fromIsValid || void 0 === validTest) {\n var positionsClone = $.extend(!0, {}, maskset.validPositions), lvp = getLastValidPosition(void 0, !0), i;\n for (maskset.p = begin, i = lvp; begin <= i; i--) delete maskset.validPositions[i], \n void 0 === validTest && delete maskset.tests[i + 1];\n var valid = !0, j = validatedPos, posMatch = j, t, canMatch;\n for (validTest && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest), \n posMatch++, j++), i = validTest ? end : end - 1; i <= lvp; i++) {\n if (void 0 !== (t = positionsClone[i]) && !0 !== t.generatedInput && (end <= i || begin <= i && IsEnclosedStatic(i, positionsClone, {\n begin: begin,\n end: end\n }))) {\n for (;\"\" !== getTest(posMatch).match.def; ) {\n if (!1 !== (canMatch = positionCanMatchDefinition(posMatch, t, opts)) || \"+\" === t.match.def) {\n \"+\" === t.match.def && getBuffer(!0);\n var result = isValid(posMatch, t.input, \"+\" !== t.match.def, \"+\" !== t.match.def);\n if (valid = !1 !== result, j = (result.pos || posMatch) + 1, !valid && canMatch) break;\n } else valid = !1;\n if (valid) {\n void 0 === validTest && t.match.static && i === pos.begin && offset++;\n break;\n }\n if (!valid && posMatch > maskset.maskLength) break;\n posMatch++;\n }\n \"\" == getTest(posMatch).match.def && (valid = !1), posMatch = j;\n }\n if (!valid) break;\n }\n if (!valid) return maskset.validPositions = $.extend(!0, {}, positionsClone), resetMaskSet(!0), \n !1;\n } else validTest && getTest(validatedPos).match.cd === validTest.match.cd && (maskset.validPositions[validatedPos] = $.extend(!0, {}, validTest));\n return resetMaskSet(!0), offset;\n }\n function isMask(pos, strict, fuzzy) {\n var test = getTestTemplate(pos).match;\n if (\"\" === test.def && (test = getTest(pos).match), !0 !== test.static) return test.fn;\n if (!0 === fuzzy && void 0 !== maskset.validPositions[pos] && !0 !== maskset.validPositions[pos].generatedInput) return !0;\n if (!0 !== strict && -1 < pos) {\n if (fuzzy) {\n var tests = getTests(pos);\n return tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0);\n }\n var testTemplate = determineTestTemplate(pos, getTests(pos)), testPlaceHolder = getPlaceholder(pos, testTemplate.match);\n return testTemplate.match.def !== testPlaceHolder;\n }\n return !1;\n }\n function seekNext(pos, newBlock, fuzzy) {\n void 0 === fuzzy && (fuzzy = !0);\n for (var position = pos + 1; \"\" !== getTest(position).match.def && (!0 === newBlock && (!0 !== getTest(position).match.newBlockMarker || !isMask(position, void 0, !0)) || !0 !== newBlock && !isMask(position, void 0, fuzzy)); ) position++;\n return position;\n }\n function seekPrevious(pos, newBlock) {\n var position = pos, tests;\n if (position <= 0) return 0;\n for (;0 < --position && (!0 === newBlock && !0 !== getTest(position).match.newBlockMarker || !0 !== newBlock && !isMask(position, void 0, !0) && (tests = getTests(position), \n tests.length < 2 || 2 === tests.length && \"\" === tests[1].match.def)); ) ;\n return position;\n }\n function writeBuffer(input, buffer, caretPos, event, triggerEvents) {\n if (event && $.isFunction(opts.onBeforeWrite)) {\n var result = opts.onBeforeWrite.call(inputmask, event, buffer, caretPos, opts);\n if (result) {\n if (result.refreshFromBuffer) {\n var refresh = result.refreshFromBuffer;\n refreshFromBuffer(!0 === refresh ? refresh : refresh.start, refresh.end, result.buffer || buffer), \n buffer = getBuffer(!0);\n }\n void 0 !== caretPos && (caretPos = void 0 !== result.caret ? result.caret : caretPos);\n }\n }\n if (void 0 !== input && (input.inputmask._valueSet(buffer.join(\"\")), void 0 === caretPos || void 0 !== event && \"blur\" === event.type || caret(input, caretPos, void 0, void 0, void 0 !== event && \"keydown\" === event.type && (event.keyCode === keyCode.DELETE || event.keyCode === keyCode.BACKSPACE)), \n !0 === triggerEvents)) {\n var $input = $(input), nptVal = input.inputmask._valueGet();\n skipInputEvent = !0, $input.trigger(\"input\"), setTimeout(function() {\n nptVal === getBufferTemplate().join(\"\") ? $input.trigger(\"cleared\") : !0 === isComplete(buffer) && $input.trigger(\"complete\");\n }, 0);\n }\n }\n function getPlaceholder(pos, test, returnPL) {\n if (test = test || getTest(pos).match, void 0 !== test.placeholder || !0 === returnPL) return $.isFunction(test.placeholder) ? test.placeholder(opts) : test.placeholder;\n if (!0 !== test.static) return opts.placeholder.charAt(pos % opts.placeholder.length);\n if (-1 < pos && void 0 === maskset.validPositions[pos]) {\n var tests = getTests(pos), staticAlternations = [], prevTest;\n if (tests.length > 1 + (\"\" === tests[tests.length - 1].match.def ? 1 : 0)) for (var i = 0; i < tests.length; i++) if (\"\" !== tests[i].match.def && !0 !== tests[i].match.optionality && !0 !== tests[i].match.optionalQuantifier && (!0 === tests[i].match.static || void 0 === prevTest || !1 !== tests[i].match.fn.test(prevTest.match.def, maskset, pos, !0, opts)) && (staticAlternations.push(tests[i]), \n !0 === tests[i].match.static && (prevTest = tests[i]), 1 < staticAlternations.length && /[0-9a-bA-Z]/.test(staticAlternations[0].match.def))) return opts.placeholder.charAt(pos % opts.placeholder.length);\n }\n return test.def;\n }\n function HandleNativePlaceholder(npt, value) {\n if (ie) {\n if (npt.inputmask._valueGet() !== value && (npt.placeholder !== value || \"\" === npt.placeholder)) {\n var buffer = getBuffer().slice(), nptValue = npt.inputmask._valueGet();\n if (nptValue !== value) {\n var lvp = getLastValidPosition();\n -1 === lvp && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : -1 !== lvp && clearOptionalTail(buffer), \n writeBuffer(npt, buffer);\n }\n }\n } else npt.placeholder !== value && (npt.placeholder = value, \"\" === npt.placeholder && npt.removeAttribute(\"placeholder\"));\n }\n function determineNewCaretPosition(selectedCaret, tabbed) {\n function doRadixFocus(clickPos) {\n if (\"\" !== opts.radixPoint && 0 !== opts.digits) {\n var vps = maskset.validPositions;\n if (void 0 === vps[clickPos] || vps[clickPos].input === getPlaceholder(clickPos)) {\n if (clickPos < seekNext(-1)) return !0;\n var radixPos = $.inArray(opts.radixPoint, getBuffer());\n if (-1 !== radixPos) {\n for (var vp in vps) if (vps[vp] && radixPos < vp && vps[vp].input !== getPlaceholder(vp)) return !1;\n return !0;\n }\n }\n }\n return !1;\n }\n if (tabbed && (isRTL ? selectedCaret.end = selectedCaret.begin : selectedCaret.begin = selectedCaret.end), \n selectedCaret.begin === selectedCaret.end) {\n switch (opts.positionCaretOnClick) {\n case \"none\":\n break;\n\n case \"select\":\n selectedCaret = {\n begin: 0,\n end: getBuffer().length\n };\n break;\n\n case \"ignore\":\n selectedCaret.end = selectedCaret.begin = seekNext(getLastValidPosition());\n break;\n\n case \"radixFocus\":\n if (doRadixFocus(selectedCaret.begin)) {\n var radixPos = getBuffer().join(\"\").indexOf(opts.radixPoint);\n selectedCaret.end = selectedCaret.begin = opts.numericInput ? seekNext(radixPos) : radixPos;\n break;\n }\n\n default:\n var clickPosition = selectedCaret.begin, lvclickPosition = getLastValidPosition(clickPosition, !0), lastPosition = seekNext(-1 !== lvclickPosition || isMask(0) ? lvclickPosition : 0);\n if (clickPosition < lastPosition) selectedCaret.end = selectedCaret.begin = isMask(clickPosition, !0) || isMask(clickPosition - 1, !0) ? clickPosition : seekNext(clickPosition); else {\n var lvp = maskset.validPositions[lvclickPosition], tt = getTestTemplate(lastPosition, lvp ? lvp.match.locator : void 0, lvp), placeholder = getPlaceholder(lastPosition, tt.match);\n if (\"\" !== placeholder && getBuffer()[lastPosition] !== placeholder && !0 !== tt.match.optionalQuantifier && !0 !== tt.match.newBlockMarker || !isMask(lastPosition, opts.keepStatic) && tt.match.def === placeholder) {\n var newPos = seekNext(lastPosition);\n (newPos <= clickPosition || clickPosition === lastPosition) && (lastPosition = newPos);\n }\n selectedCaret.end = selectedCaret.begin = lastPosition;\n }\n }\n return selectedCaret;\n }\n }\n var EventRuler = {\n on: function on(input, eventName, eventHandler) {\n var ev = function ev(e) {\n e.originalEvent && (e = e.originalEvent || e, arguments[0] = e);\n var that = this, args;\n if (void 0 === that.inputmask && \"FORM\" !== this.nodeName) {\n var imOpts = $.data(that, \"_inputmask_opts\");\n imOpts ? new Inputmask(imOpts).mask(that) : EventRuler.off(that);\n } else {\n if (\"setvalue\" === e.type || \"FORM\" === this.nodeName || !(that.disabled || that.readOnly && !(\"keydown\" === e.type && e.ctrlKey && 67 === e.keyCode || !1 === opts.tabThrough && e.keyCode === keyCode.TAB))) {\n switch (e.type) {\n case \"input\":\n if (!0 === skipInputEvent || e.inputType && \"insertCompositionText\" === e.inputType) return skipInputEvent = !1, \n e.preventDefault();\n break;\n\n case \"keydown\":\n skipKeyPressEvent = !1, skipInputEvent = !1;\n break;\n\n case \"keypress\":\n if (!0 === skipKeyPressEvent) return e.preventDefault();\n skipKeyPressEvent = !0;\n break;\n\n case \"click\":\n case \"focus\":\n return validationEvent ? (validationEvent = !1, input.blur(), HandleNativePlaceholder(input, (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).join(\"\")), \n setTimeout(function() {\n input.focus();\n }, 3e3)) : (args = arguments, setTimeout(function() {\n input.inputmask && eventHandler.apply(that, args);\n }, 0)), !1;\n }\n var returnVal = eventHandler.apply(that, arguments);\n return !1 === returnVal && (e.preventDefault(), e.stopPropagation()), returnVal;\n }\n e.preventDefault();\n }\n };\n input.inputmask.events[eventName] = input.inputmask.events[eventName] || [], input.inputmask.events[eventName].push(ev), \n -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).on(eventName, ev) : $(input).on(eventName, ev);\n },\n off: function off(input, event) {\n var events;\n input.inputmask && input.inputmask.events && (event ? (events = [], events[event] = input.inputmask.events[event]) : events = input.inputmask.events, \n $.each(events, function(eventName, evArr) {\n for (;0 < evArr.length; ) {\n var ev = evArr.pop();\n -1 !== $.inArray(eventName, [ \"submit\", \"reset\" ]) ? null !== input.form && $(input.form).off(eventName, ev) : $(input).off(eventName, ev);\n }\n delete input.inputmask.events[eventName];\n }));\n }\n }, EventHandlers = {\n keydownEvent: function keydownEvent(e) {\n var input = this, $input = $(input), k = e.keyCode, pos = caret(input), kdResult = opts.onKeyDown.call(this, e, getBuffer(), pos, opts);\n if (void 0 !== kdResult) return kdResult;\n if (k === keyCode.BACKSPACE || k === keyCode.DELETE || iphone && k === keyCode.BACKSPACE_SAFARI || e.ctrlKey && k === keyCode.X && !(\"oncut\" in input)) e.preventDefault(), \n handleRemove(input, k, pos), writeBuffer(input, getBuffer(!0), maskset.p, e, input.inputmask._valueGet() !== getBuffer().join(\"\")); else if (k === keyCode.END || k === keyCode.PAGE_DOWN) {\n e.preventDefault();\n var caretPos = seekNext(getLastValidPosition());\n caret(input, e.shiftKey ? pos.begin : caretPos, caretPos, !0);\n } else k === keyCode.HOME && !e.shiftKey || k === keyCode.PAGE_UP ? (e.preventDefault(), \n caret(input, 0, e.shiftKey ? pos.begin : 0, !0)) : (opts.undoOnEscape && k === keyCode.ESCAPE || 90 === k && e.ctrlKey) && !0 !== e.altKey ? (checkVal(input, !0, !1, undoValue.split(\"\")), \n $input.trigger(\"click\")) : !0 === opts.tabThrough && k === keyCode.TAB ? (!0 === e.shiftKey ? (!0 === getTest(pos.begin).match.static && (pos.begin = seekNext(pos.begin)), \n pos.end = seekPrevious(pos.begin, !0), pos.begin = seekPrevious(pos.end, !0)) : (pos.begin = seekNext(pos.begin, !0), \n pos.end = seekNext(pos.begin, !0), pos.end < maskset.maskLength && pos.end--), pos.begin < maskset.maskLength && (e.preventDefault(), \n caret(input, pos.begin, pos.end))) : e.shiftKey || opts.insertModeVisual && !1 === opts.insertMode && (k === keyCode.RIGHT ? setTimeout(function() {\n var caretPos = caret(input);\n caret(input, caretPos.begin);\n }, 0) : k === keyCode.LEFT && setTimeout(function() {\n var caretPos_begin = translatePosition(input.inputmask.caretPos.begin), caretPos_end = translatePosition(input.inputmask.caretPos.end);\n caret(input, isRTL ? caretPos_begin + (caretPos_begin === maskset.maskLength ? 0 : 1) : caretPos_begin - (0 === caretPos_begin ? 0 : 1));\n }, 0));\n ignorable = -1 !== $.inArray(k, opts.ignorables);\n },\n keypressEvent: function keypressEvent(e, checkval, writeOut, strict, ndx) {\n var input = this, $input = $(input), k = e.which || e.charCode || e.keyCode;\n if (!(!0 === checkval || e.ctrlKey && e.altKey) && (e.ctrlKey || e.metaKey || ignorable)) return k === keyCode.ENTER && undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n setTimeout(function() {\n $input.trigger(\"change\");\n }, 0)), skipInputEvent = !0, !0;\n if (k) {\n 44 !== k && 46 !== k || 3 !== e.location || \"\" === opts.radixPoint || (k = opts.radixPoint.charCodeAt(0));\n var pos = checkval ? {\n begin: ndx,\n end: ndx\n } : caret(input), forwardPosition, c = String.fromCharCode(k);\n maskset.writeOutBuffer = !0;\n var valResult = isValid(pos, c, strict);\n if (!1 !== valResult && (resetMaskSet(!0), forwardPosition = void 0 !== valResult.caret ? valResult.caret : seekNext(valResult.pos.begin ? valResult.pos.begin : valResult.pos), \n maskset.p = forwardPosition), forwardPosition = opts.numericInput && void 0 === valResult.caret ? seekPrevious(forwardPosition) : forwardPosition, \n !1 !== writeOut && (setTimeout(function() {\n opts.onKeyValidation.call(input, k, valResult);\n }, 0), maskset.writeOutBuffer && !1 !== valResult)) {\n var buffer = getBuffer();\n writeBuffer(input, buffer, forwardPosition, e, !0 !== checkval);\n }\n if (e.preventDefault(), checkval) return !1 !== valResult && (valResult.forwardPosition = forwardPosition), \n valResult;\n }\n },\n pasteEvent: function pasteEvent(e) {\n var input = this, inputValue = this.inputmask._valueGet(!0), caretPos = caret(this), tempValue;\n isRTL && (tempValue = caretPos.end, caretPos.end = caretPos.begin, caretPos.begin = tempValue);\n var valueBeforeCaret = inputValue.substr(0, caretPos.begin), valueAfterCaret = inputValue.substr(caretPos.end, inputValue.length);\n if (valueBeforeCaret == (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).slice(0, caretPos.begin).join(\"\") && (valueBeforeCaret = \"\"), \n valueAfterCaret == (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).slice(caretPos.end).join(\"\") && (valueAfterCaret = \"\"), \n window.clipboardData && window.clipboardData.getData) inputValue = valueBeforeCaret + window.clipboardData.getData(\"Text\") + valueAfterCaret; else {\n if (!e.clipboardData || !e.clipboardData.getData) return !0;\n inputValue = valueBeforeCaret + e.clipboardData.getData(\"text/plain\") + valueAfterCaret;\n }\n var pasteValue = inputValue;\n if ($.isFunction(opts.onBeforePaste)) {\n if (pasteValue = opts.onBeforePaste.call(inputmask, inputValue, opts), !1 === pasteValue) return e.preventDefault();\n pasteValue = pasteValue || inputValue;\n }\n return checkVal(this, !1, !1, pasteValue.toString().split(\"\")), writeBuffer(this, getBuffer(), seekNext(getLastValidPosition()), e, undoValue !== getBuffer().join(\"\")), \n e.preventDefault();\n },\n inputFallBackEvent: function inputFallBackEvent(e) {\n function ieMobileHandler(input, inputValue, caretPos) {\n if (iemobile) {\n var inputChar = inputValue.replace(getBuffer().join(\"\"), \"\");\n if (1 === inputChar.length) {\n var iv = inputValue.split(\"\");\n iv.splice(caretPos.begin, 0, inputChar), inputValue = iv.join(\"\");\n }\n }\n return inputValue;\n }\n function analyseChanges(inputValue, buffer, caretPos) {\n for (var frontPart = inputValue.substr(0, caretPos.begin).split(\"\"), backPart = inputValue.substr(caretPos.begin).split(\"\"), frontBufferPart = buffer.substr(0, caretPos.begin).split(\"\"), backBufferPart = buffer.substr(caretPos.begin).split(\"\"), fpl = frontPart.length >= frontBufferPart.length ? frontPart.length : frontBufferPart.length, bpl = backPart.length >= backBufferPart.length ? backPart.length : backBufferPart.length, bl, i, action = \"\", data = [], marker = \"~\", placeholder; frontPart.length < fpl; ) frontPart.push(\"~\");\n for (;frontBufferPart.length < fpl; ) frontBufferPart.push(\"~\");\n for (;backPart.length < bpl; ) backPart.unshift(\"~\");\n for (;backBufferPart.length < bpl; ) backBufferPart.unshift(\"~\");\n var newBuffer = frontPart.concat(backPart), oldBuffer = frontBufferPart.concat(backBufferPart);\n for (i = 0, bl = newBuffer.length; i < bl; i++) switch (placeholder = getPlaceholder(translatePosition(i)), \n action) {\n case \"insertText\":\n oldBuffer[i - 1] === newBuffer[i] && caretPos.begin == newBuffer.length - 1 && data.push(newBuffer[i]), \n i = bl;\n break;\n\n case \"insertReplacementText\":\n \"~\" === newBuffer[i] ? caretPos.end++ : i = bl;\n break;\n\n case \"deleteContentBackward\":\n \"~\" === newBuffer[i] ? caretPos.end++ : i = bl;\n break;\n\n default:\n newBuffer[i] !== oldBuffer[i] && (\"~\" !== newBuffer[i + 1] && newBuffer[i + 1] !== placeholder && void 0 !== newBuffer[i + 1] || (oldBuffer[i] !== placeholder || \"~\" !== oldBuffer[i + 1]) && \"~\" !== oldBuffer[i] ? \"~\" === oldBuffer[i + 1] && oldBuffer[i] === newBuffer[i + 1] ? (action = \"insertText\", \n data.push(newBuffer[i]), caretPos.begin--, caretPos.end--) : newBuffer[i] !== placeholder && \"~\" !== newBuffer[i] && (\"~\" === newBuffer[i + 1] || oldBuffer[i] !== newBuffer[i] && oldBuffer[i + 1] === newBuffer[i + 1]) ? (action = \"insertReplacementText\", \n data.push(newBuffer[i]), caretPos.begin--) : \"~\" === newBuffer[i] ? (action = \"deleteContentBackward\", \n !isMask(translatePosition(i), !0) && oldBuffer[i] !== opts.radixPoint || caretPos.end++) : i = bl : (action = \"insertText\", \n data.push(newBuffer[i]), caretPos.begin--, caretPos.end--));\n break;\n }\n return {\n action: action,\n data: data,\n caret: caretPos\n };\n }\n var input = this, inputValue = input.inputmask._valueGet(!0), buffer = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\"), caretPos = caret(input, void 0, void 0, !0);\n if (buffer !== inputValue) {\n inputValue = ieMobileHandler(input, inputValue, caretPos);\n var changes = analyseChanges(inputValue, buffer, caretPos);\n switch ((input.inputmask.shadowRoot || document).activeElement !== input && input.focus(), \n writeBuffer(input, getBuffer()), caret(input, caretPos.begin, caretPos.end, !0), \n changes.action) {\n case \"insertText\":\n case \"insertReplacementText\":\n $.each(changes.data, function(ndx, entry) {\n var keypress = new $.Event(\"keypress\");\n keypress.which = entry.charCodeAt(0), ignorable = !1, EventHandlers.keypressEvent.call(input, keypress);\n }), setTimeout(function() {\n $el.trigger(\"keyup\");\n }, 0);\n break;\n\n case \"deleteContentBackward\":\n var keydown = new $.Event(\"keydown\");\n keydown.keyCode = keyCode.BACKSPACE, EventHandlers.keydownEvent.call(input, keydown);\n break;\n\n default:\n applyInputValue(input, inputValue);\n break;\n }\n e.preventDefault();\n }\n },\n compositionendEvent: function compositionendEvent(e) {\n $el.trigger(\"input\");\n },\n setValueEvent: function setValueEvent(e, argument_1, argument_2) {\n var input = this, value = e && e.detail ? e.detail[0] : argument_1;\n void 0 === value && (value = this.inputmask._valueGet(!0)), applyInputValue(this, value), \n (e.detail && void 0 !== e.detail[1] || void 0 !== argument_2) && caret(this, e.detail ? e.detail[1] : argument_2);\n },\n focusEvent: function focusEvent(e) {\n var input = this, nptValue = this.inputmask._valueGet();\n opts.showMaskOnFocus && nptValue !== getBuffer().join(\"\") && writeBuffer(this, getBuffer(), seekNext(getLastValidPosition())), \n !0 !== opts.positionCaretOnTab || !1 !== mouseEnter || isComplete(getBuffer()) && -1 !== getLastValidPosition() || EventHandlers.clickEvent.apply(this, [ e, !0 ]), \n undoValue = getBuffer().join(\"\");\n },\n invalidEvent: function invalidEvent(e) {\n validationEvent = !0;\n },\n mouseleaveEvent: function mouseleaveEvent() {\n var input = this;\n mouseEnter = !1, opts.clearMaskOnLostFocus && (this.inputmask.shadowRoot || document).activeElement !== this && HandleNativePlaceholder(this, originalPlaceholder);\n },\n clickEvent: function clickEvent(e, tabbed) {\n var input = this;\n if ((this.inputmask.shadowRoot || document).activeElement === this) {\n var newCaretPosition = determineNewCaretPosition(caret(this), tabbed);\n void 0 !== newCaretPosition && caret(this, newCaretPosition);\n }\n },\n cutEvent: function cutEvent(e) {\n var input = this, pos = caret(this), clipboardData = window.clipboardData || e.clipboardData, clipData = isRTL ? getBuffer().slice(pos.end, pos.begin) : getBuffer().slice(pos.begin, pos.end);\n clipboardData.setData(\"text\", isRTL ? clipData.reverse().join(\"\") : clipData.join(\"\")), \n document.execCommand && document.execCommand(\"copy\"), handleRemove(this, keyCode.DELETE, pos), \n writeBuffer(this, getBuffer(), maskset.p, e, undoValue !== getBuffer().join(\"\"));\n },\n blurEvent: function blurEvent(e) {\n var $input = $(this), input = this;\n if (this.inputmask) {\n HandleNativePlaceholder(this, originalPlaceholder);\n var nptValue = this.inputmask._valueGet(), buffer = getBuffer().slice();\n \"\" !== nptValue && (opts.clearMaskOnLostFocus && (-1 === getLastValidPosition() && nptValue === getBufferTemplate().join(\"\") ? buffer = [] : clearOptionalTail(buffer)), \n !1 === isComplete(buffer) && (setTimeout(function() {\n $input.trigger(\"incomplete\");\n }, 0), opts.clearIncomplete && (resetMaskSet(), buffer = opts.clearMaskOnLostFocus ? [] : getBufferTemplate().slice())), \n writeBuffer(this, buffer, void 0, e)), undoValue !== getBuffer().join(\"\") && (undoValue = getBuffer().join(\"\"), \n $input.trigger(\"change\"));\n }\n },\n mouseenterEvent: function mouseenterEvent() {\n var input = this;\n mouseEnter = !0, (this.inputmask.shadowRoot || document).activeElement !== this && (null == originalPlaceholder && this.placeholder !== originalPlaceholder && (originalPlaceholder = this.placeholder), \n opts.showMaskOnHover && HandleNativePlaceholder(this, (isRTL ? getBufferTemplate().slice().reverse() : getBufferTemplate()).join(\"\")));\n },\n submitEvent: function submitEvent() {\n undoValue !== getBuffer().join(\"\") && $el.trigger(\"change\"), opts.clearMaskOnLostFocus && -1 === getLastValidPosition() && el.inputmask._valueGet && el.inputmask._valueGet() === getBufferTemplate().join(\"\") && el.inputmask._valueSet(\"\"), \n opts.clearIncomplete && !1 === isComplete(getBuffer()) && el.inputmask._valueSet(\"\"), \n opts.removeMaskOnSubmit && (el.inputmask._valueSet(el.inputmask.unmaskedvalue(), !0), \n setTimeout(function() {\n writeBuffer(el, getBuffer());\n }, 0));\n },\n resetEvent: function resetEvent() {\n el.inputmask.refreshValue = !0, setTimeout(function() {\n applyInputValue(el, el.inputmask._valueGet(!0));\n }, 0);\n }\n }, valueBuffer;\n function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {\n var inputmask = this || input.inputmask, inputValue = nptvl.slice(), charCodes = \"\", initialNdx = -1, result = void 0;\n function isTemplateMatch(ndx, charCodes) {\n for (var targetTemplate = getMaskTemplate(!0, 0).slice(ndx, seekNext(ndx)).join(\"\").replace(/'/g, \"\"), charCodeNdx = targetTemplate.indexOf(charCodes); 0 < charCodeNdx && \" \" === targetTemplate[charCodeNdx - 1]; ) charCodeNdx--;\n var match = 0 === charCodeNdx && !isMask(ndx) && (getTest(ndx).match.nativeDef === charCodes.charAt(0) || !0 === getTest(ndx).match.static && getTest(ndx).match.nativeDef === \"'\" + charCodes.charAt(0) || \" \" === getTest(ndx).match.nativeDef && (getTest(ndx + 1).match.nativeDef === charCodes.charAt(0) || !0 === getTest(ndx + 1).match.static && getTest(ndx + 1).match.nativeDef === \"'\" + charCodes.charAt(0)));\n if (!match && 0 < charCodeNdx && !isMask(ndx, !1, !0)) {\n var nextPos = seekNext(ndx);\n inputmask.caretPos.begin < nextPos && (inputmask.caretPos = {\n begin: nextPos\n });\n }\n return match;\n }\n resetMaskSet(), maskset.tests = {}, initialNdx = opts.radixPoint ? determineNewCaretPosition({\n begin: 0,\n end: 0\n }).begin : 0, maskset.p = initialNdx, inputmask.caretPos = {\n begin: initialNdx\n };\n var staticMatches = [], prevCaretPos = inputmask.caretPos;\n if ($.each(inputValue, function(ndx, charCode) {\n if (void 0 !== charCode) if (void 0 === maskset.validPositions[ndx] && inputValue[ndx] === getPlaceholder(ndx) && isMask(ndx, !0) && !1 === isValid(ndx, inputValue[ndx], !0, void 0, void 0, !0)) maskset.p++; else {\n var keypress = new $.Event(\"_checkval\");\n keypress.which = charCode.toString().charCodeAt(0), charCodes += charCode;\n var lvp = getLastValidPosition(void 0, !0);\n isTemplateMatch(initialNdx, charCodes) ? result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, lvp + 1) : (result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, inputmask.caretPos.begin), \n result && (initialNdx = inputmask.caretPos.begin + 1, charCodes = \"\")), result ? (void 0 !== result.pos && maskset.validPositions[result.pos] && !0 === maskset.validPositions[result.pos].match.static && void 0 === maskset.validPositions[result.pos].alternation && (staticMatches.push(result.pos), \n isRTL || (result.forwardPosition = result.pos + 1)), writeBuffer(void 0, getBuffer(), result.forwardPosition, keypress, !1), \n inputmask.caretPos = {\n begin: result.forwardPosition,\n end: result.forwardPosition\n }, prevCaretPos = inputmask.caretPos) : inputmask.caretPos = prevCaretPos;\n }\n }), 0 < staticMatches.length) {\n var sndx, validPos, nextValid = seekNext(-1, void 0, !1);\n if (!isComplete(getBuffer()) && staticMatches.length <= nextValid || isComplete(getBuffer()) && 0 < staticMatches.length && staticMatches.length !== nextValid && 0 === staticMatches[0]) for (var nextSndx = nextValid; void 0 !== (sndx = staticMatches.shift()); ) {\n var keypress = new $.Event(\"_checkval\");\n if (validPos = maskset.validPositions[sndx], validPos.generatedInput = !0, keypress.which = validPos.input.charCodeAt(0), \n result = EventHandlers.keypressEvent.call(input, keypress, !0, !1, strict, nextSndx), \n result && void 0 !== result.pos && result.pos !== sndx && maskset.validPositions[result.pos] && !0 === maskset.validPositions[result.pos].match.static) staticMatches.push(result.pos); else if (!result) break;\n nextSndx++;\n } else for (;sndx = staticMatches.pop(); ) validPos = maskset.validPositions[sndx], \n validPos && (validPos.generatedInput = !0);\n }\n if (writeOut) for (var vndx in writeBuffer(input, getBuffer(), result ? result.forwardPosition : void 0, initiatingEvent || new $.Event(\"checkval\"), initiatingEvent && \"input\" === initiatingEvent.type), \n maskset.validPositions) !0 !== maskset.validPositions[vndx].match.generated && delete maskset.validPositions[vndx].generatedInput;\n }\n function unmaskedvalue(input) {\n if (input) {\n if (void 0 === input.inputmask) return input.value;\n input.inputmask && input.inputmask.refreshValue && applyInputValue(input, input.inputmask._valueGet(!0));\n }\n var umValue = [], vps = maskset.validPositions;\n for (var pndx in vps) vps[pndx] && vps[pndx].match && (1 != vps[pndx].match.static || !0 !== vps[pndx].generatedInput) && umValue.push(vps[pndx].input);\n var unmaskedValue = 0 === umValue.length ? \"\" : (isRTL ? umValue.reverse() : umValue).join(\"\");\n if ($.isFunction(opts.onUnMask)) {\n var bufferValue = (isRTL ? getBuffer().slice().reverse() : getBuffer()).join(\"\");\n unmaskedValue = opts.onUnMask.call(inputmask, bufferValue, unmaskedValue, opts);\n }\n return unmaskedValue;\n }\n function translatePosition(pos) {\n return !isRTL || \"number\" != typeof pos || opts.greedy && \"\" === opts.placeholder || !el || (pos = el.inputmask._valueGet().length - pos), \n pos;\n }\n function caret(input, begin, end, notranslate, isDelete) {\n var range;\n if (void 0 === begin) return \"selectionStart\" in input && \"selectionEnd\" in input ? (begin = input.selectionStart, \n end = input.selectionEnd) : window.getSelection ? (range = window.getSelection().getRangeAt(0), \n range.commonAncestorContainer.parentNode !== input && range.commonAncestorContainer !== input || (begin = range.startOffset, \n end = range.endOffset)) : document.selection && document.selection.createRange && (range = document.selection.createRange(), \n begin = 0 - range.duplicate().moveStart(\"character\", -input.inputmask._valueGet().length), \n end = begin + range.text.length), {\n begin: notranslate ? begin : translatePosition(begin),\n end: notranslate ? end : translatePosition(end)\n };\n if ($.isArray(begin) && (end = isRTL ? begin[0] : begin[1], begin = isRTL ? begin[1] : begin[0]), \n void 0 !== begin.begin && (end = isRTL ? begin.begin : begin.end, begin = isRTL ? begin.end : begin.begin), \n \"number\" == typeof begin) {\n begin = notranslate ? begin : translatePosition(begin), end = notranslate ? end : translatePosition(end), \n end = \"number\" == typeof end ? end : begin;\n var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end;\n if (input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0, input.inputmask.caretPos = {\n begin: begin,\n end: end\n }, opts.insertModeVisual && !1 === opts.insertMode && begin === end && (isDelete || end++), \n input === (input.inputmask.shadowRoot || document).activeElement) if (\"setSelectionRange\" in input) input.setSelectionRange(begin, end); else if (window.getSelection) {\n if (range = document.createRange(), void 0 === input.firstChild || null === input.firstChild) {\n var textNode = document.createTextNode(\"\");\n input.appendChild(textNode);\n }\n range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length), \n range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length), \n range.collapse(!0);\n var sel = window.getSelection();\n sel.removeAllRanges(), sel.addRange(range);\n } else input.createTextRange && (range = input.createTextRange(), range.collapse(!0), \n range.moveEnd(\"character\", end), range.moveStart(\"character\", begin), range.select());\n }\n }\n function determineLastRequiredPosition(returnDefinition) {\n var buffer = getMaskTemplate(!0, getLastValidPosition(), !0, !0), bl = buffer.length, pos, lvp = getLastValidPosition(), positions = {}, lvTest = maskset.validPositions[lvp], ndxIntlzr = void 0 !== lvTest ? lvTest.locator.slice() : void 0, testPos;\n for (pos = lvp + 1; pos < buffer.length; pos++) testPos = getTestTemplate(pos, ndxIntlzr, pos - 1), \n ndxIntlzr = testPos.locator.slice(), positions[pos] = $.extend(!0, {}, testPos);\n var lvTestAlt = lvTest && void 0 !== lvTest.alternation ? lvTest.locator[lvTest.alternation] : void 0;\n for (pos = bl - 1; lvp < pos && (testPos = positions[pos], (testPos.match.optionality || testPos.match.optionalQuantifier && testPos.match.newBlockMarker || lvTestAlt && (lvTestAlt !== positions[pos].locator[lvTest.alternation] && 1 != testPos.match.static || !0 === testPos.match.static && testPos.locator[lvTest.alternation] && checkAlternationMatch(testPos.locator[lvTest.alternation].toString().split(\",\"), lvTestAlt.toString().split(\",\")) && \"\" !== getTests(pos)[0].def)) && buffer[pos] === getPlaceholder(pos, testPos.match)); pos--) bl--;\n return returnDefinition ? {\n l: bl,\n def: positions[bl] ? positions[bl].match : void 0\n } : bl;\n }\n function clearOptionalTail(buffer) {\n buffer.length = 0;\n for (var template = getMaskTemplate(!0, 0, !0, void 0, !0), lmnt; void 0 !== (lmnt = template.shift()); ) buffer.push(lmnt);\n return buffer;\n }\n function isComplete(buffer) {\n if ($.isFunction(opts.isComplete)) return opts.isComplete(buffer, opts);\n if (\"*\" !== opts.repeat) {\n var complete = !1, lrp = determineLastRequiredPosition(!0), aml = seekPrevious(lrp.l);\n if (void 0 === lrp.def || lrp.def.newBlockMarker || lrp.def.optionality || lrp.def.optionalQuantifier) {\n complete = !0;\n for (var i = 0; i <= aml; i++) {\n var test = getTestTemplate(i).match;\n if (!0 !== test.static && void 0 === maskset.validPositions[i] && !0 !== test.optionality && !0 !== test.optionalQuantifier || !0 === test.static && buffer[i] !== getPlaceholder(i, test)) {\n complete = !1;\n break;\n }\n }\n }\n return complete;\n }\n }\n function handleRemove(input, k, pos, strict, fromIsValid) {\n if ((opts.numericInput || isRTL) && (k === keyCode.BACKSPACE ? k = keyCode.DELETE : k === keyCode.DELETE && (k = keyCode.BACKSPACE), \n isRTL)) {\n var pend = pos.end;\n pos.end = pos.begin, pos.begin = pend;\n }\n var lvp = getLastValidPosition(void 0, !0), offset;\n if (pos.end >= getBuffer().length && lvp >= pos.end && (pos.end = lvp + 1), k === keyCode.BACKSPACE ? pos.end - pos.begin < 1 && (pos.begin = seekPrevious(pos.begin)) : k === keyCode.DELETE && pos.begin === pos.end && (pos.end = isMask(pos.end, !0, !0) ? pos.end + 1 : seekNext(pos.end) + 1), \n !1 !== (offset = revalidateMask(pos))) {\n if (!0 !== strict && !1 !== opts.keepStatic || null !== opts.regex && -1 !== getTest(pos.begin).match.def.indexOf(\"|\")) {\n var result = alternate(!0);\n if (result) {\n var newPos = void 0 !== result.caret ? result.caret : result.pos ? seekNext(result.pos.begin ? result.pos.begin : result.pos) : getLastValidPosition(-1, !0);\n (k !== keyCode.DELETE || pos.begin > newPos) && pos.begin;\n }\n }\n !0 !== strict && (maskset.p = k === keyCode.DELETE ? pos.begin + offset : pos.begin);\n }\n }\n function applyInputValue(input, value) {\n input.inputmask.refreshValue = !1, $.isFunction(opts.onBeforeMask) && (value = opts.onBeforeMask.call(inputmask, value, opts) || value), \n value = value.toString().split(\"\"), checkVal(input, !0, !1, value), undoValue = getBuffer().join(\"\"), \n (opts.clearMaskOnLostFocus || opts.clearIncomplete) && input.inputmask._valueGet() === getBufferTemplate().join(\"\") && -1 === getLastValidPosition() && input.inputmask._valueSet(\"\");\n }\n function mask(elem) {\n function isElementTypeSupported(input, opts) {\n function patchValueProperty(npt) {\n var valueGet, valueSet;\n function patchValhook(type) {\n if ($.valHooks && (void 0 === $.valHooks[type] || !0 !== $.valHooks[type].inputmaskpatch)) {\n var valhookGet = $.valHooks[type] && $.valHooks[type].get ? $.valHooks[type].get : function(elem) {\n return elem.value;\n }, valhookSet = $.valHooks[type] && $.valHooks[type].set ? $.valHooks[type].set : function(elem, value) {\n return elem.value = value, elem;\n };\n $.valHooks[type] = {\n get: function get(elem) {\n if (elem.inputmask) {\n if (elem.inputmask.opts.autoUnmask) return elem.inputmask.unmaskedvalue();\n var result = valhookGet(elem);\n return -1 !== getLastValidPosition(void 0, void 0, elem.inputmask.maskset.validPositions) || !0 !== opts.nullable ? result : \"\";\n }\n return valhookGet(elem);\n },\n set: function set(elem, value) {\n var result = valhookSet(elem, value);\n return elem.inputmask && applyInputValue(elem, value), result;\n },\n inputmaskpatch: !0\n };\n }\n }\n function getter() {\n return this.inputmask ? this.inputmask.opts.autoUnmask ? this.inputmask.unmaskedvalue() : -1 !== getLastValidPosition() || !0 !== opts.nullable ? (this.inputmask.shadowRoot || document.activeElement) === this && opts.clearMaskOnLostFocus ? (isRTL ? clearOptionalTail(getBuffer().slice()).reverse() : clearOptionalTail(getBuffer().slice())).join(\"\") : valueGet.call(this) : \"\" : valueGet.call(this);\n }\n function setter(value) {\n valueSet.call(this, value), this.inputmask && applyInputValue(this, value);\n }\n function installNativeValueSetFallback(npt) {\n EventRuler.on(npt, \"mouseenter\", function() {\n var input = this, value = this.inputmask._valueGet(!0);\n value !== (isRTL ? getBuffer().reverse() : getBuffer()).join(\"\") && applyInputValue(this, value);\n });\n }\n if (!npt.inputmask.__valueGet) {\n if (!0 !== opts.noValuePatching) {\n if (Object.getOwnPropertyDescriptor) {\n \"function\" != typeof Object.getPrototypeOf && (Object.getPrototypeOf = \"object\" === _typeof(\"test\".__proto__) ? function(object) {\n return object.__proto__;\n } : function(object) {\n return object.constructor.prototype;\n });\n var valueProperty = Object.getPrototypeOf ? Object.getOwnPropertyDescriptor(Object.getPrototypeOf(npt), \"value\") : void 0;\n valueProperty && valueProperty.get && valueProperty.set ? (valueGet = valueProperty.get, \n valueSet = valueProperty.set, Object.defineProperty(npt, \"value\", {\n get: getter,\n set: setter,\n configurable: !0\n })) : \"input\" !== npt.tagName.toLowerCase() && (valueGet = function valueGet() {\n return this.textContent;\n }, valueSet = function valueSet(value) {\n this.textContent = value;\n }, Object.defineProperty(npt, \"value\", {\n get: getter,\n set: setter,\n configurable: !0\n }));\n } else document.__lookupGetter__ && npt.__lookupGetter__(\"value\") && (valueGet = npt.__lookupGetter__(\"value\"), \n valueSet = npt.__lookupSetter__(\"value\"), npt.__defineGetter__(\"value\", getter), \n npt.__defineSetter__(\"value\", setter));\n npt.inputmask.__valueGet = valueGet, npt.inputmask.__valueSet = valueSet;\n }\n npt.inputmask._valueGet = function(overruleRTL) {\n return isRTL && !0 !== overruleRTL ? valueGet.call(this.el).split(\"\").reverse().join(\"\") : valueGet.call(this.el);\n }, npt.inputmask._valueSet = function(value, overruleRTL) {\n valueSet.call(this.el, null == value ? \"\" : !0 !== overruleRTL && isRTL ? value.split(\"\").reverse().join(\"\") : value);\n }, void 0 === valueGet && (valueGet = function valueGet() {\n return this.value;\n }, valueSet = function valueSet(value) {\n this.value = value;\n }, patchValhook(npt.type), installNativeValueSetFallback(npt));\n }\n }\n \"textarea\" !== input.tagName.toLowerCase() && opts.ignorables.push(keyCode.ENTER);\n var elementType = input.getAttribute(\"type\"), isSupported = \"input\" === input.tagName.toLowerCase() && -1 !== $.inArray(elementType, opts.supportsInputType) || input.isContentEditable || \"textarea\" === input.tagName.toLowerCase();\n if (!isSupported) if (\"input\" === input.tagName.toLowerCase()) {\n var el = document.createElement(\"input\");\n el.setAttribute(\"type\", elementType), isSupported = \"text\" === el.type, el = null;\n } else isSupported = \"partial\";\n return !1 !== isSupported ? patchValueProperty(input) : input.inputmask = void 0, \n isSupported;\n }\n EventRuler.off(elem);\n var isSupported = isElementTypeSupported(elem, opts);\n if (!1 !== isSupported) {\n el = elem, $el = $(el), originalPlaceholder = el.placeholder, maxLength = void 0 !== el ? el.maxLength : void 0, \n -1 === maxLength && (maxLength = void 0), \"inputMode\" in el && null === el.getAttribute(\"inputmode\") && (el.inputMode = opts.inputmode, \n el.setAttribute(\"inputmode\", opts.inputmode)), !0 === isSupported && (opts.showMaskOnFocus = opts.showMaskOnFocus && -1 === [ \"cc-number\", \"cc-exp\" ].indexOf(el.autocomplete), \n iphone && (opts.insertModeVisual = !1), EventRuler.on(el, \"submit\", EventHandlers.submitEvent), \n EventRuler.on(el, \"reset\", EventHandlers.resetEvent), EventRuler.on(el, \"blur\", EventHandlers.blurEvent), \n EventRuler.on(el, \"focus\", EventHandlers.focusEvent), EventRuler.on(el, \"invalid\", EventHandlers.invalidEvent), \n EventRuler.on(el, \"click\", EventHandlers.clickEvent), EventRuler.on(el, \"mouseleave\", EventHandlers.mouseleaveEvent), \n EventRuler.on(el, \"mouseenter\", EventHandlers.mouseenterEvent), EventRuler.on(el, \"paste\", EventHandlers.pasteEvent), \n EventRuler.on(el, \"cut\", EventHandlers.cutEvent), EventRuler.on(el, \"complete\", opts.oncomplete), \n EventRuler.on(el, \"incomplete\", opts.onincomplete), EventRuler.on(el, \"cleared\", opts.oncleared), \n mobile || !0 === opts.inputEventOnly ? el.removeAttribute(\"maxLength\") : (EventRuler.on(el, \"keydown\", EventHandlers.keydownEvent), \n EventRuler.on(el, \"keypress\", EventHandlers.keypressEvent)), EventRuler.on(el, \"input\", EventHandlers.inputFallBackEvent), \n EventRuler.on(el, \"compositionend\", EventHandlers.compositionendEvent)), EventRuler.on(el, \"setvalue\", EventHandlers.setValueEvent), \n undoValue = getBufferTemplate().join(\"\");\n var activeElement = (el.inputmask.shadowRoot || document).activeElement;\n if (\"\" !== el.inputmask._valueGet(!0) || !1 === opts.clearMaskOnLostFocus || activeElement === el) {\n applyInputValue(el, el.inputmask._valueGet(!0), opts);\n var buffer = getBuffer().slice();\n !1 === isComplete(buffer) && opts.clearIncomplete && resetMaskSet(), opts.clearMaskOnLostFocus && activeElement !== el && (-1 === getLastValidPosition() ? buffer = [] : clearOptionalTail(buffer)), \n (!1 === opts.clearMaskOnLostFocus || opts.showMaskOnFocus && activeElement === el || \"\" !== el.inputmask._valueGet(!0)) && writeBuffer(el, buffer), \n activeElement === el && caret(el, seekNext(getLastValidPosition()));\n }\n }\n }\n if (void 0 !== actionObj) switch (actionObj.action) {\n case \"isComplete\":\n return el = actionObj.el, isComplete(getBuffer());\n\n case \"unmaskedvalue\":\n return void 0 !== el && void 0 === actionObj.value || (valueBuffer = actionObj.value, \n valueBuffer = ($.isFunction(opts.onBeforeMask) && opts.onBeforeMask.call(inputmask, valueBuffer, opts) || valueBuffer).split(\"\"), \n checkVal.call(this, void 0, !1, !1, valueBuffer), $.isFunction(opts.onBeforeWrite) && opts.onBeforeWrite.call(inputmask, void 0, getBuffer(), 0, opts)), \n unmaskedvalue(el);\n\n case \"mask\":\n mask(el);\n break;\n\n case \"format\":\n return valueBuffer = ($.isFunction(opts.onBeforeMask) && opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value).split(\"\"), \n checkVal.call(this, void 0, !0, !1, valueBuffer), actionObj.metadata ? {\n value: isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"),\n metadata: maskScope.call(this, {\n action: \"getmetadata\"\n }, maskset, opts)\n } : isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n\n case \"isValid\":\n actionObj.value ? (valueBuffer = ($.isFunction(opts.onBeforeMask) && opts.onBeforeMask.call(inputmask, actionObj.value, opts) || actionObj.value).split(\"\"), \n checkVal.call(this, void 0, !0, !1, valueBuffer)) : actionObj.value = isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\");\n for (var buffer = getBuffer(), rl = determineLastRequiredPosition(), lmib = buffer.length - 1; rl < lmib && !isMask(lmib); lmib--) ;\n return buffer.splice(rl, lmib + 1 - rl), isComplete(buffer) && actionObj.value === (isRTL ? getBuffer().slice().reverse().join(\"\") : getBuffer().join(\"\"));\n\n case \"getemptymask\":\n return getBufferTemplate().join(\"\");\n\n case \"remove\":\n if (el && el.inputmask) {\n $.data(el, \"_inputmask_opts\", null), $el = $(el);\n var cv = opts.autoUnmask ? unmaskedvalue(el) : el.inputmask._valueGet(opts.autoUnmask), valueProperty;\n cv !== getBufferTemplate().join(\"\") ? el.inputmask._valueSet(cv, opts.autoUnmask) : el.inputmask._valueSet(\"\"), \n EventRuler.off(el), Object.getOwnPropertyDescriptor && Object.getPrototypeOf ? (valueProperty = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(el), \"value\"), \n valueProperty && el.inputmask.__valueGet && Object.defineProperty(el, \"value\", {\n get: el.inputmask.__valueGet,\n set: el.inputmask.__valueSet,\n configurable: !0\n })) : document.__lookupGetter__ && el.__lookupGetter__(\"value\") && el.inputmask.__valueGet && (el.__defineGetter__(\"value\", el.inputmask.__valueGet), \n el.__defineSetter__(\"value\", el.inputmask.__valueSet)), el.inputmask = void 0;\n }\n return el;\n\n case \"getmetadata\":\n if ($.isArray(maskset.metadata)) {\n var maskTarget = getMaskTemplate(!0, 0, !1).join(\"\");\n return $.each(maskset.metadata, function(ndx, mtdt) {\n if (mtdt.mask === maskTarget) return maskTarget = mtdt, !1;\n }), maskTarget;\n }\n return maskset.metadata;\n }\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n var Inputmask = __webpack_require__(1), $ = Inputmask.dependencyLib, keyCode = __webpack_require__(0), formatCode = {\n d: [ \"[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", Date.prototype.getDate ],\n dd: [ \"0[1-9]|[12][0-9]|3[01]\", Date.prototype.setDate, \"day\", function() {\n return pad(Date.prototype.getDate.call(this), 2);\n } ],\n ddd: [ \"\" ],\n dddd: [ \"\" ],\n m: [ \"[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n return Date.prototype.getMonth.call(this) + 1;\n } ],\n mm: [ \"0[1-9]|1[012]\", Date.prototype.setMonth, \"month\", function() {\n return pad(Date.prototype.getMonth.call(this) + 1, 2);\n } ],\n mmm: [ \"\" ],\n mmmm: [ \"\" ],\n yy: [ \"[0-9]{2}\", Date.prototype.setFullYear, \"year\", function() {\n return pad(Date.prototype.getFullYear.call(this), 2);\n } ],\n yyyy: [ \"[0-9]{4}\", Date.prototype.setFullYear, \"year\", function() {\n return pad(Date.prototype.getFullYear.call(this), 4);\n } ],\n h: [ \"[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n hh: [ \"0[1-9]|1[0-2]\", Date.prototype.setHours, \"hours\", function() {\n return pad(Date.prototype.getHours.call(this), 2);\n } ],\n hx: [ function(x) {\n return \"[0-9]{\".concat(x, \"}\");\n }, Date.prototype.setHours, \"hours\", function(x) {\n return Date.prototype.getHours;\n } ],\n H: [ \"1?[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", Date.prototype.getHours ],\n HH: [ \"0[0-9]|1[0-9]|2[0-3]\", Date.prototype.setHours, \"hours\", function() {\n return pad(Date.prototype.getHours.call(this), 2);\n } ],\n Hx: [ function(x) {\n return \"[0-9]{\".concat(x, \"}\");\n }, Date.prototype.setHours, \"hours\", function(x) {\n return function() {\n return pad(Date.prototype.getHours.call(this), x);\n };\n } ],\n M: [ \"[1-5]?[0-9]\", Date.prototype.setMinutes, \"minutes\", Date.prototype.getMinutes ],\n MM: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setMinutes, \"minutes\", function() {\n return pad(Date.prototype.getMinutes.call(this), 2);\n } ],\n s: [ \"[1-5]?[0-9]\", Date.prototype.setSeconds, \"seconds\", Date.prototype.getSeconds ],\n ss: [ \"0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]\", Date.prototype.setSeconds, \"seconds\", function() {\n return pad(Date.prototype.getSeconds.call(this), 2);\n } ],\n l: [ \"[0-9]{3}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return pad(Date.prototype.getMilliseconds.call(this), 3);\n } ],\n L: [ \"[0-9]{2}\", Date.prototype.setMilliseconds, \"milliseconds\", function() {\n return pad(Date.prototype.getMilliseconds.call(this), 2);\n } ],\n t: [ \"[ap]\" ],\n tt: [ \"[ap]m\" ],\n T: [ \"[AP]\" ],\n TT: [ \"[AP]M\" ],\n Z: [ \"\" ],\n o: [ \"\" ],\n S: [ \"\" ]\n }, formatAlias = {\n isoDate: \"yyyy-mm-dd\",\n isoTime: \"HH:MM:ss\",\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\"\n };\n function formatcode(match) {\n var dynMatches = new RegExp(\"\\\\d+$\").exec(match[0]);\n if (dynMatches && void 0 !== dynMatches[0]) {\n var fcode = formatCode[match[0][0] + \"x\"].slice(\"\");\n return fcode[0] = fcode[0](dynMatches[0]), fcode[3] = fcode[3](dynMatches[0]), fcode;\n }\n if (formatCode[match[0]]) return formatCode[match[0]];\n }\n function getTokenizer(opts) {\n if (!opts.tokenizer) {\n var tokens = [], dyntokens = [];\n for (var ndx in formatCode) if (/\\.*x$/.test(ndx)) {\n var dynToken = ndx[0] + \"\\\\d+\";\n -1 === dyntokens.indexOf(dynToken) && dyntokens.push(dynToken);\n } else -1 === tokens.indexOf(ndx[0]) && tokens.push(ndx[0]);\n opts.tokenizer = \"(\" + (0 < dyntokens.length ? dyntokens.join(\"|\") + \"|\" : \"\") + tokens.join(\"+|\") + \")+?|.\", \n opts.tokenizer = new RegExp(opts.tokenizer, \"g\");\n }\n return opts.tokenizer;\n }\n function isValidDate(dateParts, currentResult) {\n return (!isFinite(dateParts.rawday) || \"29\" == dateParts.day && !isFinite(dateParts.rawyear) || new Date(dateParts.date.getFullYear(), isFinite(dateParts.rawmonth) ? dateParts.month : dateParts.date.getMonth() + 1, 0).getDate() >= dateParts.day) && currentResult;\n }\n function isDateInRange(dateParts, opts) {\n var result = !0;\n if (opts.min) {\n if (dateParts.rawyear) {\n var rawYear = dateParts.rawyear.replace(/[^0-9]/g, \"\"), minYear = opts.min.year.substr(0, rawYear.length);\n result = minYear <= rawYear;\n }\n dateParts.year === dateParts.rawyear && opts.min.date.getTime() == opts.min.date.getTime() && (result = opts.min.date.getTime() <= dateParts.date.getTime());\n }\n return result && opts.max && opts.max.date.getTime() == opts.max.date.getTime() && (result = opts.max.date.getTime() >= dateParts.date.getTime()), \n result;\n }\n function parse(format, dateObjValue, opts, raw) {\n var mask = \"\", match, fcode;\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(format); ) if (void 0 === dateObjValue) if (fcode = formatcode(match)) mask += \"(\" + fcode[0] + \")\"; else switch (match[0]) {\n case \"[\":\n mask += \"(\";\n break;\n\n case \"]\":\n mask += \")?\";\n break;\n\n default:\n mask += Inputmask.escapeRegex(match[0]);\n } else if (fcode = formatcode(match)) if (!0 !== raw && fcode[3]) {\n var getFn = fcode[3];\n mask += getFn.call(dateObjValue.date);\n } else fcode[2] ? mask += dateObjValue[\"raw\" + fcode[2]] : mask += match[0]; else mask += match[0];\n return mask;\n }\n function pad(val, len) {\n for (val = String(val), len = len || 2; val.length < len; ) val = \"0\" + val;\n return val;\n }\n function analyseMask(maskString, format, opts) {\n var dateObj = {\n date: new Date(1, 0, 1)\n }, targetProp, mask = maskString, match, dateOperation;\n function extendProperty(value) {\n var correctedValue = value.replace(/[^0-9]/g, \"0\");\n return correctedValue;\n }\n function setValue(dateObj, value, opts) {\n dateObj[targetProp] = extendProperty(value), dateObj[\"raw\" + targetProp] = value, \n void 0 !== dateOperation && dateOperation.call(dateObj.date, \"month\" == targetProp ? parseInt(dateObj[targetProp]) - 1 : dateObj[targetProp]);\n }\n if (\"string\" == typeof mask) {\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(format); ) {\n var value = mask.slice(0, match[0].length);\n formatCode.hasOwnProperty(match[0]) && (targetProp = formatCode[match[0]][2], dateOperation = formatCode[match[0]][1], \n setValue(dateObj, value, opts)), mask = mask.slice(value.length);\n }\n return dateObj;\n }\n if (mask && \"object\" === _typeof(mask) && mask.hasOwnProperty(\"date\")) return mask;\n }\n function importDate(dateObj, opts) {\n var match, date = \"\";\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(opts.inputFormat); ) \"d\" === match[0].charAt(0) ? date += pad(dateObj.getDate(), match[0].length) : \"m\" === match[0].charAt(0) ? date += pad(dateObj.getMonth() + 1, match[0].length) : \"yyyy\" === match[0] ? date += dateObj.getFullYear().toString() : \"y\" === match[0].charAt(0) && (date += pad(dateObj.getYear(), match[0].length));\n return date;\n }\n function getTokenMatch(pos, opts) {\n var calcPos = 0, targetMatch, match, matchLength = 0;\n for (getTokenizer(opts).lastIndex = 0; match = getTokenizer(opts).exec(opts.inputFormat); ) {\n var dynMatches = new RegExp(\"\\\\d+$\").exec(match[0]);\n if (matchLength = dynMatches ? parseInt(dynMatches[0]) : match[0].length, calcPos += matchLength, \n pos <= calcPos) {\n targetMatch = match, match = getTokenizer(opts).exec(opts.inputFormat);\n break;\n }\n }\n return {\n targetMatchIndex: calcPos - matchLength,\n nextMatch: match,\n targetMatch: targetMatch\n };\n }\n Inputmask.extendAliases({\n datetime: {\n mask: function mask(opts) {\n return opts.numericInput = !1, formatCode.S = opts.i18n.ordinalSuffix.join(\"|\"), \n opts.inputFormat = formatAlias[opts.inputFormat] || opts.inputFormat, opts.displayFormat = formatAlias[opts.displayFormat] || opts.displayFormat || opts.inputFormat, \n opts.outputFormat = formatAlias[opts.outputFormat] || opts.outputFormat || opts.inputFormat, \n opts.placeholder = \"\" !== opts.placeholder ? opts.placeholder : opts.inputFormat.replace(/[[\\]]/, \"\"), \n opts.regex = parse(opts.inputFormat, void 0, opts), opts.min = analyseMask(opts.min, opts.inputFormat, opts), \n opts.max = analyseMask(opts.max, opts.inputFormat, opts), null;\n },\n placeholder: \"\",\n inputFormat: \"isoDateTime\",\n displayFormat: void 0,\n outputFormat: void 0,\n min: null,\n max: null,\n skipOptionalPartCharacter: \"\",\n i18n: {\n dayNames: [ \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\", \"Sunday\" ],\n monthNames: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ],\n ordinalSuffix: [ \"st\", \"nd\", \"rd\", \"th\" ]\n },\n preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset, caretPos, strict) {\n if (strict) return !0;\n if (isNaN(c) && buffer[pos] !== c) {\n var tokenMatch = getTokenMatch(pos, opts);\n if (tokenMatch.nextMatch && tokenMatch.nextMatch[0] === c && 1 < tokenMatch.targetMatch[0].length) {\n var validator = formatCode[tokenMatch.targetMatch[0]][0];\n if (new RegExp(validator).test(\"0\" + buffer[pos - 1])) return buffer[pos] = buffer[pos - 1], \n buffer[pos - 1] = \"0\", {\n fuzzy: !0,\n buffer: buffer,\n refreshFromBuffer: {\n start: pos - 1,\n end: pos + 1\n },\n pos: pos + 1\n };\n }\n }\n return !0;\n },\n postValidation: function postValidation(buffer, pos, c, currentResult, opts, maskset, strict) {\n if (strict) return !0;\n var tokenMatch, validator;\n if (!1 === currentResult) return tokenMatch = getTokenMatch(pos + 1, opts), tokenMatch.targetMatch && tokenMatch.targetMatchIndex === pos && 1 < tokenMatch.targetMatch[0].length && void 0 !== formatCode[tokenMatch.targetMatch[0]] && (validator = formatCode[tokenMatch.targetMatch[0]][0], \n new RegExp(validator).test(\"0\" + c)) ? {\n insert: [ {\n pos: pos,\n c: \"0\"\n }, {\n pos: pos + 1,\n c: c\n } ],\n pos: pos + 1\n } : currentResult;\n if (currentResult.fuzzy && (buffer = currentResult.buffer, pos = currentResult.pos), \n tokenMatch = getTokenMatch(pos, opts), tokenMatch.targetMatch && tokenMatch.targetMatch[0] && void 0 !== formatCode[tokenMatch.targetMatch[0]]) {\n validator = formatCode[tokenMatch.targetMatch[0]][0];\n var part = buffer.slice(tokenMatch.targetMatchIndex, tokenMatch.targetMatchIndex + tokenMatch.targetMatch[0].length);\n !1 === new RegExp(validator).test(part.join(\"\")) && 2 === tokenMatch.targetMatch[0].length && maskset.validPositions[tokenMatch.targetMatchIndex] && maskset.validPositions[tokenMatch.targetMatchIndex + 1] && (maskset.validPositions[tokenMatch.targetMatchIndex + 1].input = \"0\");\n }\n var result = currentResult, dateParts = analyseMask(buffer.join(\"\"), opts.inputFormat, opts);\n return result && dateParts.date.getTime() == dateParts.date.getTime() && (result = isValidDate(dateParts, result), \n result = result && isDateInRange(dateParts, opts)), pos && result && currentResult.pos !== pos ? {\n buffer: parse(opts.inputFormat, dateParts, opts).split(\"\"),\n refreshFromBuffer: {\n start: pos,\n end: currentResult.pos\n }\n } : result;\n },\n onKeyDown: function onKeyDown(e, buffer, caretPos, opts) {\n var input = this;\n e.ctrlKey && e.keyCode === keyCode.RIGHT && (this.inputmask._valueSet(importDate(new Date(), opts)), \n $(this).trigger(\"setvalue\"));\n },\n onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) {\n return unmaskedValue ? parse(opts.outputFormat, analyseMask(maskedValue, opts.inputFormat, opts), opts, !0) : unmaskedValue;\n },\n casing: function casing(elem, test, pos, validPositions) {\n return 0 == test.nativeDef.indexOf(\"[ap]\") ? elem.toLowerCase() : 0 == test.nativeDef.indexOf(\"[AP]\") ? elem.toUpperCase() : elem;\n },\n onBeforeMask: function onBeforeMask(initialValue, opts) {\n return \"[object Date]\" === Object.prototype.toString.call(initialValue) && (initialValue = importDate(initialValue, opts)), \n initialValue;\n },\n insertMode: !1,\n shiftPositions: !1,\n keepStatic: !1,\n inputmode: \"numeric\"\n }\n }), module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var Inputmask = __webpack_require__(1), $ = Inputmask.dependencyLib, keyCode = __webpack_require__(0);\n function autoEscape(txt, opts) {\n for (var escapedTxt = \"\", i = 0; i < txt.length; i++) Inputmask.prototype.definitions[txt.charAt(i)] || opts.definitions[txt.charAt(i)] || opts.optionalmarker[0] === txt.charAt(i) || opts.optionalmarker[1] === txt.charAt(i) || opts.quantifiermarker[0] === txt.charAt(i) || opts.quantifiermarker[1] === txt.charAt(i) || opts.groupmarker[0] === txt.charAt(i) || opts.groupmarker[1] === txt.charAt(i) || opts.alternatormarker === txt.charAt(i) ? escapedTxt += \"\\\\\" + txt.charAt(i) : escapedTxt += txt.charAt(i);\n return escapedTxt;\n }\n function alignDigits(buffer, digits, opts, force) {\n if (0 < buffer.length && 0 < digits && (!opts.digitsOptional || force)) {\n var radixPosition = $.inArray(opts.radixPoint, buffer);\n -1 === radixPosition && (buffer.push(opts.radixPoint), radixPosition = buffer.length - 1);\n for (var i = 1; i <= digits; i++) isFinite(buffer[radixPosition + i]) || (buffer[radixPosition + i] = \"0\");\n }\n return buffer;\n }\n function findValidator(symbol, maskset) {\n var posNdx = 0;\n if (\"+\" === symbol) {\n for (posNdx in maskset.validPositions) ;\n posNdx = parseInt(posNdx);\n }\n for (var tstNdx in maskset.tests) if (tstNdx = parseInt(tstNdx), posNdx <= tstNdx) for (var ndx = 0, ndxl = maskset.tests[tstNdx].length; ndx < ndxl; ndx++) if ((void 0 === maskset.validPositions[tstNdx] || \"-\" === symbol) && maskset.tests[tstNdx][ndx].match.def === symbol) return tstNdx + (void 0 !== maskset.validPositions[tstNdx] && \"-\" !== symbol ? 1 : 0);\n return posNdx;\n }\n function findValid(symbol, maskset) {\n var ret = -1;\n return $.each(maskset.validPositions, function(ndx, tst) {\n if (tst && tst.match.def === symbol) return ret = parseInt(ndx), !1;\n }), ret;\n }\n function parseMinMaxOptions(opts) {\n void 0 === opts.parseMinMaxOptions && (null !== opts.min && (opts.min = opts.min.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n \",\" === opts.radixPoint && (opts.min = opts.min.replace(opts.radixPoint, \".\")), \n opts.min = isFinite(opts.min) ? parseFloat(opts.min) : NaN, isNaN(opts.min) && (opts.min = Number.MIN_VALUE)), \n null !== opts.max && (opts.max = opts.max.toString().replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n \",\" === opts.radixPoint && (opts.max = opts.max.replace(opts.radixPoint, \".\")), \n opts.max = isFinite(opts.max) ? parseFloat(opts.max) : NaN, isNaN(opts.max) && (opts.max = Number.MAX_VALUE)), \n opts.parseMinMaxOptions = \"done\");\n }\n function genMask(opts) {\n opts.repeat = 0, opts.groupSeparator === opts.radixPoint && opts.digits && \"0\" !== opts.digits && (\".\" === opts.radixPoint ? opts.groupSeparator = \",\" : \",\" === opts.radixPoint ? opts.groupSeparator = \".\" : opts.groupSeparator = \"\"), \n \" \" === opts.groupSeparator && (opts.skipOptionalPartCharacter = void 0), 1 < opts.placeholder.length && (opts.placeholder = opts.placeholder.charAt(0)), \n \"radixFocus\" === opts.positionCaretOnClick && \"\" === opts.placeholder && (opts.positionCaretOnClick = \"lvp\");\n var decimalDef = \"0\", radixPointDef = opts.radixPoint;\n !0 === opts.numericInput && void 0 === opts.__financeInput ? (decimalDef = \"1\", \n opts.positionCaretOnClick = \"radixFocus\" === opts.positionCaretOnClick ? \"lvp\" : opts.positionCaretOnClick, \n opts.digitsOptional = !1, isNaN(opts.digits) && (opts.digits = 2), opts._radixDance = !1, \n radixPointDef = \",\" === opts.radixPoint ? \"?\" : \"!\", \"\" !== opts.radixPoint && void 0 === opts.definitions[radixPointDef] && (opts.definitions[radixPointDef] = {}, \n opts.definitions[radixPointDef].validator = \"[\" + opts.radixPoint + \"]\", opts.definitions[radixPointDef].placeholder = opts.radixPoint, \n opts.definitions[radixPointDef].static = !0, opts.definitions[radixPointDef].generated = !0)) : (opts.__financeInput = !1, \n opts.numericInput = !0);\n var mask = \"[+]\", altMask;\n if (mask += autoEscape(opts.prefix, opts), \"\" !== opts.groupSeparator ? (void 0 === opts.definitions[opts.groupSeparator] && (opts.definitions[opts.groupSeparator] = {}, \n opts.definitions[opts.groupSeparator].validator = \"[\" + opts.groupSeparator + \"]\", \n opts.definitions[opts.groupSeparator].placeholder = opts.groupSeparator, opts.definitions[opts.groupSeparator].static = !0, \n opts.definitions[opts.groupSeparator].generated = !0), mask += opts._mask(opts)) : mask += \"9{+}\", \n void 0 !== opts.digits && 0 !== opts.digits) {\n var dq = opts.digits.toString().split(\",\");\n isFinite(dq[0]) && dq[1] && isFinite(dq[1]) ? mask += radixPointDef + decimalDef + \"{\" + opts.digits + \"}\" : (isNaN(opts.digits) || 0 < parseInt(opts.digits)) && (opts.digitsOptional ? (altMask = mask + radixPointDef + decimalDef + \"{0,\" + opts.digits + \"}\", \n opts.keepStatic = !0) : mask += radixPointDef + decimalDef + \"{\" + opts.digits + \"}\");\n }\n return mask += autoEscape(opts.suffix, opts), mask += \"[-]\", altMask && (mask = [ altMask + autoEscape(opts.suffix, opts) + \"[-]\", mask ]), \n opts.greedy = !1, parseMinMaxOptions(opts), mask;\n }\n function hanndleRadixDance(pos, c, radixPos, maskset, opts) {\n return opts._radixDance && opts.numericInput && c !== opts.negationSymbol.back && pos <= radixPos && (0 < radixPos || c == opts.radixPoint) && (void 0 === maskset.validPositions[pos - 1] || maskset.validPositions[pos - 1].input !== opts.negationSymbol.back) && (pos -= 1), \n pos;\n }\n function decimalValidator(chrs, maskset, pos, strict, opts) {\n var radixPos = maskset.buffer ? maskset.buffer.indexOf(opts.radixPoint) : -1, result = -1 !== radixPos && new RegExp(\"[0-9\\uff11-\\uff19]\").test(chrs);\n return opts._radixDance && result && null == maskset.validPositions[radixPos] ? {\n insert: {\n pos: radixPos === pos ? radixPos + 1 : radixPos,\n c: opts.radixPoint\n },\n pos: pos\n } : result;\n }\n function checkForLeadingZeroes(buffer, opts) {\n var numberMatches = new RegExp(\"(^\" + (\"\" !== opts.negationSymbol.front ? Inputmask.escapeRegex(opts.negationSymbol.front) + \"?\" : \"\") + Inputmask.escapeRegex(opts.prefix) + \")(.*)(\" + Inputmask.escapeRegex(opts.suffix) + (\"\" != opts.negationSymbol.back ? Inputmask.escapeRegex(opts.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(buffer.slice().reverse().join(\"\")), number = numberMatches ? numberMatches[2] : \"\", leadingzeroes = !1;\n return number && (number = number.split(opts.radixPoint.charAt(0))[0], leadingzeroes = new RegExp(\"^[0\" + opts.groupSeparator + \"]*\").exec(number)), \n !(!leadingzeroes || !(1 < leadingzeroes[0].length || 0 < leadingzeroes[0].length && leadingzeroes[0].length < number.length)) && leadingzeroes;\n }\n Inputmask.extendAliases({\n numeric: {\n mask: genMask,\n _mask: function _mask(opts) {\n return \"(\" + opts.groupSeparator + \"999){+|1}\";\n },\n digits: \"*\",\n digitsOptional: !0,\n enforceDigitsOnBlur: !1,\n radixPoint: \".\",\n positionCaretOnClick: \"radixFocus\",\n _radixDance: !0,\n groupSeparator: \"\",\n allowMinus: !0,\n negationSymbol: {\n front: \"-\",\n back: \"\"\n },\n prefix: \"\",\n suffix: \"\",\n min: null,\n max: null,\n step: 1,\n unmaskAsNumber: !1,\n roundingFN: Math.round,\n inputmode: \"numeric\",\n shortcuts: {\n k: \"000\",\n m: \"000000\"\n },\n placeholder: \"0\",\n greedy: !1,\n rightAlign: !0,\n insertMode: !0,\n autoUnmask: !1,\n skipOptionalPartCharacter: \"\",\n definitions: {\n 0: {\n validator: decimalValidator\n },\n 1: {\n validator: decimalValidator,\n definitionSymbol: \"9\"\n },\n \"+\": {\n validator: function validator(chrs, maskset, pos, strict, opts) {\n return opts.allowMinus && (\"-\" === chrs || chrs === opts.negationSymbol.front);\n }\n },\n \"-\": {\n validator: function validator(chrs, maskset, pos, strict, opts) {\n return opts.allowMinus && chrs === opts.negationSymbol.back;\n }\n }\n },\n preValidation: function preValidation(buffer, pos, c, isSelection, opts, maskset, caretPos, strict) {\n if (!1 !== opts.__financeInput && c === opts.radixPoint) return !1;\n var pattern;\n if (pattern = opts.shortcuts && opts.shortcuts[c]) {\n if (1 < pattern.length) for (var inserts = [], i = 0; i < pattern.length; i++) inserts.push({\n pos: pos + i,\n c: pattern[i],\n strict: !1\n });\n return {\n insert: inserts\n };\n }\n var radixPos = $.inArray(opts.radixPoint, buffer), initPos = pos;\n if (pos = hanndleRadixDance(pos, c, radixPos, maskset, opts), \"-\" === c || c === opts.negationSymbol.front) {\n if (!0 !== opts.allowMinus) return !1;\n var isNegative = !1, front = findValid(\"+\", maskset), back = findValid(\"-\", maskset);\n return -1 !== front && (isNegative = [ front, back ]), !1 !== isNegative ? {\n remove: isNegative,\n caret: initPos\n } : {\n insert: [ {\n pos: findValidator(\"+\", maskset),\n c: opts.negationSymbol.front,\n fromIsValid: !0\n }, {\n pos: findValidator(\"-\", maskset),\n c: opts.negationSymbol.back,\n fromIsValid: void 0\n } ],\n caret: initPos + opts.negationSymbol.back.length\n };\n }\n if (strict) return !0;\n if (-1 !== radixPos && !0 === opts._radixDance && !1 === isSelection && c === opts.radixPoint && void 0 !== opts.digits && (isNaN(opts.digits) || 0 < parseInt(opts.digits)) && radixPos !== pos) return {\n caret: opts._radixDance && pos === radixPos - 1 ? radixPos + 1 : radixPos\n };\n if (!1 === opts.__financeInput) if (isSelection) {\n if (opts.digitsOptional) return {\n rewritePosition: caretPos.end\n };\n if (!opts.digitsOptional) {\n if (caretPos.begin > radixPos && caretPos.end <= radixPos) return c === opts.radixPoint ? {\n insert: {\n pos: radixPos + 1,\n c: \"0\",\n fromIsValid: !0\n },\n rewritePosition: radixPos\n } : {\n rewritePosition: radixPos + 1\n };\n if (caretPos.begin < radixPos) return {\n rewritePosition: caretPos.begin - 1\n };\n }\n } else if (!opts.showMaskOnHover && !opts.showMaskOnFocus && !opts.digitsOptional && 0 < opts.digits && \"\" === this.inputmask.__valueGet.call(this)) return {\n rewritePosition: radixPos\n };\n return {\n rewritePosition: pos\n };\n },\n postValidation: function postValidation(buffer, pos, c, currentResult, opts, maskset, strict) {\n if (!1 === currentResult) return currentResult;\n if (strict) return !0;\n if (null !== opts.min || null !== opts.max) {\n var unmasked = opts.onUnMask(buffer.slice().reverse().join(\"\"), void 0, $.extend({}, opts, {\n unmaskAsNumber: !0\n }));\n if (null !== opts.min && unmasked < opts.min && (unmasked.toString().length >= opts.min.toString().length || unmasked < 0)) return !1;\n if (null !== opts.max && unmasked > opts.max) return !1;\n }\n return currentResult;\n },\n onUnMask: function onUnMask(maskedValue, unmaskedValue, opts) {\n if (\"\" === unmaskedValue && !0 === opts.nullable) return unmaskedValue;\n var processValue = maskedValue.replace(opts.prefix, \"\");\n return processValue = processValue.replace(opts.suffix, \"\"), processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\"), \n \"\" !== opts.placeholder.charAt(0) && (processValue = processValue.replace(new RegExp(opts.placeholder.charAt(0), \"g\"), \"0\")), \n opts.unmaskAsNumber ? (\"\" !== opts.radixPoint && -1 !== processValue.indexOf(opts.radixPoint) && (processValue = processValue.replace(Inputmask.escapeRegex.call(this, opts.radixPoint), \".\")), \n processValue = processValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n Number(processValue)) : processValue;\n },\n isComplete: function isComplete(buffer, opts) {\n var maskedValue = (opts.numericInput ? buffer.slice().reverse() : buffer).join(\"\");\n return maskedValue = maskedValue.replace(new RegExp(\"^\" + Inputmask.escapeRegex(opts.negationSymbol.front)), \"-\"), \n maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\"), \n maskedValue = maskedValue.replace(opts.prefix, \"\"), maskedValue = maskedValue.replace(opts.suffix, \"\"), \n maskedValue = maskedValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator) + \"([0-9]{3})\", \"g\"), \"$1\"), \n \",\" === opts.radixPoint && (maskedValue = maskedValue.replace(Inputmask.escapeRegex(opts.radixPoint), \".\")), \n isFinite(maskedValue);\n },\n onBeforeMask: function onBeforeMask(initialValue, opts) {\n var radixPoint = opts.radixPoint || \",\";\n isFinite(opts.digits) && (opts.digits = parseInt(opts.digits)), \"number\" != typeof initialValue && \"number\" !== opts.inputType || \"\" === radixPoint || (initialValue = initialValue.toString().replace(\".\", radixPoint));\n var valueParts = initialValue.split(radixPoint), integerPart = valueParts[0].replace(/[^\\-0-9]/g, \"\"), decimalPart = 1 < valueParts.length ? valueParts[1].replace(/[^0-9]/g, \"\") : \"\", forceDigits = 1 < valueParts.length;\n initialValue = integerPart + (\"\" !== decimalPart ? radixPoint + decimalPart : decimalPart);\n var digits = 0;\n if (\"\" !== radixPoint && (digits = opts.digitsOptional ? opts.digits < decimalPart.length ? opts.digits : decimalPart.length : opts.digits, \n \"\" !== decimalPart || !opts.digitsOptional)) {\n var digitsFactor = Math.pow(10, digits || 1);\n initialValue = initialValue.replace(Inputmask.escapeRegex(radixPoint), \".\"), isNaN(parseFloat(initialValue)) || (initialValue = (opts.roundingFN(parseFloat(initialValue) * digitsFactor) / digitsFactor).toFixed(digits)), \n initialValue = initialValue.toString().replace(\".\", radixPoint);\n }\n if (0 === opts.digits && -1 !== initialValue.indexOf(radixPoint) && (initialValue = initialValue.substring(0, initialValue.indexOf(radixPoint))), \n null !== opts.min || null !== opts.max) {\n var numberValue = initialValue.toString().replace(radixPoint, \".\");\n null !== opts.min && numberValue < opts.min ? initialValue = opts.min.toString().replace(\".\", radixPoint) : null !== opts.max && numberValue > opts.max && (initialValue = opts.max.toString().replace(\".\", radixPoint));\n }\n return alignDigits(initialValue.toString().split(\"\"), digits, opts, forceDigits).join(\"\");\n },\n onBeforeWrite: function onBeforeWrite(e, buffer, caretPos, opts) {\n function stripBuffer(buffer, stripRadix) {\n if (!1 !== opts.__financeInput || stripRadix) {\n var position = $.inArray(opts.radixPoint, buffer);\n -1 !== position && buffer.splice(position, 1);\n }\n if (\"\" !== opts.groupSeparator) for (;-1 !== (position = buffer.indexOf(opts.groupSeparator)); ) buffer.splice(position, 1);\n return buffer;\n }\n var result, leadingzeroes = checkForLeadingZeroes(buffer, opts);\n if (leadingzeroes) {\n var buf = buffer.slice().reverse(), caretNdx = buf.join(\"\").indexOf(leadingzeroes[0]);\n buf.splice(caretNdx, leadingzeroes[0].length);\n var newCaretPos = buf.length - caretNdx;\n stripBuffer(buf), result = {\n refreshFromBuffer: !0,\n buffer: buf.reverse(),\n caret: caretPos < newCaretPos ? caretPos : newCaretPos\n };\n }\n if (e) switch (e.type) {\n case \"blur\":\n case \"checkval\":\n if (null !== opts.min) {\n var unmasked = opts.onUnMask(buffer.slice().reverse().join(\"\"), void 0, $.extend({}, opts, {\n unmaskAsNumber: !0\n }));\n if (null !== opts.min && unmasked < opts.min) return {\n refreshFromBuffer: !0,\n buffer: alignDigits(opts.min.toString().replace(\".\", opts.radixPoint).split(\"\"), opts.digits, opts).reverse()\n };\n }\n if (buffer[buffer.length - 1] === opts.negationSymbol.front) {\n var nmbrMtchs = new RegExp(\"(^\" + (\"\" != opts.negationSymbol.front ? Inputmask.escapeRegex(opts.negationSymbol.front) + \"?\" : \"\") + Inputmask.escapeRegex(opts.prefix) + \")(.*)(\" + Inputmask.escapeRegex(opts.suffix) + (\"\" != opts.negationSymbol.back ? Inputmask.escapeRegex(opts.negationSymbol.back) + \"?\" : \"\") + \"$)\").exec(stripBuffer(buffer.slice(), !0).reverse().join(\"\")), number = nmbrMtchs ? nmbrMtchs[2] : \"\";\n 0 == number && (result = {\n refreshFromBuffer: !0,\n buffer: [ 0 ]\n });\n } else \"\" !== opts.radixPoint && buffer[0] === opts.radixPoint && (result && result.buffer ? result.buffer.shift() : (buffer.shift(), \n result = {\n refreshFromBuffer: !0,\n buffer: stripBuffer(buffer)\n }));\n if (opts.enforceDigitsOnBlur) {\n result = result || {};\n var bffr = result && result.buffer || buffer.slice().reverse();\n result.refreshFromBuffer = !0, result.buffer = alignDigits(bffr, opts.digits, opts, !0).reverse();\n }\n }\n return result;\n },\n onKeyDown: function onKeyDown(e, buffer, caretPos, opts) {\n var $input = $(this), bffr;\n if (e.ctrlKey) switch (e.keyCode) {\n case keyCode.UP:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) + parseInt(opts.step)), \n $input.trigger(\"setvalue\"), !1;\n\n case keyCode.DOWN:\n return this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) - parseInt(opts.step)), \n $input.trigger(\"setvalue\"), !1;\n }\n if (!e.shiftKey && (e.keyCode === keyCode.DELETE || e.keyCode === keyCode.BACKSPACE || e.keyCode === keyCode.BACKSPACE_SAFARI) && caretPos.begin !== buffer.length) {\n if (buffer[e.keyCode === keyCode.DELETE ? caretPos.begin - 1 : caretPos.end] === opts.negationSymbol.front) return bffr = buffer.slice().reverse(), \n \"\" !== opts.negationSymbol.front && bffr.shift(), \"\" !== opts.negationSymbol.back && bffr.pop(), \n $input.trigger(\"setvalue\", [ bffr.join(\"\"), caretPos.begin ]), !1;\n if (!0 === opts._radixDance) {\n var radixPos = $.inArray(opts.radixPoint, buffer);\n if (opts.digitsOptional) {\n if (0 === radixPos) return bffr = buffer.slice().reverse(), bffr.pop(), $input.trigger(\"setvalue\", [ bffr.join(\"\"), caretPos.begin >= bffr.length ? bffr.length : caretPos.begin ]), \n !1;\n } else if (-1 !== radixPos && (caretPos.begin < radixPos || caretPos.end < radixPos || e.keyCode === keyCode.DELETE && caretPos.begin === radixPos)) return caretPos.begin !== caretPos.end || e.keyCode !== keyCode.BACKSPACE && e.keyCode !== keyCode.BACKSPACE_SAFARI || caretPos.begin++, \n bffr = buffer.slice().reverse(), bffr.splice(bffr.length - caretPos.begin, caretPos.begin - caretPos.end + 1), \n bffr = alignDigits(bffr, opts.digits, opts).join(\"\"), $input.trigger(\"setvalue\", [ bffr, caretPos.begin >= bffr.length ? radixPos + 1 : caretPos.begin ]), \n !1;\n }\n }\n }\n },\n currency: {\n prefix: \"\",\n groupSeparator: \",\",\n alias: \"numeric\",\n digits: 2,\n digitsOptional: !1\n },\n decimal: {\n alias: \"numeric\"\n },\n integer: {\n alias: \"numeric\",\n digits: 0\n },\n percentage: {\n alias: \"numeric\",\n min: 0,\n max: 100,\n suffix: \" %\",\n digits: 0,\n allowMinus: !1\n },\n indianns: {\n alias: \"numeric\",\n _mask: function _mask(opts) {\n return \"(\" + opts.groupSeparator + \"99){*|1}(\" + opts.groupSeparator + \"999){1|1}\";\n },\n groupSeparator: \",\",\n radixPoint: \".\",\n placeholder: \"0\",\n digits: 2,\n digitsOptional: !1\n }\n }), module.exports = Inputmask;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var _inputmask = _interopRequireDefault(__webpack_require__(1));\n function _typeof(obj) {\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function _typeof(obj) {\n return typeof obj;\n } : function _typeof(obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function _possibleConstructorReturn(self, call) {\n return !call || \"object\" !== _typeof(call) && \"function\" != typeof call ? _assertThisInitialized(self) : call;\n }\n function _assertThisInitialized(self) {\n if (void 0 === self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return self;\n }\n function _inherits(subClass, superClass) {\n if (\"function\" != typeof superClass && null !== superClass) throw new TypeError(\"Super expression must either be null or a function\");\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: !0,\n configurable: !0\n }\n }), superClass && _setPrototypeOf(subClass, superClass);\n }\n function _wrapNativeSuper(Class) {\n var _cache = \"function\" == typeof Map ? new Map() : void 0;\n return _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (null === Class || !_isNativeFunction(Class)) return Class;\n if (\"function\" != typeof Class) throw new TypeError(\"Super expression must either be null or a function\");\n if (\"undefined\" != typeof _cache) {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), _setPrototypeOf(Wrapper, Class);\n }, _wrapNativeSuper(Class);\n }\n function isNativeReflectConstruct() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), \n !0;\n } catch (e) {\n return !1;\n }\n }\n function _construct(Parent, args, Class) {\n return _construct = isNativeReflectConstruct() ? Reflect.construct : function _construct(Parent, args, Class) {\n var a = [ null ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a), instance = new Constructor();\n return Class && _setPrototypeOf(instance, Class.prototype), instance;\n }, _construct.apply(null, arguments);\n }\n function _isNativeFunction(fn) {\n return -1 !== Function.toString.call(fn).indexOf(\"[native code]\");\n }\n function _setPrototypeOf(o, p) {\n return _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n return o.__proto__ = p, o;\n }, _setPrototypeOf(o, p);\n }\n function _getPrototypeOf(o) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, _getPrototypeOf(o);\n }\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n if (document.head.createShadowRoot || document.head.attachShadow) {\n var InputmaskElement = function(_HTMLElement) {\n function InputmaskElement() {\n var _this;\n _classCallCheck(this, InputmaskElement), _this = _possibleConstructorReturn(this, _getPrototypeOf(InputmaskElement).call(this));\n var attributeNames = _this.getAttributeNames(), shadow = _this.attachShadow({\n mode: \"closed\"\n }), input = document.createElement(\"input\");\n for (var attr in input.type = \"text\", shadow.appendChild(input), attributeNames) Object.prototype.hasOwnProperty.call(attributeNames, attr) && input.setAttribute(\"data-inputmask-\" + attributeNames[attr], _this.getAttribute(attributeNames[attr]));\n return new _inputmask.default().mask(input), input.inputmask.shadowRoot = shadow, \n _this;\n }\n return _inherits(InputmaskElement, _HTMLElement), InputmaskElement;\n }(_wrapNativeSuper(HTMLElement));\n customElements.define(\"input-mask\", InputmaskElement);\n }\n } ], installedModules = {}, __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n enumerable: !0,\n get: getter\n });\n }, __webpack_require__.r = function(exports) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n }, __webpack_require__.t = function(value, mode) {\n if (1 & mode && (value = __webpack_require__(value)), 8 & mode) return value;\n if (4 & mode && \"object\" == typeof value && value && value.__esModule) return value;\n var ns = Object.create(null);\n if (__webpack_require__.r(ns), Object.defineProperty(ns, \"default\", {\n enumerable: !0,\n value: value\n }), 2 & mode && \"string\" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {\n return value[key];\n }.bind(null, key));\n return ns;\n }, __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function getDefault() {\n return module.default;\n } : function getModuleExports() {\n return module;\n };\n return __webpack_require__.d(getter, \"a\", getter), getter;\n }, __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 5);\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n module.l = !0, module.exports;\n }\n var modules, installedModules;\n});","module.exports = require(\"./dist/inputmask\");\n","/*!\n * The Final Countdown for jQuery v2.2.0 (http://hilios.github.io/jQuery.countdown/)\n * Copyright (c) 2016 Edson Hilios\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"), to deal in\n * the Software without restriction, including without limitation the rights to\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n * the Software, and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n(function(factory) {\n \"use strict\";\n if (typeof define === \"function\" && define.amd) {\n define([ \"jquery\" ], factory);\n } else {\n factory(jQuery);\n }\n})(function($) {\n \"use strict\";\n var instances = [], matchers = [], defaultOptions = {\n precision: 100,\n elapse: false,\n defer: false\n };\n matchers.push(/^[0-9]*$/.source);\n matchers.push(/([0-9]{1,2}\\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers.push(/[0-9]{4}([\\/\\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);\n matchers = new RegExp(matchers.join(\"|\"));\n function parseDateString(dateString) {\n if (dateString instanceof Date) {\n return dateString;\n }\n if (String(dateString).match(matchers)) {\n if (String(dateString).match(/^[0-9]*$/)) {\n dateString = Number(dateString);\n }\n if (String(dateString).match(/\\-/)) {\n dateString = String(dateString).replace(/\\-/g, \"/\");\n }\n return new Date(dateString);\n } else {\n throw new Error(\"Couldn't cast `\" + dateString + \"` to a date object.\");\n }\n }\n var DIRECTIVE_KEY_MAP = {\n Y: \"years\",\n m: \"months\",\n n: \"daysToMonth\",\n d: \"daysToWeek\",\n w: \"weeks\",\n W: \"weeksToMonth\",\n H: \"hours\",\n M: \"minutes\",\n S: \"seconds\",\n D: \"totalDays\",\n I: \"totalHours\",\n N: \"totalMinutes\",\n T: \"totalSeconds\"\n };\n function escapedRegExp(str) {\n var sanitize = str.toString().replace(/([.?*+^$[\\]\\\\(){}|-])/g, \"\\\\$1\");\n return new RegExp(sanitize);\n }\n function strftime(offsetObject) {\n return function(format) {\n var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);\n if (directives) {\n for (var i = 0, len = directives.length; i < len; ++i) {\n var directive = directives[i].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), regexp = escapedRegExp(directive[0]), modifier = directive[1] || \"\", plural = directive[3] || \"\", value = null;\n directive = directive[2];\n if (DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {\n value = DIRECTIVE_KEY_MAP[directive];\n value = Number(offsetObject[value]);\n }\n if (value !== null) {\n if (modifier === \"!\") {\n value = pluralize(plural, value);\n }\n if (modifier === \"\") {\n if (value < 10) {\n value = \"0\" + value.toString();\n }\n }\n format = format.replace(regexp, value.toString());\n }\n }\n }\n format = format.replace(/%%/, \"%\");\n return format;\n };\n }\n function pluralize(format, count) {\n var plural = \"s\", singular = \"\";\n if (format) {\n format = format.replace(/(:|;|\\s)/gi, \"\").split(/\\,/);\n if (format.length === 1) {\n plural = format[0];\n } else {\n singular = format[0];\n plural = format[1];\n }\n }\n if (Math.abs(count) > 1) {\n return plural;\n } else {\n return singular;\n }\n }\n var Countdown = function(el, finalDate, options) {\n this.el = el;\n this.$el = $(el);\n this.interval = null;\n this.offset = {};\n this.options = $.extend({}, defaultOptions);\n this.instanceNumber = instances.length;\n instances.push(this);\n this.$el.data(\"countdown-instance\", this.instanceNumber);\n if (options) {\n if (typeof options === \"function\") {\n this.$el.on(\"update.countdown\", options);\n this.$el.on(\"stoped.countdown\", options);\n this.$el.on(\"finish.countdown\", options);\n } else {\n this.options = $.extend({}, defaultOptions, options);\n }\n }\n this.setFinalDate(finalDate);\n if (this.options.defer === false) {\n this.start();\n }\n };\n $.extend(Countdown.prototype, {\n start: function() {\n if (this.interval !== null) {\n clearInterval(this.interval);\n }\n var self = this;\n this.update();\n this.interval = setInterval(function() {\n self.update.call(self);\n }, this.options.precision);\n },\n stop: function() {\n clearInterval(this.interval);\n this.interval = null;\n this.dispatchEvent(\"stoped\");\n },\n toggle: function() {\n if (this.interval) {\n this.stop();\n } else {\n this.start();\n }\n },\n pause: function() {\n this.stop();\n },\n resume: function() {\n this.start();\n },\n remove: function() {\n this.stop.call(this);\n instances[this.instanceNumber] = null;\n delete this.$el.data().countdownInstance;\n },\n setFinalDate: function(value) {\n this.finalDate = parseDateString(value);\n },\n update: function() {\n if (this.$el.closest(\"html\").length === 0) {\n this.remove();\n return;\n }\n var hasEventsAttached = $._data(this.el, \"events\") !== undefined, now = new Date(), newTotalSecsLeft;\n newTotalSecsLeft = this.finalDate.getTime() - now.getTime();\n newTotalSecsLeft = Math.ceil(newTotalSecsLeft / 1e3);\n newTotalSecsLeft = !this.options.elapse && newTotalSecsLeft < 0 ? 0 : Math.abs(newTotalSecsLeft);\n if (this.totalSecsLeft === newTotalSecsLeft || !hasEventsAttached) {\n return;\n } else {\n this.totalSecsLeft = newTotalSecsLeft;\n }\n this.elapsed = now >= this.finalDate;\n this.offset = {\n seconds: this.totalSecsLeft % 60,\n minutes: Math.floor(this.totalSecsLeft / 60) % 60,\n hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,\n days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToWeek: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,\n daysToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 % 30.4368),\n weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),\n weeksToMonth: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7) % 4,\n months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30.4368),\n years: Math.abs(this.finalDate.getFullYear() - now.getFullYear()),\n totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),\n totalHours: Math.floor(this.totalSecsLeft / 60 / 60),\n totalMinutes: Math.floor(this.totalSecsLeft / 60),\n totalSeconds: this.totalSecsLeft\n };\n if (!this.options.elapse && this.totalSecsLeft === 0) {\n this.stop();\n this.dispatchEvent(\"finish\");\n } else {\n this.dispatchEvent(\"update\");\n }\n },\n dispatchEvent: function(eventName) {\n var event = $.Event(eventName + \".countdown\");\n event.finalDate = this.finalDate;\n event.elapsed = this.elapsed;\n event.offset = $.extend({}, this.offset);\n event.strftime = strftime(this.offset);\n this.$el.trigger(event);\n }\n });\n $.fn.countdown = function() {\n var argumentsArray = Array.prototype.slice.call(arguments, 0);\n return this.each(function() {\n var instanceNumber = $(this).data(\"countdown-instance\");\n if (instanceNumber !== undefined) {\n var instance = instances[instanceNumber], method = argumentsArray[0];\n if (Countdown.prototype.hasOwnProperty(method)) {\n instance[method].apply(instance, argumentsArray.slice(1));\n } else if (String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {\n instance.setFinalDate.call(instance, method);\n instance.start();\n } else {\n $.error(\"Method %s does not exist on jQuery.countdown\".replace(/\\%s/gi, method));\n }\n } else {\n new Countdown(this, argumentsArray[0], argumentsArray[1]);\n }\n });\n };\n});","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"