{"version":3,"sources":["node_modules/atoa/atoa.js","node_modules/ticky/ticky-browser.js","node_modules/contra/debounce.js","node_modules/contra/emitter.js","node_modules/custom-event/index.js","node_modules/crossvent/src/eventmap.js","node_modules/crossvent/src/crossvent.js","node_modules/dragula/classes.js","node_modules/dragula/dragula.js","node_modules/dragster/lib/dragster.js","node_modules/jquery/dist/jquery.js","node_modules/froala-editor/js/froala_editor.min.js","node_modules/froala-editor/js/plugins/code_view.min.js","node_modules/froala-editor/js/plugins/image.min.js","node_modules/froala-editor/js/plugins/image_manager.min.js","node_modules/froala-editor/js/plugins/table.min.js","node_modules/froala-editor/js/plugins/colors.min.js","node_modules/froala-editor/js/plugins/emoticons.min.js","node_modules/froala-editor/js/plugins/font_family.min.js","node_modules/froala-editor/js/plugins/font_size.min.js","node_modules/froala-editor/js/plugins/print.min.js","node_modules/froala-editor/js/plugins/link.min.js","node_modules/froala-editor/js/plugins/inline_style.min.js","node_modules/froala-editor/js/plugins/paragraph_style.min.js","libs/proman/src/lib/fa/fa6.component.ts","libs/proman/src/lib/fa/fa6.module.ts","libs/proman/src/lib/shared/pipes/pipes/tree-padding.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/translate.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/filter.pipe.ts","libs/proman/src/lib/services/image-path.service.ts","libs/proman/src/lib/shared/pipes/pipes/thumb-path.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/html-sanitizer.pipe.ts","libs/proman/src/lib/services/app-init.service.ts","libs/proman/src/lib/services/language-config.service.ts","libs/proman/src/lib/services/date-time-format.service.ts","libs/proman/src/lib/services/filter.service.ts","libs/proman/src/lib/store/currency/currency.selectors.ts","libs/proman/src/lib/services/currencies.service.ts","libs/proman/src/lib/shared/pipes/pipes/max-length.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/currency-shorthand.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/date-time.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/date.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/smart-date.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/sort.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/keys.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/price.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/event-name.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/zero-pad.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/quant-format.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/markdown.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/decimal.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/duration.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/url-sanitizer.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/reverse.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/filter-function.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/weight.pipe.ts","libs/proman/src/lib/shared/pipes/pipes/clickable-url.pipe.ts","libs/proman/src/lib/shared/pipes/pipes.module.ts","node_modules/@angular/cdk/fesm2022/bidi.mjs","node_modules/ngx-flexible-layout/fesm2022/ngx-flexible-layout-_private-utils.mjs","node_modules/ngx-flexible-layout/fesm2022/ngx-flexible-layout-core.mjs","node_modules/ngx-flexible-layout/fesm2022/ngx-flexible-layout-flex.mjs","node_modules/@angular/cdk/fesm2022/coercion.mjs","node_modules/ngx-flexible-layout/fesm2022/ngx-flexible-layout-extended.mjs","node_modules/ngx-flexible-layout/fesm2022/ngx-flexible-layout-grid.mjs","node_modules/ngx-flexible-layout/fesm2022/ngx-flexible-layout.mjs","libs/proman/src/lib/overlay/global-overlay.service.ts","libs/proman/src/lib/overlay/global-overlay.component.ts","libs/proman/src/lib/overlay/global-overlay-appending.service.ts","libs/proman/src/lib/overlay/global-overlay.directive.ts","libs/proman/src/lib/overlay/global-overlay.module.ts","libs/proman/src/lib/shared/directives/proman-contrasting-color.directive.ts","libs/proman/src/lib/shared/directives/image-error.directive.ts","libs/proman/src/lib/shared/directives/click-stop-propagation.directive.ts","libs/proman/src/lib/shared/directives/init.directive.ts","libs/proman/src/lib/shared/directives/scroll-limit.directive.ts","libs/proman/src/lib/shared/directives/scroll-into-view.directive.ts","libs/proman/src/lib/shared/directives/shift-scroll-horizontal.directive.ts","libs/proman/src/lib/shared/directives/on-resize.directive.ts","libs/proman/src/lib/tooltip/tooltip.directive.ts","libs/proman/src/lib/tooltip/tooltip-directive.module.ts","libs/proman/src/lib/shared/directives/for-2.directive.ts","libs/proman/src/lib/shared/directives/element-on-load.directive.ts","libs/proman/src/lib/shared/directives/delay-render.directive.ts","libs/proman/src/lib/shared/directives/shared-directives.module.ts","node_modules/@angular/forms/fesm2022/forms.mjs","node_modules/@angular/cdk/fesm2022/platform.mjs","node_modules/@angular/cdk/fesm2022/text-field.mjs","libs/proman/src/lib/validators/input-error-state-matcher.ts","node_modules/@angular/cdk/fesm2022/keycodes.mjs","node_modules/@angular/cdk/fesm2022/a11y.mjs","node_modules/@angular/cdk/fesm2022/observers.mjs","node_modules/@angular/cdk/fesm2022/layout.mjs","node_modules/@angular/material/fesm2022/core.mjs","node_modules/@angular/animations/fesm2022/browser.mjs","node_modules/@angular/platform-browser/fesm2022/animations.mjs","node_modules/@angular/material/fesm2022/form-field.mjs","node_modules/@angular/material/fesm2022/input.mjs","node_modules/@angular/material/fesm2022/legacy-form-field.mjs","node_modules/@angular/material/fesm2022/legacy-input.mjs","node_modules/@angular/material/fesm2022/legacy-button.mjs","libs/proman/src/lib/button/proman-button.component.ts","libs/proman/src/lib/validators/number.validator.ts","libs/proman/src/lib/validators/range.validator.ts","libs/proman/src/lib/text-simple/proman-text-simple.component.ts","libs/proman/src/lib/services/serial.service.ts","node_modules/@angular/cdk/fesm2022/scrolling.mjs","node_modules/@angular/cdk/fesm2022/collections.mjs","node_modules/@angular/cdk/fesm2022/overlay.mjs","node_modules/@angular/cdk/fesm2022/portal.mjs","node_modules/@angular/cdk/fesm2022/dialog.mjs","node_modules/@angular/material/fesm2022/dialog.mjs","node_modules/@angular/material/fesm2022/legacy-dialog.mjs","node_modules/@angular/material/fesm2022/legacy-core.mjs","node_modules/@angular/material/fesm2022/select.mjs","node_modules/@angular/material/fesm2022/legacy-select.mjs","libs/proman/src/lib/select/proman-select.component.ts","node_modules/@angular/material/fesm2022/button.mjs","node_modules/@angular/material/fesm2022/datepicker.mjs","node_modules/ngx-material-timepicker/fesm2015/ngx-material-timepicker.js","node_modules/luxon/src/errors.js","node_modules/luxon/src/impl/formats.js","node_modules/luxon/src/zone.js","node_modules/luxon/src/zones/systemZone.js","node_modules/luxon/src/zones/IANAZone.js","node_modules/luxon/src/impl/locale.js","node_modules/luxon/src/zones/fixedOffsetZone.js","node_modules/luxon/src/zones/invalidZone.js","node_modules/luxon/src/impl/zoneUtil.js","node_modules/luxon/src/settings.js","node_modules/luxon/src/impl/util.js","node_modules/luxon/src/impl/english.js","node_modules/luxon/src/impl/formatter.js","node_modules/luxon/src/impl/invalid.js","node_modules/luxon/src/impl/regexParser.js","node_modules/luxon/src/duration.js","node_modules/luxon/src/interval.js","node_modules/luxon/src/info.js","node_modules/luxon/src/impl/diff.js","node_modules/luxon/src/impl/digits.js","node_modules/luxon/src/impl/tokenParser.js","node_modules/luxon/src/impl/conversions.js","node_modules/luxon/src/datetime.js","libs/proman/src/lib/clock-timepicker/proman-clock-timepicker.component.ts","libs/proman/src/lib/color/proman-color.component.ts","libs/proman/src/lib/common-components/standalone/dialog-title.component.ts","libs/proman/src/lib/common-components/standalone/dialog-actions.component.ts","libs/proman/src/lib/table/constants.ts","libs/proman/src/lib/table/services/table-actions-parser.service.ts","node_modules/ng2-dragula/fesm2022/ng2-dragula.mjs","libs/proman/src/lib/cached-requests/store/parameters.actions.ts","libs/proman/src/lib/cached-requests/store/parameters.selectors.ts","libs/proman/src/lib/cached-requests/store/parameters.reducer.ts","libs/proman/src/lib/cached-requests/store/parameters.effects.ts","libs/proman/src/lib/services/parameters-options.service.ts","libs/proman/src/lib/common-components/components/no-records.component.ts","node_modules/@angular/material/fesm2022/menu.mjs","node_modules/@angular/material/fesm2022/legacy-menu.mjs","libs/proman/src/lib/common-components/components/preview.component.ts","libs/proman/src/lib/shared-dialogs/dialogs/file-preview-dialog.component.ts","libs/proman/src/lib/shared-dialogs/dialogs/video-preview-dialog.component.ts","libs/proman/src/lib/services/file-preview.service.ts","libs/proman/src/lib/common-components/components/proman-thumbnail.component.ts","node_modules/angular-mentions/fesm2020/angular-mentions.mjs","node_modules/@angular/material/fesm2022/autocomplete.mjs","node_modules/@angular/material/fesm2022/legacy-autocomplete.mjs","libs/proman/src/lib/autocomplete/proman-autocomplete.component.ts","libs/proman/src/lib/datepicker/proman-datepicker.component.ts","libs/proman/src/lib/datepicker/parse-time.directive.ts","libs/proman/src/lib/datepicker/proman-time-dropdown.component.ts","libs/proman/src/lib/datepicker/proman-time.component.ts","node_modules/@angular/material/fesm2022/checkbox.mjs","node_modules/@angular/material/fesm2022/legacy-checkbox.mjs","libs/proman/src/lib/checkbox/proman-checkbox.component.ts","libs/proman/src/lib/common-components/components/label.component.ts","libs/proman/src/lib/validators/unique.validator.ts","libs/proman/src/lib/services/unique-validator.service.ts","libs/proman/src/lib/table/services/table-cache.service.ts","libs/proman/src/lib/services/query-expression.service.ts","libs/proman/src/lib/table/utils/table-config.ts","libs/proman/src/lib/table/services/table-helper.service.ts","libs/proman/src/lib/table/components/table.component.ts","libs/proman/src/lib/table/utils/tools.ts","libs/proman/src/lib/table/components/table-settings-dialog.component.ts","libs/proman/src/lib/services/uploader.service.ts","libs/proman/src/lib/table/components/table-dialog.component.ts","libs/proman/src/lib/services/dynamic-fields.service.ts","libs/proman/src/lib/common-components/components/move-handle.component.ts","libs/proman/src/lib/table/services/table-entity-search-parameters.service.ts","libs/proman/src/lib/services/query.service.ts","libs/proman/src/lib/services/search.service.ts","libs/proman/src/lib/table/services/table-parameters-formatter.service.ts","libs/proman/src/lib/shared-dialogs/dialogs/entity-reposition-dialog.component.ts","libs/proman/src/lib/common-components/components/pagination.component.ts","libs/proman/src/lib/table/components/table-filter-date.component.ts","libs/proman/src/lib/table/components/table-cell.component.ts","libs/proman/src/lib/table/components/entity-table-image-with-upload.component.ts","libs/proman/src/lib/table/components/entity-table-status-switcher.component.ts","libs/proman/src/lib/table/components/entity-table-checkbox.component.ts","libs/proman/src/lib/table/components/entity-table-status-switch-checkbox.component.ts","libs/proman/src/lib/table/components/entity-table-color.component.ts","libs/proman/src/lib/table/components/entity-table-text-input.component.ts","libs/proman/src/lib/table/components/table-filter-autocomplete.component.ts","libs/proman/src/lib/services/observables.service.ts","libs/proman/src/lib/table/directives/fixed-header.directive.ts","libs/proman/src/lib/expression/components/expression-select-dialog.component.ts","libs/proman/src/lib/expression/components/expression-edit.dialog.component.ts","libs/proman/src/lib/expression/expression-humanize.service.ts","libs/proman/src/lib/expression/components/expression-humanize.component.ts","libs/proman/src/lib/utils/expressions_config.ts","libs/proman/src/lib/expression/components/expression-condition.component.ts","libs/proman/src/lib/expression/components/expression-simple.component.ts","libs/proman/src/lib/expression/components/expression-case.component.ts","libs/proman/src/lib/expression/components/expression-format.component.ts","libs/proman/src/lib/shared-dialogs/dialogs/confirm-action-dialog.component.ts","libs/proman/src/lib/common-components/components/editable-container.component.ts","libs/proman/src/lib/expression/components/editable-expression.component.ts","libs/proman/src/lib/parameters/parameter.directive.ts","libs/proman/src/lib/parameters/components/parameter-dropdown.component.ts","libs/proman/src/lib/parameters/components/parameter-group.component.ts","libs/proman/src/lib/parameters/constants.ts","libs/proman/src/lib/services/model.service.ts","libs/proman/src/lib/list-manager/constants.ts","libs/proman/src/lib/list-manager/list-manager-dynamic-template.component.ts","libs/proman/src/lib/list-manager/list-manager.component.ts","libs/proman/src/lib/parameters/components/parameter.component.ts","apps/frontend/src/app/shared/components/entity-remove-dialog.component.ts","apps/frontend/src/app/shared/components/dynamic-fields.component.ts","libs/proman/src/lib/validators/email.validator.ts","libs/proman/src/lib/validators/no-comma.validator.ts","libs/proman/src/lib/validators/starts-with-symbol.validator.ts","libs/proman/src/lib/overlay_cdk/attacher-trigger.service.ts","libs/proman/src/lib/overlay_cdk/attacher/models/position-to-origin.ts","node_modules/@popperjs/core/lib/dom-utils/getWindow.js","node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","node_modules/@popperjs/core/lib/utils/math.js","node_modules/@popperjs/core/lib/utils/userAgent.js","node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","libs/proman/src/lib/overlay_cdk/attacher/attacher-position-strategy.ts","libs/proman/src/lib/overlay_cdk/attacher/attacher-position-strategy-builder.ts","libs/proman/src/lib/overlay_cdk/attacher/attacher.ts","apps/frontend/src/app/shared/services/overlay.service.ts","apps/frontend/src/app/shared/directives/overlay.directive.ts","apps/frontend/src/app/inputs/components/txt.component.ts","apps/frontend/src/app/shared/components/clipboard-copy-btn.component.ts","apps/frontend/src/app/shared/directives/clipboard.directive.ts","apps/frontend/src/app/shared/components/entity-create-dialog.component.ts","apps/frontend/src/app/shared/components/entity-edit-dialog.component.ts","apps/frontend/src/app/shared/services/dialog.service.ts","node_modules/@angular/cdk/fesm2022/accordion.mjs","node_modules/@angular/material/fesm2022/expansion.mjs","node_modules/@angular/material/fesm2022/divider.mjs","node_modules/@angular/material/fesm2022/list.mjs","node_modules/@angular/material/fesm2022/legacy-list.mjs","libs/proman/src/lib/common-components/proman-common-components.module.ts","node_modules/@angular/material/fesm2022/progress-bar.mjs","node_modules/@angular/material/fesm2022/legacy-progress-bar.mjs","libs/proman/src/lib/datepicker/proman-duration-dropdown.component.ts","libs/proman/src/lib/datepicker/proman-date-time.module.ts","libs/proman/src/lib/shared-dialogs/dialogs/article-material-category-filter-setup-dialog.component.ts","libs/proman/src/lib/shared-dialogs/dialogs/article-material-filter-setup-dialog.component.ts","libs/proman/src/lib/shared-dialogs/proman-shared-dialogs.module.ts","libs/proman/src/lib/table/proman-table.module.ts","libs/proman/src/lib/expression/proman-expression.module.ts","libs/proman/src/lib/list-manager/list-manager.module.ts","apps/frontend/src/app/shared/directives/padding.directive.ts","apps/frontend/src/app/shared/directives/no-padding.directive.ts","apps/frontend/src/app/events/directives/event-employee-time-range.directive.ts","apps/frontend/src/app/shared/services/ws-updates.service.ts","apps/frontend/src/app/shared/directives/ws-update.directive.ts","apps/frontend/src/app/shared/frontend-directives.module.ts","libs/proman/src/lib/overlay_cdk/attacher.module.ts","node_modules/@angular/material/fesm2022/slide-toggle.mjs","apps/frontend/src/app/inputs/components/switch.component.ts","apps/frontend/src/app/inputs/components/price.component.ts","apps/frontend/src/app/inputs/components/html-txt.component.ts","node_modules/angular-froala-wysiwyg/fesm2020/angular-froala-wysiwyg.mjs","apps/frontend/src/app/inputs/components/btn-list.component.ts","apps/frontend/src/app/inputs/components/input.component.ts","apps/frontend/src/app/inputs/components/time-interval.component.ts","apps/frontend/src/app/inputs/components/list.component.ts","libs/proman/src/lib/shared/adapters/custom-date.adapter.ts","apps/frontend/src/app/inputs/components/monthpicker.component.ts","apps/frontend/src/app/inputs/components/detailed-address.component.ts","apps/frontend/src/app/inputs/components/number.component.ts","apps/frontend/src/app/inputs/components/emoji.component.ts","apps/frontend/src/app/inputs/components/canvas-sign.component.ts","node_modules/ngx-color/fesm2020/ngx-color.mjs","node_modules/@ctrl/tinycolor/dist/module/util.js","node_modules/@ctrl/tinycolor/dist/module/conversion.js","node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","node_modules/@ctrl/tinycolor/dist/module/format-input.js","node_modules/@ctrl/tinycolor/dist/module/index.js","node_modules/ngx-color/fesm2020/ngx-color-sketch.mjs","apps/frontend/src/app/inputs/components/advanced-color.component.ts","apps/frontend/src/app/inputs/inputs.module.ts","apps/frontend/src/app/shared/pipes/sref.pipe.ts","apps/frontend/src/app/shared/pipes/frontend-pipes.module.ts","apps/frontend/src/app/orders/components/shipment-provider-calculate-cell.component.ts","apps/frontend/src/app/parameters/components/parameter-view.component.ts","apps/frontend/src/app/parameters/parameter-view-component.module.ts","libs/proman/src/lib/services/outside-click-detector.service.ts","libs/proman/src/lib/inline-list/inline-list.component.ts","libs/proman/src/lib/inline-list/inline-list.service.ts","libs/proman/src/lib/tags/tags.component.ts","apps/frontend/src/app/shared/components/country-regions.component.ts","apps/frontend/src/app/orders/components/order-product-shipment-cell.component.ts","apps/frontend/src/app/shared/components/click-to-call.component.ts","apps/frontend/src/app/articles/components/article-comment-status.component.ts","apps/frontend/src/app/table/frontend-table-state-parser.service.ts","apps/frontend/src/app/constants.ts","apps/frontend/src/app/table/table-cell-overlay.component.ts","apps/frontend/src/app/shared/components/config-form-field.component.ts","apps/frontend/src/app/table/frontend-table.module.ts","libs/proman/src/lib/parameters/services/parameters.service.ts","libs/proman/src/lib/parameters/parameters.resolvers.ts","libs/proman/src/lib/parameters/components/parameter-group-name.component.ts","libs/proman/src/lib/parameters/proman-parameters.module.ts","apps/frontend/src/app/shared/components/input-dialog.component.ts","libs/proman/src/lib/dialog/proman-dialog.service.ts"],"sourcesContent":["module.exports = function atoa(a, n) {\n return Array.prototype.slice.call(a, n);\n};","var si = typeof setImmediate === 'function',\n tick;\nif (si) {\n tick = function (fn) {\n setImmediate(fn);\n };\n} else {\n tick = function (fn) {\n setTimeout(fn, 0);\n };\n}\nmodule.exports = tick;","'use strict';\n\nvar ticky = require('ticky');\nmodule.exports = function debounce(fn, args, ctx) {\n if (!fn) {\n return;\n }\n ticky(function run() {\n fn.apply(ctx || null, args || []);\n });\n};","'use strict';\n\nvar atoa = require('atoa');\nvar debounce = require('./debounce');\nmodule.exports = function emitter(thing, options) {\n var opts = options || {};\n var evt = {};\n if (thing === undefined) {\n thing = {};\n }\n thing.on = function (type, fn) {\n if (!evt[type]) {\n evt[type] = [fn];\n } else {\n evt[type].push(fn);\n }\n return thing;\n };\n thing.once = function (type, fn) {\n fn._once = true; // thing.off(fn) still works!\n thing.on(type, fn);\n return thing;\n };\n thing.off = function (type, fn) {\n var c = arguments.length;\n if (c === 1) {\n delete evt[type];\n } else if (c === 0) {\n evt = {};\n } else {\n var et = evt[type];\n if (!et) {\n return thing;\n }\n et.splice(et.indexOf(fn), 1);\n }\n return thing;\n };\n thing.emit = function () {\n var args = atoa(arguments);\n return thing.emitterSnapshot(args.shift()).apply(this, args);\n };\n thing.emitterSnapshot = function (type) {\n var et = (evt[type] || []).slice(0);\n return function () {\n var args = atoa(arguments);\n var ctx = this || thing;\n if (type === 'error' && opts.throws !== false && !et.length) {\n throw args.length === 1 ? args[0] : args;\n }\n et.forEach(function emitter(listen) {\n if (opts.async) {\n debounce(listen, args, ctx);\n } else {\n listen.apply(ctx, args);\n }\n if (listen._once) {\n thing.off(type, listen);\n }\n });\n return thing;\n };\n };\n return thing;\n};","var NativeCustomEvent = global.CustomEvent;\nfunction useNative() {\n try {\n var p = new NativeCustomEvent('cat', {\n detail: {\n foo: 'bar'\n }\n });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {}\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent(type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n// IE <= 8\nfunction CustomEvent(type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n};","'use strict';\n\nvar eventmap = [];\nvar eventname = '';\nvar ron = /^on/;\nfor (eventname in global) {\n if (ron.test(eventname)) {\n eventmap.push(eventname.slice(2));\n }\n}\nmodule.exports = eventmap;","'use strict';\n\nvar customEvent = require('custom-event');\nvar eventmap = require('./eventmap');\nvar doc = global.document;\nvar addEvent = addEventEasy;\nvar removeEvent = removeEventEasy;\nvar hardCache = [];\nif (!global.addEventListener) {\n addEvent = addEventHard;\n removeEvent = removeEventHard;\n}\nmodule.exports = {\n add: addEvent,\n remove: removeEvent,\n fabricate: fabricateEvent\n};\nfunction addEventEasy(el, type, fn, capturing) {\n return el.addEventListener(type, fn, capturing);\n}\nfunction addEventHard(el, type, fn) {\n return el.attachEvent('on' + type, wrap(el, type, fn));\n}\nfunction removeEventEasy(el, type, fn, capturing) {\n return el.removeEventListener(type, fn, capturing);\n}\nfunction removeEventHard(el, type, fn) {\n var listener = unwrap(el, type, fn);\n if (listener) {\n return el.detachEvent('on' + type, listener);\n }\n}\nfunction fabricateEvent(el, type, model) {\n var e = eventmap.indexOf(type) === -1 ? makeCustomEvent() : makeClassicEvent();\n if (el.dispatchEvent) {\n el.dispatchEvent(e);\n } else {\n el.fireEvent('on' + type, e);\n }\n function makeClassicEvent() {\n var e;\n if (doc.createEvent) {\n e = doc.createEvent('Event');\n e.initEvent(type, true, true);\n } else if (doc.createEventObject) {\n e = doc.createEventObject();\n }\n return e;\n }\n function makeCustomEvent() {\n return new customEvent(type, {\n detail: model\n });\n }\n}\nfunction wrapperFactory(el, type, fn) {\n return function wrapper(originalEvent) {\n var e = originalEvent || global.event;\n e.target = e.target || e.srcElement;\n e.preventDefault = e.preventDefault || function preventDefault() {\n e.returnValue = false;\n };\n e.stopPropagation = e.stopPropagation || function stopPropagation() {\n e.cancelBubble = true;\n };\n e.which = e.which || e.keyCode;\n fn.call(el, e);\n };\n}\nfunction wrap(el, type, fn) {\n var wrapper = unwrap(el, type, fn) || wrapperFactory(el, type, fn);\n hardCache.push({\n wrapper: wrapper,\n element: el,\n type: type,\n fn: fn\n });\n return wrapper;\n}\nfunction unwrap(el, type, fn) {\n var i = find(el, type, fn);\n if (i) {\n var wrapper = hardCache[i].wrapper;\n hardCache.splice(i, 1); // free up a tad of memory\n return wrapper;\n }\n}\nfunction find(el, type, fn) {\n var i, item;\n for (i = 0; i < hardCache.length; i++) {\n item = hardCache[i];\n if (item.element === el && item.type === type && item.fn === fn) {\n return i;\n }\n }\n}","'use strict';\n\nvar cache = {};\nvar start = '(?:^|\\\\s)';\nvar end = '(?:\\\\s|$)';\nfunction lookupClass(className) {\n var cached = cache[className];\n if (cached) {\n cached.lastIndex = 0;\n } else {\n cache[className] = cached = new RegExp(start + className + end, 'g');\n }\n return cached;\n}\nfunction addClass(el, className) {\n var current = el.className;\n if (!current.length) {\n el.className = className;\n } else if (!lookupClass(className).test(current)) {\n el.className += ' ' + className;\n }\n}\nfunction rmClass(el, className) {\n el.className = el.className.replace(lookupClass(className), ' ').trim();\n}\nmodule.exports = {\n add: addClass,\n rm: rmClass\n};","'use strict';\n\nvar emitter = require('contra/emitter');\nvar crossvent = require('crossvent');\nvar classes = require('./classes');\nvar doc = document;\nvar documentElement = doc.documentElement;\nfunction dragula(initialContainers, options) {\n var len = arguments.length;\n if (len === 1 && Array.isArray(initialContainers) === false) {\n options = initialContainers;\n initialContainers = [];\n }\n var _mirror; // mirror image\n var _source; // source container\n var _item; // item being dragged\n var _offsetX; // reference x\n var _offsetY; // reference y\n var _moveX; // reference move x\n var _moveY; // reference move y\n var _initialSibling; // reference sibling when grabbed\n var _currentSibling; // reference sibling now\n var _copy; // item used for copying\n var _renderTimer; // timer for setTimeout renderMirrorImage\n var _lastDropTarget = null; // last container item was over\n var _grabbed; // holds mousedown context until first mousemove\n\n var o = options || {};\n if (o.moves === void 0) {\n o.moves = always;\n }\n if (o.accepts === void 0) {\n o.accepts = always;\n }\n if (o.invalid === void 0) {\n o.invalid = invalidTarget;\n }\n if (o.containers === void 0) {\n o.containers = initialContainers || [];\n }\n if (o.isContainer === void 0) {\n o.isContainer = never;\n }\n if (o.copy === void 0) {\n o.copy = false;\n }\n if (o.copySortSource === void 0) {\n o.copySortSource = false;\n }\n if (o.revertOnSpill === void 0) {\n o.revertOnSpill = false;\n }\n if (o.removeOnSpill === void 0) {\n o.removeOnSpill = false;\n }\n if (o.direction === void 0) {\n o.direction = 'vertical';\n }\n if (o.ignoreInputTextSelection === void 0) {\n o.ignoreInputTextSelection = true;\n }\n if (o.mirrorContainer === void 0) {\n o.mirrorContainer = doc.body;\n }\n var drake = emitter({\n containers: o.containers,\n start: manualStart,\n end: end,\n cancel: cancel,\n remove: remove,\n destroy: destroy,\n canMove: canMove,\n dragging: false\n });\n if (o.removeOnSpill === true) {\n drake.on('over', spillOver).on('out', spillOut);\n }\n events();\n return drake;\n function isContainer(el) {\n return drake.containers.indexOf(el) !== -1 || o.isContainer(el);\n }\n function events(remove) {\n var op = remove ? 'remove' : 'add';\n touchy(documentElement, op, 'mousedown', grab);\n touchy(documentElement, op, 'mouseup', release);\n }\n function eventualMovements(remove) {\n var op = remove ? 'remove' : 'add';\n touchy(documentElement, op, 'mousemove', startBecauseMouseMoved);\n }\n function movements(remove) {\n var op = remove ? 'remove' : 'add';\n crossvent[op](documentElement, 'selectstart', preventGrabbed); // IE8\n crossvent[op](documentElement, 'click', preventGrabbed);\n }\n function destroy() {\n events(true);\n release({});\n }\n function preventGrabbed(e) {\n if (_grabbed) {\n e.preventDefault();\n }\n }\n function grab(e) {\n _moveX = e.clientX;\n _moveY = e.clientY;\n var ignore = whichMouseButton(e) !== 1 || e.metaKey || e.ctrlKey;\n if (ignore) {\n return; // we only care about honest-to-god left clicks and touch events\n }\n\n var item = e.target;\n var context = canStart(item);\n if (!context) {\n return;\n }\n _grabbed = context;\n eventualMovements();\n if (e.type === 'mousedown') {\n if (isInput(item)) {\n // see also: https://github.com/bevacqua/dragula/issues/208\n item.focus(); // fixes https://github.com/bevacqua/dragula/issues/176\n } else {\n e.preventDefault(); // fixes https://github.com/bevacqua/dragula/issues/155\n }\n }\n }\n\n function startBecauseMouseMoved(e) {\n if (!_grabbed) {\n return;\n }\n if (whichMouseButton(e) === 0) {\n release({});\n return; // when text is selected on an input and then dragged, mouseup doesn't fire. this is our only hope\n }\n\n // truthy check fixes #239, equality fixes #207, fixes #501\n if (e.clientX !== void 0 && Math.abs(e.clientX - _moveX) <= (o.slideFactorX || 0) && e.clientY !== void 0 && Math.abs(e.clientY - _moveY) <= (o.slideFactorY || 0)) {\n return;\n }\n if (o.ignoreInputTextSelection) {\n var clientX = getCoord('clientX', e) || 0;\n var clientY = getCoord('clientY', e) || 0;\n var elementBehindCursor = doc.elementFromPoint(clientX, clientY);\n if (isInput(elementBehindCursor)) {\n return;\n }\n }\n var grabbed = _grabbed; // call to end() unsets _grabbed\n eventualMovements(true);\n movements();\n end();\n start(grabbed);\n var offset = getOffset(_item);\n _offsetX = getCoord('pageX', e) - offset.left;\n _offsetY = getCoord('pageY', e) - offset.top;\n classes.add(_copy || _item, 'gu-transit');\n renderMirrorImage();\n drag(e);\n }\n function canStart(item) {\n if (drake.dragging && _mirror) {\n return;\n }\n if (isContainer(item)) {\n return; // don't drag container itself\n }\n\n var handle = item;\n while (getParent(item) && isContainer(getParent(item)) === false) {\n if (o.invalid(item, handle)) {\n return;\n }\n item = getParent(item); // drag target should be a top element\n if (!item) {\n return;\n }\n }\n var source = getParent(item);\n if (!source) {\n return;\n }\n if (o.invalid(item, handle)) {\n return;\n }\n var movable = o.moves(item, source, handle, nextEl(item));\n if (!movable) {\n return;\n }\n return {\n item: item,\n source: source\n };\n }\n function canMove(item) {\n return !!canStart(item);\n }\n function manualStart(item) {\n var context = canStart(item);\n if (context) {\n start(context);\n }\n }\n function start(context) {\n if (isCopy(context.item, context.source)) {\n _copy = context.item.cloneNode(true);\n drake.emit('cloned', _copy, context.item, 'copy');\n }\n _source = context.source;\n _item = context.item;\n _initialSibling = _currentSibling = nextEl(context.item);\n drake.dragging = true;\n drake.emit('drag', _item, _source);\n }\n function invalidTarget() {\n return false;\n }\n function end() {\n if (!drake.dragging) {\n return;\n }\n var item = _copy || _item;\n drop(item, getParent(item));\n }\n function ungrab() {\n _grabbed = false;\n eventualMovements(true);\n movements(true);\n }\n function release(e) {\n ungrab();\n if (!drake.dragging) {\n return;\n }\n var item = _copy || _item;\n var clientX = getCoord('clientX', e) || 0;\n var clientY = getCoord('clientY', e) || 0;\n var elementBehindCursor = getElementBehindPoint(_mirror, clientX, clientY);\n var dropTarget = findDropTarget(elementBehindCursor, clientX, clientY);\n if (dropTarget && (_copy && o.copySortSource || !_copy || dropTarget !== _source)) {\n drop(item, dropTarget);\n } else if (o.removeOnSpill) {\n remove();\n } else {\n cancel();\n }\n }\n function drop(item, target) {\n var parent = getParent(item);\n if (_copy && o.copySortSource && target === _source) {\n parent.removeChild(_item);\n }\n if (isInitialPlacement(target)) {\n drake.emit('cancel', item, _source, _source);\n } else {\n drake.emit('drop', item, target, _source, _currentSibling);\n }\n cleanup();\n }\n function remove() {\n if (!drake.dragging) {\n return;\n }\n var item = _copy || _item;\n var parent = getParent(item);\n if (parent) {\n parent.removeChild(item);\n }\n drake.emit(_copy ? 'cancel' : 'remove', item, parent, _source);\n cleanup();\n }\n function cancel(revert) {\n if (!drake.dragging) {\n return;\n }\n var reverts = arguments.length > 0 ? revert : o.revertOnSpill;\n var item = _copy || _item;\n var parent = getParent(item);\n var initial = isInitialPlacement(parent);\n if (initial === false && reverts) {\n if (_copy) {\n if (parent) {\n parent.removeChild(_copy);\n }\n } else {\n _source.insertBefore(item, _initialSibling);\n }\n }\n if (initial || reverts) {\n drake.emit('cancel', item, _source, _source);\n } else {\n drake.emit('drop', item, parent, _source, _currentSibling);\n }\n cleanup();\n }\n function cleanup() {\n var item = _copy || _item;\n ungrab();\n removeMirrorImage();\n if (item) {\n classes.rm(item, 'gu-transit');\n }\n if (_renderTimer) {\n clearTimeout(_renderTimer);\n }\n drake.dragging = false;\n if (_lastDropTarget) {\n drake.emit('out', item, _lastDropTarget, _source);\n }\n drake.emit('dragend', item);\n _source = _item = _copy = _initialSibling = _currentSibling = _renderTimer = _lastDropTarget = null;\n }\n function isInitialPlacement(target, s) {\n var sibling;\n if (s !== void 0) {\n sibling = s;\n } else if (_mirror) {\n sibling = _currentSibling;\n } else {\n sibling = nextEl(_copy || _item);\n }\n return target === _source && sibling === _initialSibling;\n }\n function findDropTarget(elementBehindCursor, clientX, clientY) {\n var target = elementBehindCursor;\n while (target && !accepted()) {\n target = getParent(target);\n }\n return target;\n function accepted() {\n var droppable = isContainer(target);\n if (droppable === false) {\n return false;\n }\n var immediate = getImmediateChild(target, elementBehindCursor);\n var reference = getReference(target, immediate, clientX, clientY);\n var initial = isInitialPlacement(target, reference);\n if (initial) {\n return true; // should always be able to drop it right back where it was\n }\n\n return o.accepts(_item, target, _source, reference);\n }\n }\n function drag(e) {\n if (!_mirror) {\n return;\n }\n e.preventDefault();\n var clientX = getCoord('clientX', e) || 0;\n var clientY = getCoord('clientY', e) || 0;\n var x = clientX - _offsetX;\n var y = clientY - _offsetY;\n _mirror.style.left = x + 'px';\n _mirror.style.top = y + 'px';\n var item = _copy || _item;\n var elementBehindCursor = getElementBehindPoint(_mirror, clientX, clientY);\n var dropTarget = findDropTarget(elementBehindCursor, clientX, clientY);\n var changed = dropTarget !== null && dropTarget !== _lastDropTarget;\n if (changed || dropTarget === null) {\n out();\n _lastDropTarget = dropTarget;\n over();\n }\n var parent = getParent(item);\n if (dropTarget === _source && _copy && !o.copySortSource) {\n if (parent) {\n parent.removeChild(item);\n }\n return;\n }\n var reference;\n var immediate = getImmediateChild(dropTarget, elementBehindCursor);\n if (immediate !== null) {\n reference = getReference(dropTarget, immediate, clientX, clientY);\n } else if (o.revertOnSpill === true && !_copy) {\n reference = _initialSibling;\n dropTarget = _source;\n } else {\n if (_copy && parent) {\n parent.removeChild(item);\n }\n return;\n }\n if (reference === null && changed || reference !== item && reference !== nextEl(item)) {\n _currentSibling = reference;\n dropTarget.insertBefore(item, reference);\n drake.emit('shadow', item, dropTarget, _source);\n }\n function moved(type) {\n drake.emit(type, item, _lastDropTarget, _source);\n }\n function over() {\n if (changed) {\n moved('over');\n }\n }\n function out() {\n if (_lastDropTarget) {\n moved('out');\n }\n }\n }\n function spillOver(el) {\n classes.rm(el, 'gu-hide');\n }\n function spillOut(el) {\n if (drake.dragging) {\n classes.add(el, 'gu-hide');\n }\n }\n function renderMirrorImage() {\n if (_mirror) {\n return;\n }\n var rect = _item.getBoundingClientRect();\n _mirror = _item.cloneNode(true);\n _mirror.style.width = getRectWidth(rect) + 'px';\n _mirror.style.height = getRectHeight(rect) + 'px';\n classes.rm(_mirror, 'gu-transit');\n classes.add(_mirror, 'gu-mirror');\n o.mirrorContainer.appendChild(_mirror);\n touchy(documentElement, 'add', 'mousemove', drag);\n classes.add(o.mirrorContainer, 'gu-unselectable');\n drake.emit('cloned', _mirror, _item, 'mirror');\n }\n function removeMirrorImage() {\n if (_mirror) {\n classes.rm(o.mirrorContainer, 'gu-unselectable');\n touchy(documentElement, 'remove', 'mousemove', drag);\n getParent(_mirror).removeChild(_mirror);\n _mirror = null;\n }\n }\n function getImmediateChild(dropTarget, target) {\n var immediate = target;\n while (immediate !== dropTarget && getParent(immediate) !== dropTarget) {\n immediate = getParent(immediate);\n }\n if (immediate === documentElement) {\n return null;\n }\n return immediate;\n }\n function getReference(dropTarget, target, x, y) {\n var horizontal = o.direction === 'horizontal';\n var reference = target !== dropTarget ? inside() : outside();\n return reference;\n function outside() {\n // slower, but able to figure out any position\n var len = dropTarget.children.length;\n var i;\n var el;\n var rect;\n for (i = 0; i < len; i++) {\n el = dropTarget.children[i];\n rect = el.getBoundingClientRect();\n if (horizontal && rect.left + rect.width / 2 > x) {\n return el;\n }\n if (!horizontal && rect.top + rect.height / 2 > y) {\n return el;\n }\n }\n return null;\n }\n function inside() {\n // faster, but only available if dropped inside a child element\n var rect = target.getBoundingClientRect();\n if (horizontal) {\n return resolve(x > rect.left + getRectWidth(rect) / 2);\n }\n return resolve(y > rect.top + getRectHeight(rect) / 2);\n }\n function resolve(after) {\n return after ? nextEl(target) : target;\n }\n }\n function isCopy(item, container) {\n return typeof o.copy === 'boolean' ? o.copy : o.copy(item, container);\n }\n}\nfunction touchy(el, op, type, fn) {\n var touch = {\n mouseup: 'touchend',\n mousedown: 'touchstart',\n mousemove: 'touchmove'\n };\n var pointers = {\n mouseup: 'pointerup',\n mousedown: 'pointerdown',\n mousemove: 'pointermove'\n };\n var microsoft = {\n mouseup: 'MSPointerUp',\n mousedown: 'MSPointerDown',\n mousemove: 'MSPointerMove'\n };\n if (global.navigator.pointerEnabled) {\n crossvent[op](el, pointers[type], fn);\n } else if (global.navigator.msPointerEnabled) {\n crossvent[op](el, microsoft[type], fn);\n } else {\n crossvent[op](el, touch[type], fn);\n crossvent[op](el, type, fn);\n }\n}\nfunction whichMouseButton(e) {\n if (e.touches !== void 0) {\n return e.touches.length;\n }\n if (e.which !== void 0 && e.which !== 0) {\n return e.which;\n } // see https://github.com/bevacqua/dragula/issues/261\n if (e.buttons !== void 0) {\n return e.buttons;\n }\n var button = e.button;\n if (button !== void 0) {\n // see https://github.com/jquery/jquery/blob/99e8ff1baa7ae341e94bb89c3e84570c7c3ad9ea/src/event.js#L573-L575\n return button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n }\n}\nfunction getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + getScroll('scrollLeft', 'pageXOffset'),\n top: rect.top + getScroll('scrollTop', 'pageYOffset')\n };\n}\nfunction getScroll(scrollProp, offsetProp) {\n if (typeof global[offsetProp] !== 'undefined') {\n return global[offsetProp];\n }\n if (documentElement.clientHeight) {\n return documentElement[scrollProp];\n }\n return doc.body[scrollProp];\n}\nfunction getElementBehindPoint(point, x, y) {\n point = point || {};\n var state = point.className || '';\n var el;\n point.className += ' gu-hide';\n el = doc.elementFromPoint(x, y);\n point.className = state;\n return el;\n}\nfunction never() {\n return false;\n}\nfunction always() {\n return true;\n}\nfunction getRectWidth(rect) {\n return rect.width || rect.right - rect.left;\n}\nfunction getRectHeight(rect) {\n return rect.height || rect.bottom - rect.top;\n}\nfunction getParent(el) {\n return el.parentNode === doc ? null : el.parentNode;\n}\nfunction isInput(el) {\n return el.tagName === 'INPUT' || el.tagName === 'TEXTAREA' || el.tagName === 'SELECT' || isEditable(el);\n}\nfunction isEditable(el) {\n if (!el) {\n return false;\n } // no parents were editable\n if (el.contentEditable === 'false') {\n return false;\n } // stop the lookup\n if (el.contentEditable === 'true') {\n return true;\n } // found a contentEditable element in the chain\n return isEditable(getParent(el)); // contentEditable is set to 'inherit'\n}\n\nfunction nextEl(el) {\n return el.nextElementSibling || manually();\n function manually() {\n var sibling = el;\n do {\n sibling = sibling.nextSibling;\n } while (sibling && sibling.nodeType !== 1);\n return sibling;\n }\n}\nfunction getEventHost(e) {\n // on touchend event, we have to use `e.changedTouches`\n // see http://stackoverflow.com/questions/7192563/touchend-event-properties\n // see https://github.com/bevacqua/dragula/issues/34\n if (e.targetTouches && e.targetTouches.length) {\n return e.targetTouches[0];\n }\n if (e.changedTouches && e.changedTouches.length) {\n return e.changedTouches[0];\n }\n return e;\n}\nfunction getCoord(coord, e) {\n var host = getEventHost(e);\n var missMap = {\n pageX: 'clientX',\n // IE8\n pageY: 'clientY' // IE8\n };\n\n if (coord in missMap && !(coord in host) && missMap[coord] in host) {\n coord = missMap[coord];\n }\n return host[coord];\n}\nmodule.exports = dragula;","// Generated by CoffeeScript 1.8.0\n(function () {\n var Dragster,\n __bind = function (fn, me) {\n return function () {\n return fn.apply(me, arguments);\n };\n };\n Dragster = function () {\n function Dragster(el) {\n this.el = el;\n this.dragleave = __bind(this.dragleave, this);\n this.dragenter = __bind(this.dragenter, this);\n if (this.supportsEventConstructors()) {\n this.first = false;\n this.second = false;\n this.el.addEventListener(\"dragenter\", this.dragenter, false);\n this.el.addEventListener(\"dragleave\", this.dragleave, false);\n }\n }\n Dragster.prototype.dragenter = function (event) {\n if (this.first) {\n return this.second = true;\n } else {\n this.first = true;\n return this.el.dispatchEvent(new CustomEvent(\"dragster:enter\", {\n bubbles: true,\n cancelable: true,\n detail: {\n dataTransfer: event.dataTransfer\n }\n }));\n }\n };\n Dragster.prototype.dragleave = function (event) {\n if (this.second) {\n this.second = false;\n } else if (this.first) {\n this.first = false;\n }\n if (!this.first && !this.second) {\n return this.el.dispatchEvent(new CustomEvent(\"dragster:leave\", {\n bubbles: true,\n cancelable: true,\n detail: {\n dataTransfer: event.dataTransfer\n }\n }));\n }\n };\n Dragster.prototype.removeListeners = function () {\n this.el.removeEventListener(\"dragenter\", this.dragenter, false);\n return this.el.removeEventListener(\"dragleave\", this.dragleave, false);\n };\n Dragster.prototype.supportsEventConstructors = function () {\n try {\n new CustomEvent(\"z\");\n } catch (_error) {\n return false;\n }\n return true;\n };\n Dragster.prototype.reset = function () {\n this.first = false;\n return this.second = false;\n };\n return Dragster;\n }();\n window.Dragster = Dragster;\n}).call(this);","/*!\n * jQuery JavaScript Library v3.6.3\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: 2022-12-20T21:28Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\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\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof 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 var version = \"3.6.3\",\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.9\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: 2022-12-19\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n pushNative = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function (list, elem) {\n var i = 0,\n len = list.length;\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" + \"ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5]\n // or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rhtml = /HTML$/i,\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n return nonHex ?\n // Strip the backslash prefix from a non-hex escape sequence\n nonHex :\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android<4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ?\n // Leverage slice if possible\n function (target, els) {\n pushNative.apply(target, slice.call(els));\n } :\n // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0;\n\n // Can't trust NodeList.length\n while (target[j++] = els[i++]) {}\n target.length = j - 1;\n }\n };\n }\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (support.qsa && !nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && (\n // Support: IE 8 only\n // Exclude object elements\n nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\")) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n if (newContext !== context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n // `qSA` may not throw for unrecognized parts using forgiving parsing:\n // https://drafts.csswg.org/selectors/#forgiving-selector\n // like the `:has()` pseudo-class:\n // https://drafts.csswg.org/selectors/#relational\n // `CSS.supports` is still expected to return `false` then:\n // https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn\n // https://drafts.csswg.org/css-conditional-4/#dfn-support-selector\n if (support.cssSupportsSelector &&\n // eslint-disable-next-line no-undef\n !CSS.supports(\"selector(:is(\" + newSelector + \"))\")) {\n // Support: IE 11+\n // Throw to get to the same code path as an error directly in qSA.\n // Note: once we only support browser supporting\n // `CSS.supports('selector(...)')`, we can most likely drop\n // the `try-catch`. IE doesn't implement the API.\n throw new Error();\n }\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return 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 */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\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 */\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\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 */\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex;\n\n // Use IE sourceIndex if available on both nodes\n if (diff) {\n return diff;\n }\n\n // Check if b follows a\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n return a ? 1 : -1;\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\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 */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n /* jshint -W018 */\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\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 */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n // Expose support vars for convenience\n support = 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 */\n isXML = Sizzle.isXML = function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Support: IE <=8\n // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n // https://bugs.jquery.com/ticket/4833\n return !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 */\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document);\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false);\n\n // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n }\n\n // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n // Safari 4 - 5 only, Opera <=11.6 - 12.x only\n // IE/Edge & older browsers don't support the :scope pseudo-class.\n // Support: Safari 6.0 only\n // Safari 6.0 supports :scope but it's an alias of :root there.\n support.scope = assert(function (el) {\n docElem.appendChild(el).appendChild(document.createElement(\"div\"));\n return typeof el.querySelectorAll !== \"undefined\" && !el.querySelectorAll(\":scope fieldset div\").length;\n });\n\n // Support: Chrome 105+, Firefox 104+, Safari 15.4+\n // Make sure forgiving mode is not used in `CSS.supports( \"selector(...)\" )`.\n //\n // `:is()` uses a forgiving selector list as an argument and is widely\n // implemented, so it's a good one to test against.\n support.cssSupportsSelector = assert(function () {\n /* eslint-disable no-undef */\n\n return CSS.supports(\"selector(*)\") &&\n // Support: Firefox 78-81 only\n // In old Firefox, `:is()` didn't use forgiving parsing. In that case,\n // fail this test as there's no selector to test against that.\n // `CSS.supports` uses unforgiving parsing\n document.querySelectorAll(\":is(:jqfake)\") &&\n // `*` is needed as Safari & newer Chrome implemented something in between\n // for `:has()` - it throws in `qSA` if it only contains an unsupported\n // argument but multiple ones, one of which is supported, are fine.\n // We want to play safe in case `:is()` gets the same treatment.\n !CSS.supports(\"selector(:is(*,:jqfake))\");\n\n /* eslint-enable */\n });\n\n /* Attributes\n ---------------------------------------------------------------------- */\n\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n\n // Check if getElementsByTagName(\"*\") returns only elements\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n });\n\n // Support: IE<9\n support.getElementsByClassName = rnative.test(document.getElementsByClassName);\n\n // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag);\n\n // Filter out possible comments\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n return tmp;\n }\n return results;\n };\n\n // Class\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n rbuggyMatches = [];\n\n // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n rbuggyQSA = [];\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n\n // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n docElem.appendChild(el).innerHTML = \"\" + \"\";\n\n // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n\n // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n\n // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Firefox <=3.6 - 5 only\n // Old Firefox doesn't throw on a badly-escaped identifier.\n el.querySelectorAll(\"\\\\\\f\");\n rbuggyQSA.push(\"[\\\\r\\\\n\\\\f]\");\n });\n assert(function (el) {\n el.innerHTML = \"\" + \"\";\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE8\n // Enforce case-sensitivity of name attribute\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n }\n\n // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n docElem.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: Opera 10 - 11 only\n // Opera 10-11 does not throw on post-comma invalid pseudos\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\");\n\n // This should fail with an exception\n // Gecko does not error, returns false instead\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n if (!support.cssSupportsSelector) {\n // Support: Chrome 105+, Safari 15.4+\n // `:has()` uses a forgiving selector list as an argument so our regular\n // `try-catch` mechanism fails to catch `:has()` with arguments not supported\n // natively like `:has(:contains(\"Foo\"))`. Where supported & spec-compliant,\n // we now use `CSS.supports(\"selector(:is(SELECTOR_TO_BE_TESTED))\")`, but\n // outside that we mark `:has` as buggy.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n\n /* Contains\n ---------------------------------------------------------------------- */\n hasCompare = rnative.test(docElem.compareDocumentPosition);\n\n // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n // Support: IE <9 only\n // IE doesn't have `contains` on `document` so we need to check for\n // `documentElement` presence.\n // We need to fall back to `a` when `documentElement` is missing\n // as `ownerDocument` of elements within `