From 6ecd1c626e4129daf45a47b44c2e2eae60a09fa3 Mon Sep 17 00:00:00 2001 From: Rohit Sharma Date: Tue, 16 Mar 2021 10:51:04 +0530 Subject: [PATCH 01/38] Change the name of the `Offcanvas` constructor (#33261) --- build/build-plugins.js | 4 +-- js/index.esm.js | 4 +-- js/index.umd.js | 4 +-- js/src/offcanvas.js | 10 +++--- js/tests/unit/offcanvas.spec.js | 58 ++++++++++++++++----------------- 5 files changed, 40 insertions(+), 40 deletions(-) diff --git a/build/build-plugins.js b/build/build-plugins.js index 7175df4dd562..7fd58bcb647f 100644 --- a/build/build-plugins.js +++ b/build/build-plugins.js @@ -35,7 +35,7 @@ const bsPlugins = { Collapse: path.resolve(__dirname, '../js/src/collapse.js'), Dropdown: path.resolve(__dirname, '../js/src/dropdown.js'), Modal: path.resolve(__dirname, '../js/src/modal.js'), - OffCanvas: path.resolve(__dirname, '../js/src/offcanvas.js'), + Offcanvas: path.resolve(__dirname, '../js/src/offcanvas.js'), Popover: path.resolve(__dirname, '../js/src/popover.js'), ScrollSpy: path.resolve(__dirname, '../js/src/scrollspy.js'), Tab: path.resolve(__dirname, '../js/src/tab.js'), @@ -72,7 +72,7 @@ const getConfigByPluginKey = pluginKey => { } } - if (pluginKey === 'Alert' || pluginKey === 'Tab' || pluginKey === 'OffCanvas') { + if (pluginKey === 'Alert' || pluginKey === 'Tab' || pluginKey === 'Offcanvas') { return defaultPluginConfig } diff --git a/js/index.esm.js b/js/index.esm.js index c041beffe255..b95e63fabc11 100644 --- a/js/index.esm.js +++ b/js/index.esm.js @@ -11,7 +11,7 @@ import Carousel from './src/carousel' import Collapse from './src/collapse' import Dropdown from './src/dropdown' import Modal from './src/modal' -import OffCanvas from './src/offcanvas' +import Offcanvas from './src/offcanvas' import Popover from './src/popover' import ScrollSpy from './src/scrollspy' import Tab from './src/tab' @@ -25,7 +25,7 @@ export { Collapse, Dropdown, Modal, - OffCanvas, + Offcanvas, Popover, ScrollSpy, Tab, diff --git a/js/index.umd.js b/js/index.umd.js index a99a3be896a3..8e52cca0f191 100644 --- a/js/index.umd.js +++ b/js/index.umd.js @@ -11,7 +11,7 @@ import Carousel from './src/carousel' import Collapse from './src/collapse' import Dropdown from './src/dropdown' import Modal from './src/modal' -import OffCanvas from './src/offcanvas' +import Offcanvas from './src/offcanvas' import Popover from './src/popover' import ScrollSpy from './src/scrollspy' import Tab from './src/tab' @@ -25,7 +25,7 @@ export default { Collapse, Dropdown, Modal, - OffCanvas, + Offcanvas, Popover, ScrollSpy, Tab, diff --git a/js/src/offcanvas.js b/js/src/offcanvas.js index 148f003e9634..f4927aacd68f 100644 --- a/js/src/offcanvas.js +++ b/js/src/offcanvas.js @@ -54,7 +54,7 @@ const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]' * ------------------------------------------------------------------------ */ -class OffCanvas extends BaseComponent { +class Offcanvas extends BaseComponent { constructor(element) { super(element) @@ -181,7 +181,7 @@ class OffCanvas extends BaseComponent { static jQueryInterface(config) { return this.each(function () { - const data = Data.get(this, DATA_KEY) || new OffCanvas(this) + const data = Data.get(this, DATA_KEY) || new Offcanvas(this) if (typeof config === 'string') { if (typeof data[config] === 'undefined') { @@ -224,7 +224,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( return } - const data = Data.get(target, DATA_KEY) || new OffCanvas(target) + const data = Data.get(target, DATA_KEY) || new Offcanvas(target) data.toggle(this) }) @@ -234,6 +234,6 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( * ------------------------------------------------------------------------ */ -defineJQueryPlugin(NAME, OffCanvas) +defineJQueryPlugin(NAME, Offcanvas) -export default OffCanvas +export default Offcanvas diff --git a/js/tests/unit/offcanvas.spec.js b/js/tests/unit/offcanvas.spec.js index d07c0c61021f..07a7cf682b33 100644 --- a/js/tests/unit/offcanvas.spec.js +++ b/js/tests/unit/offcanvas.spec.js @@ -1,10 +1,10 @@ -import OffCanvas from '../../src/offcanvas' +import Offcanvas from '../../src/offcanvas' import EventHandler from '../../src/dom/event-handler' /** Test helpers */ import { clearFixture, getFixture, jQueryMock, createEvent } from '../helpers/fixture' -describe('OffCanvas', () => { +describe('Offcanvas', () => { let fixtureEl beforeAll(() => { @@ -18,7 +18,7 @@ describe('OffCanvas', () => { describe('VERSION', () => { it('should return plugin version', () => { - expect(OffCanvas.VERSION).toEqual(jasmine.any(String)) + expect(Offcanvas.VERSION).toEqual(jasmine.any(String)) }) }) @@ -32,7 +32,7 @@ describe('OffCanvas', () => { const offCanvasEl = fixtureEl.querySelector('.offcanvas') const closeEl = fixtureEl.querySelector('a') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) spyOn(offCanvas, 'hide') @@ -45,7 +45,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('.offcanvas') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) const keyDownEsc = createEvent('keydown') keyDownEsc.key = 'Escape' @@ -60,7 +60,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('.offcanvas') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) const keydownTab = createEvent('keydown') keydownTab.key = 'Tab' @@ -77,7 +77,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('.offcanvas') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) spyOn(offCanvas, 'show') @@ -90,7 +90,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('.show') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) spyOn(offCanvas, 'hide') @@ -107,7 +107,7 @@ describe('OffCanvas', () => { spyOn(EventHandler, 'trigger') const offCanvasEl = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) offCanvas.show() @@ -118,7 +118,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) offCanvasEl.addEventListener('shown.bs.offcanvas', () => { expect(offCanvasEl.classList.contains('show')).toEqual(true) @@ -132,7 +132,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) const expectEnd = () => { setTimeout(() => { @@ -161,7 +161,7 @@ describe('OffCanvas', () => { spyOn(EventHandler, 'trigger') const offCanvasEl = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) offCanvas.hide() @@ -172,7 +172,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { expect(offCanvasEl.classList.contains('show')).toEqual(false) @@ -186,7 +186,7 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(offCanvasEl) + const offCanvas = new Offcanvas(offCanvasEl) const expectEnd = () => { setTimeout(() => { @@ -235,11 +235,11 @@ describe('OffCanvas', () => { const target = fixtureEl.querySelector('a') - spyOn(OffCanvas.prototype, 'toggle') + spyOn(Offcanvas.prototype, 'toggle') target.click() - expect(OffCanvas.prototype.toggle).not.toHaveBeenCalled() + expect(Offcanvas.prototype.toggle).not.toHaveBeenCalled() }) }) @@ -249,26 +249,26 @@ describe('OffCanvas', () => { const div = fixtureEl.querySelector('div') - jQueryMock.fn.offcanvas = OffCanvas.jQueryInterface + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface jQueryMock.elements = [div] jQueryMock.fn.offcanvas.call(jQueryMock) - expect(OffCanvas.getInstance(div)).toBeDefined() + expect(Offcanvas.getInstance(div)).toBeDefined() }) it('should not re create an offcanvas', () => { fixtureEl.innerHTML = '
' const div = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(div) + const offCanvas = new Offcanvas(div) - jQueryMock.fn.offcanvas = OffCanvas.jQueryInterface + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface jQueryMock.elements = [div] jQueryMock.fn.offcanvas.call(jQueryMock) - expect(OffCanvas.getInstance(div)).toEqual(offCanvas) + expect(Offcanvas.getInstance(div)).toEqual(offCanvas) }) it('should throw error on undefined method', () => { @@ -277,7 +277,7 @@ describe('OffCanvas', () => { const div = fixtureEl.querySelector('div') const action = 'undefinedMethod' - jQueryMock.fn.offcanvas = OffCanvas.jQueryInterface + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface jQueryMock.elements = [div] try { @@ -292,13 +292,13 @@ describe('OffCanvas', () => { const div = fixtureEl.querySelector('div') - spyOn(OffCanvas.prototype, 'show') + spyOn(Offcanvas.prototype, 'show') - jQueryMock.fn.offcanvas = OffCanvas.jQueryInterface + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface jQueryMock.elements = [div] jQueryMock.fn.offcanvas.call(jQueryMock, 'show') - expect(OffCanvas.prototype.show).toHaveBeenCalled() + expect(Offcanvas.prototype.show).toHaveBeenCalled() }) }) @@ -307,10 +307,10 @@ describe('OffCanvas', () => { fixtureEl.innerHTML = '
' const div = fixtureEl.querySelector('div') - const offCanvas = new OffCanvas(div) + const offCanvas = new Offcanvas(div) - expect(OffCanvas.getInstance(div)).toEqual(offCanvas) - expect(OffCanvas.getInstance(div)).toBeInstanceOf(OffCanvas) + expect(Offcanvas.getInstance(div)).toEqual(offCanvas) + expect(Offcanvas.getInstance(div)).toBeInstanceOf(Offcanvas) }) it('should return null when there is no offcanvas instance', () => { @@ -318,7 +318,7 @@ describe('OffCanvas', () => { const div = fixtureEl.querySelector('div') - expect(OffCanvas.getInstance(div)).toEqual(null) + expect(Offcanvas.getInstance(div)).toEqual(null) }) }) }) From d491c29aa005177ef148c40d4b7b0a3decc7edef Mon Sep 17 00:00:00 2001 From: Ryan Berliner Date: Sat, 6 Mar 2021 03:35:28 +0200 Subject: [PATCH 02/38] prevent tooltip from being deleted on quick re-activations --- js/src/tooltip.js | 4 ++++ js/tests/unit/tooltip.spec.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 6f33245f8ee0..e9f9bfff1b44 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -329,6 +329,10 @@ class Tooltip extends BaseComponent { const tip = this.getTipElement() const complete = () => { + if (this._isWithActiveTrigger()) { + return + } + if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { tip.parentNode.removeChild(tip) } diff --git a/js/tests/unit/tooltip.spec.js b/js/tests/unit/tooltip.spec.js index 7bf6aa3ab837..41f73d6d8a7d 100644 --- a/js/tests/unit/tooltip.spec.js +++ b/js/tests/unit/tooltip.spec.js @@ -708,6 +708,35 @@ describe('Tooltip', () => { tooltipEl.dispatchEvent(createEvent('mouseover')) }) + it('should not hide tooltip if leave event occurs and enter event occurs during hide transition', done => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.15s', + transitionDelay: '0s' + }) + + setTimeout(() => { + expect(tooltip._popper).not.toBeNull() + tooltipEl.dispatchEvent(createEvent('mouseout')) + + setTimeout(() => { + expect(tooltip.getTipElement().classList.contains('show')).toEqual(false) + tooltipEl.dispatchEvent(createEvent('mouseover')) + }, 100) + + setTimeout(() => { + expect(tooltip._popper).not.toBeNull() + done() + }, 200) + }, 0) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + it('should show a tooltip with custom class provided in data attributes', done => { fixtureEl.innerHTML = '' From 6ef70b342c27445685715f51cfcafb719356870f Mon Sep 17 00:00:00 2001 From: Ryan Berliner Date: Sat, 6 Mar 2021 23:57:23 +0200 Subject: [PATCH 03/38] prevent quick interactions from misplacing tooltips --- js/src/tooltip.js | 6 +++++- js/tests/unit/tooltip.spec.js | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/js/src/tooltip.js b/js/src/tooltip.js index e9f9bfff1b44..857f72c8ad2c 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -283,6 +283,10 @@ class Tooltip extends BaseComponent { EventHandler.trigger(this._element, this.constructor.Event.INSERTED) + if (this._popper) { + this._popper.destroy() + } + this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)) tip.classList.add(CLASS_NAME_SHOW) @@ -650,7 +654,7 @@ class Tooltip extends BaseComponent { if (event) { context._activeTrigger[ event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER - ] = false + ] = context._element.contains(event.relatedTarget) } if (context._isWithActiveTrigger()) { diff --git a/js/tests/unit/tooltip.spec.js b/js/tests/unit/tooltip.spec.js index 41f73d6d8a7d..1cb301c151aa 100644 --- a/js/tests/unit/tooltip.spec.js +++ b/js/tests/unit/tooltip.spec.js @@ -708,8 +708,9 @@ describe('Tooltip', () => { tooltipEl.dispatchEvent(createEvent('mouseover')) }) - it('should not hide tooltip if leave event occurs and enter event occurs during hide transition', done => { - fixtureEl.innerHTML = '' + it('should properly maintain tooltip state if leave event occurs and enter event occurs during hide transition', done => { + // Style this tooltip to give it plenty of room for popper to do what it wants + fixtureEl.innerHTML = 'Trigger' const tooltipEl = fixtureEl.querySelector('a') const tooltip = new Tooltip(tooltipEl) @@ -721,6 +722,7 @@ describe('Tooltip', () => { setTimeout(() => { expect(tooltip._popper).not.toBeNull() + expect(tooltip.getTipElement().getAttribute('data-popper-placement')).toBe('top') tooltipEl.dispatchEvent(createEvent('mouseout')) setTimeout(() => { @@ -730,6 +732,7 @@ describe('Tooltip', () => { setTimeout(() => { expect(tooltip._popper).not.toBeNull() + expect(tooltip.getTipElement().getAttribute('data-popper-placement')).toBe('top') done() }, 200) }, 0) From 72d23135799059d4282ea5764455f92f39ced5a5 Mon Sep 17 00:00:00 2001 From: Ryan Berliner Date: Sun, 7 Mar 2021 08:28:41 -0500 Subject: [PATCH 04/38] reuse existing popper on show during tooltip fadeout --- js/src/tooltip.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/src/tooltip.js b/js/src/tooltip.js index 857f72c8ad2c..de7dcca69391 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -284,11 +284,11 @@ class Tooltip extends BaseComponent { EventHandler.trigger(this._element, this.constructor.Event.INSERTED) if (this._popper) { - this._popper.destroy() + this._popper.update() + } else { + this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)) } - this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment)) - tip.classList.add(CLASS_NAME_SHOW) const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass From 99b2c0b390660b2032c3129b8ebff02fa1e034c9 Mon Sep 17 00:00:00 2001 From: Ryan Berliner Date: Sun, 7 Mar 2021 17:09:17 +0200 Subject: [PATCH 05/38] only trigger tooltip inserted event on true dom insert --- js/src/tooltip.js | 3 +- js/tests/unit/tooltip.spec.js | 62 +++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/js/src/tooltip.js b/js/src/tooltip.js index de7dcca69391..979bd077382c 100644 --- a/js/src/tooltip.js +++ b/js/src/tooltip.js @@ -279,10 +279,9 @@ class Tooltip extends BaseComponent { if (!this._element.ownerDocument.documentElement.contains(this.tip)) { container.appendChild(tip) + EventHandler.trigger(this._element, this.constructor.Event.INSERTED) } - EventHandler.trigger(this._element, this.constructor.Event.INSERTED) - if (this._popper) { this._popper.update() } else { diff --git a/js/tests/unit/tooltip.spec.js b/js/tests/unit/tooltip.spec.js index 1cb301c151aa..f9d97e3f7ed4 100644 --- a/js/tests/unit/tooltip.spec.js +++ b/js/tests/unit/tooltip.spec.js @@ -708,6 +708,37 @@ describe('Tooltip', () => { tooltipEl.dispatchEvent(createEvent('mouseover')) }) + it('should not hide tooltip if leave event occurs and interaction remains inside trigger', done => { + fixtureEl.innerHTML = [ + '', + 'Trigger', + 'the tooltip', + '' + ] + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + const triggerChild = tooltipEl.querySelector('b') + + spyOn(tooltip, 'hide').and.callThrough() + + tooltipEl.addEventListener('mouseover', () => { + const moveMouseToChildEvent = createEvent('mouseout') + Object.defineProperty(moveMouseToChildEvent, 'relatedTarget', { + value: triggerChild + }) + + tooltipEl.dispatchEvent(moveMouseToChildEvent) + }) + + tooltipEl.addEventListener('mouseout', () => { + expect(tooltip.hide).not.toHaveBeenCalled() + done() + }) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + it('should properly maintain tooltip state if leave event occurs and enter event occurs during hide transition', done => { // Style this tooltip to give it plenty of room for popper to do what it wants fixtureEl.innerHTML = 'Trigger' @@ -740,6 +771,37 @@ describe('Tooltip', () => { tooltipEl.dispatchEvent(createEvent('mouseover')) }) + it('should only trigger inserted event if a new tooltip element was created', done => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.15s', + transitionDelay: '0s' + }) + + const insertedFunc = jasmine.createSpy() + tooltipEl.addEventListener('inserted.bs.tooltip', insertedFunc) + + setTimeout(() => { + expect(insertedFunc).toHaveBeenCalledTimes(1) + tooltip.hide() + + setTimeout(() => { + tooltip.show() + }, 100) + + setTimeout(() => { + expect(insertedFunc).toHaveBeenCalledTimes(1) + done() + }, 200) + }, 0) + + tooltip.show() + }) + it('should show a tooltip with custom class provided in data attributes', done => { fixtureEl.innerHTML = '' From af42557f4a8eb69bd098869d0f29f4c456c95063 Mon Sep 17 00:00:00 2001 From: Anton Date: Tue, 16 Mar 2021 08:49:52 +0300 Subject: [PATCH 06/38] Update modal's `show` method to accept `relatedTarget` as an argument (#33300) Co-authored-by: Rohit Sharma Co-authored-by: XhmikosR --- site/content/docs/5.0/components/modal.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/site/content/docs/5.0/components/modal.md b/site/content/docs/5.0/components/modal.md index 0abe0ce0f2fa..0f11614fdeaf 100644 --- a/site/content/docs/5.0/components/modal.md +++ b/site/content/docs/5.0/components/modal.md @@ -892,6 +892,13 @@ Manually opens a modal. **Returns to the caller before the modal has actually be myModal.show() ``` +Also, you can pass a DOM element as an argument that can be received in the modal events (as the `relatedTarget` property). + +```js +var modalToggle = document.getElementById('toggleMyModal') // relatedTarget +myModal.show(modalToggle) +``` + #### hide Manually hides a modal. **Returns to the caller before the modal has actually been hidden** (i.e. before the `hidden.bs.modal` event occurs). From 8d9c62852a69baa8843a3756a7bb413affe297d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Mar 2021 12:35:45 +0200 Subject: [PATCH 07/38] Bump karma-rollup-preprocessor from 7.0.6 to 7.0.7 (#33373) Bumps [karma-rollup-preprocessor](https://github.com/jlmakes/karma-rollup-preprocessor) from 7.0.6 to 7.0.7. - [Release notes](https://github.com/jlmakes/karma-rollup-preprocessor/releases) - [Changelog](https://github.com/jlmakes/karma-rollup-preprocessor/blob/master/CHANGELOG.md) - [Commits](https://github.com/jlmakes/karma-rollup-preprocessor/compare/7.0.6...7.0.7) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 59f9206edb53..ff7e79574677 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3008,9 +3008,9 @@ "dev": true }, "debounce": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.0.tgz", - "integrity": "sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", "dev": true }, "debug": { @@ -6152,9 +6152,9 @@ "dev": true }, "karma-rollup-preprocessor": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.6.tgz", - "integrity": "sha512-Qghr/oNnmNKB4Ry5n81QX+tB6+vSy0kjn+rwzH1dp80ZVf9WiA19NQqVFZLc0f76tBoE7is2Qef8dqbVNjVtjw==", + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.7.tgz", + "integrity": "sha512-Y1QwsTCiCBp8sSALZdqmqry/mWIWIy0V6zonUIpy+0/D/Kpb2XZvR+JZrWfacQvcvKQdZFJvg6EwlnKtjepu3Q==", "dev": true, "requires": { "chokidar": "^3.3.1", diff --git a/package.json b/package.json index 665c4ef3bda2..e4cda662ec0d 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "karma-firefox-launcher": "^2.1.0", "karma-jasmine": "^4.0.1", "karma-jasmine-html-reporter": "^1.5.4", - "karma-rollup-preprocessor": "^7.0.6", + "karma-rollup-preprocessor": "^7.0.7", "linkinator": "^2.13.6", "lockfile-lint": "^4.6.2", "nodemon": "^2.0.7", From ebb445b0b598d7828f6a563cc1927e3702756892 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Mar 2021 12:43:35 +0200 Subject: [PATCH 08/38] Bump postcss from 8.2.7 to 8.2.8 (#33375) Bumps [postcss](https://github.com/postcss/postcss) from 8.2.7 to 8.2.8. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.2.7...8.2.8) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff7e79574677..75b831288898 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6859,9 +6859,9 @@ "dev": true }, "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "version": "3.1.22", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", + "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==", "dev": true }, "nanomatch": { @@ -7901,9 +7901,9 @@ "optional": true }, "postcss": { - "version": "8.2.7", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.7.tgz", - "integrity": "sha512-DsVLH3xJzut+VT+rYr0mtvOtpTjSyqDwPf5EZWXcb0uAKfitGpTY9Ec+afi2+TgdN8rWS9Cs88UDYehKo/RvOw==", + "version": "8.2.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz", + "integrity": "sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==", "dev": true, "requires": { "colorette": "^1.2.2", diff --git a/package.json b/package.json index e4cda662ec0d..3ae21937d52f 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "lockfile-lint": "^4.6.2", "nodemon": "^2.0.7", "npm-run-all": "^4.1.5", - "postcss": "^8.2.7", + "postcss": "^8.2.8", "postcss-cli": "^8.3.1", "rollup": "^2.41.0", "rollup-plugin-istanbul": "^3.0.0", From 5242f1223edb5b0d641e93dafb65353d0c9aff66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Mar 2021 12:47:05 +0200 Subject: [PATCH 09/38] Bump eslint from 7.21.0 to 7.22.0 (#33376) Bumps [eslint](https://github.com/eslint/eslint) from 7.21.0 to 7.22.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/master/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v7.21.0...v7.22.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 24 +++++++++++++++--------- package.json | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 75b831288898..8a4686b7a165 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3614,9 +3614,9 @@ "dev": true }, "eslint": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz", - "integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", @@ -3636,7 +3636,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -3644,7 +3644,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -3720,12 +3720,12 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -3757,6 +3757,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, diff --git a/package.json b/package.json index 3ae21937d52f..afc6c22cfe08 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "bundlewatch": "^0.3.2", "clean-css-cli": "^5.2.1", "cross-env": "^7.0.3", - "eslint": "^7.21.0", + "eslint": "^7.22.0", "eslint-config-xo": "^0.35.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-unicorn": "^28.0.2", From 7a20375d8561cdcbb66d966ebfdb6cf1eb65468c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Mar 2021 12:50:46 +0200 Subject: [PATCH 10/38] Bump rollup from 2.41.0 to 2.41.3 (#33377) Bumps [rollup](https://github.com/rollup/rollup) from 2.41.0 to 2.41.3. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.41.0...v2.41.3) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8a4686b7a165..69baf577fe86 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8849,9 +8849,9 @@ } }, "rollup": { - "version": "2.41.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.0.tgz", - "integrity": "sha512-Gk76XHTggulWPH95q8V62bw6uqDH6UGvbD6LOa3QUyhuMF3eOuaeDHR7SLm1T9faitkpNrqzUAVYx47klcMnlA==", + "version": "2.41.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.3.tgz", + "integrity": "sha512-swrSUfX3UK7LGd5exBJNUC7kykdxemUTRuyO9hUFJsmQUsUovHcki9vl5MAWFbB6oI47HpeZHtbmuzdm1SRUZw==", "dev": true, "requires": { "fsevents": "~2.3.1" diff --git a/package.json b/package.json index afc6c22cfe08..58a81e94ee32 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "npm-run-all": "^4.1.5", "postcss": "^8.2.8", "postcss-cli": "^8.3.1", - "rollup": "^2.41.0", + "rollup": "^2.41.3", "rollup-plugin-istanbul": "^3.0.0", "rtlcss": "^3.1.2", "sass": "^1.32.8", From 1e14a0e646d4b27d562f9c6527ff3b97278e5145 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Mar 2021 12:55:16 +0200 Subject: [PATCH 11/38] Bump karma from 6.1.2 to 6.2.0 (#33374) Bumps [karma](https://github.com/karma-runner/karma) from 6.1.2 to 6.2.0. - [Release notes](https://github.com/karma-runner/karma/releases) - [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md) - [Commits](https://github.com/karma-runner/karma/compare/v6.1.2...v6.2.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 69baf577fe86..d34b996741b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5997,9 +5997,9 @@ "dev": true }, "karma": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.1.2.tgz", - "integrity": "sha512-mKbxgsJrt3UHBPdKfCxC2eg3lpqyt6hQRFhNWJ2sk0wUnbnLPEiCpgIgiycuLSra0vC6TaK9OPJiMGATGzgH/A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.2.0.tgz", + "integrity": "sha512-pCB8eNxGgdIdZeC885rbhZ/VyuOPNHUIDNL9EaaMf1NVzpvTjMO8a7zRTn51ZJhOOOxCSpalUdT1A8x76LyVqg==", "dev": true, "requires": { "body-parser": "^1.19.0", @@ -8834,9 +8834,9 @@ "dev": true }, "rfdc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", - "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, "rimraf": { diff --git a/package.json b/package.json index 58a81e94ee32..a343828e0987 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "hugo-bin": "^0.69.0", "ip": "^1.1.5", "jquery": "^3.6.0", - "karma": "^6.1.2", + "karma": "^6.2.0", "karma-browserstack-launcher": "1.4.0", "karma-chrome-launcher": "^3.1.0", "karma-coverage-istanbul-reporter": "^3.0.3", From ddf72bc6124618e3f4b6a056503d4f51d49c928e Mon Sep 17 00:00:00 2001 From: GeoSot Date: Tue, 16 Mar 2021 18:35:03 +0200 Subject: [PATCH 12/38] Accept data-bs-body option in the configuration object as well (#33248) * Accept data-bs-body option in the configuration object as well Tweak jqueryInterface, add some more tests * Fix Markdown table formatting and tweak the wording on backdrop Co-authored-by: Mark Otto Co-authored-by: XhmikosR --- js/src/offcanvas.js | 76 +++++++--- js/src/util/index.js | 17 +++ js/tests/unit/offcanvas.spec.js | 134 +++++++++++++++++- js/tests/unit/util/index.spec.js | 105 ++++++++++++++ site/content/docs/5.0/components/offcanvas.md | 61 ++++---- 5 files changed, 337 insertions(+), 56 deletions(-) diff --git a/js/src/offcanvas.js b/js/src/offcanvas.js index f4927aacd68f..4b98565e2ce0 100644 --- a/js/src/offcanvas.js +++ b/js/src/offcanvas.js @@ -10,13 +10,16 @@ import { getElementFromSelector, getSelectorFromElement, getTransitionDurationFromElement, - isVisible + isDisabled, + isVisible, + typeCheckConfig } from './util/index' import { hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar' import Data from './dom/data' import EventHandler from './dom/event-handler' import BaseComponent from './base-component' import SelectorEngine from './dom/selector-engine' +import Manipulator from './dom/manipulator' /** * ------------------------------------------------------------------------ @@ -29,10 +32,20 @@ const DATA_KEY = 'bs.offcanvas' const EVENT_KEY = `.${DATA_KEY}` const DATA_API_KEY = '.data-api' const ESCAPE_KEY = 'Escape' -const DATA_BODY_ACTIONS = 'data-bs-body' + +const Default = { + backdrop: true, + keyboard: true, + scroll: false +} + +const DefaultType = { + backdrop: 'boolean', + keyboard: 'boolean', + scroll: 'boolean' +} const CLASS_NAME_BACKDROP_BODY = 'offcanvas-backdrop' -const CLASS_NAME_DISABLED = 'disabled' const CLASS_NAME_SHOW = 'show' const CLASS_NAME_TOGGLING = 'offcanvas-toggling' const ACTIVE_SELECTOR = `.offcanvas.show, .${CLASS_NAME_TOGGLING}` @@ -55,14 +68,24 @@ const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]' */ class Offcanvas extends BaseComponent { - constructor(element) { + constructor(element, config) { super(element) + this._config = this._getConfig(config) this._isShown = element.classList.contains(CLASS_NAME_SHOW) - this._bodyOptions = element.getAttribute(DATA_BODY_ACTIONS) || '' this._addEventListeners() } + // Getters + + static get Default() { + return Default + } + + static get DATA_KEY() { + return DATA_KEY + } + // Public toggle(relatedTarget) { @@ -83,11 +106,11 @@ class Offcanvas extends BaseComponent { this._isShown = true this._element.style.visibility = 'visible' - if (this._bodyOptionsHas('backdrop') || !this._bodyOptions.length) { + if (this._config.backdrop) { document.body.classList.add(CLASS_NAME_BACKDROP_BODY) } - if (!this._bodyOptionsHas('scroll')) { + if (!this._config.scroll) { scrollBarHide() } @@ -129,11 +152,11 @@ class Offcanvas extends BaseComponent { this._element.removeAttribute('role') this._element.style.visibility = 'hidden' - if (this._bodyOptionsHas('backdrop') || !this._bodyOptions.length) { + if (this._config.backdrop) { document.body.classList.remove(CLASS_NAME_BACKDROP_BODY) } - if (!this._bodyOptionsHas('scroll')) { + if (!this._config.scroll) { scrollBarReset() } @@ -144,6 +167,18 @@ class Offcanvas extends BaseComponent { setTimeout(completeCallback, getTransitionDurationFromElement(this._element)) } + // Private + + _getConfig(config) { + config = { + ...Default, + ...Manipulator.getDataAttributes(this._element), + ...(typeof config === 'object' ? config : {}) + } + typeCheckConfig(NAME, config, DefaultType) + return config + } + _enforceFocusOnElement(element) { EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop EventHandler.on(document, EVENT_FOCUSIN, event => { @@ -156,15 +191,11 @@ class Offcanvas extends BaseComponent { element.focus() } - _bodyOptionsHas(option) { - return this._bodyOptions.split(',').includes(option) - } - _addEventListeners() { EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide()) EventHandler.on(document, 'keydown', event => { - if (event.key === ESCAPE_KEY) { + if (this._config.keyboard && event.key === ESCAPE_KEY) { this.hide() } }) @@ -181,15 +212,17 @@ class Offcanvas extends BaseComponent { static jQueryInterface(config) { return this.each(function () { - const data = Data.get(this, DATA_KEY) || new Offcanvas(this) + const data = Data.get(this, DATA_KEY) || new Offcanvas(this, typeof config === 'object' ? config : {}) - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError(`No method named "${config}"`) - } + if (typeof config !== 'string') { + return + } - data[config](this) + if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { + throw new TypeError(`No method named "${config}"`) } + + data[config](this) }) } } @@ -207,7 +240,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( event.preventDefault() } - if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) { + if (isDisabled(this)) { return } @@ -225,6 +258,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( } const data = Data.get(target, DATA_KEY) || new Offcanvas(target) + data.toggle(this) }) diff --git a/js/src/util/index.js b/js/src/util/index.js index ae3cd2ac00a9..e268b07287a0 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -153,6 +153,22 @@ const isVisible = element => { return false } +const isDisabled = element => { + if (!element || element.nodeType !== Node.ELEMENT_NODE) { + return true + } + + if (element.classList.contains('disabled')) { + return true + } + + if (typeof element.disabled !== 'undefined') { + return element.disabled + } + + return element.getAttribute('disabled') !== 'false' +} + const findShadowRoot = element => { if (!document.documentElement.attachShadow) { return null @@ -226,6 +242,7 @@ export { emulateTransitionEnd, typeCheckConfig, isVisible, + isDisabled, findShadowRoot, noop, reflow, diff --git a/js/tests/unit/offcanvas.spec.js b/js/tests/unit/offcanvas.spec.js index 07a7cf682b33..4fb6c17ecb9c 100644 --- a/js/tests/unit/offcanvas.spec.js +++ b/js/tests/unit/offcanvas.spec.js @@ -2,7 +2,7 @@ import Offcanvas from '../../src/offcanvas' import EventHandler from '../../src/dom/event-handler' /** Test helpers */ -import { clearFixture, getFixture, jQueryMock, createEvent } from '../helpers/fixture' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' describe('Offcanvas', () => { let fixtureEl @@ -22,6 +22,18 @@ describe('Offcanvas', () => { }) }) + describe('Default', () => { + it('should return plugin default config', () => { + expect(Offcanvas.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Offcanvas.DATA_KEY).toEqual('bs.offcanvas') + }) + }) + describe('constructor', () => { it('should call hide when a element with data-bs-dismiss="offcanvas" is clicked', () => { fixtureEl.innerHTML = [ @@ -70,6 +82,68 @@ describe('Offcanvas', () => { expect(offCanvas.hide).not.toHaveBeenCalled() }) + + it('should not hide if esc is pressed but with keyboard = false', () => { + fixtureEl.innerHTML = '
' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { keyboard: false }) + const keyDownEsc = createEvent('keydown') + keyDownEsc.key = 'Escape' + + spyOn(offCanvas, 'hide') + + document.dispatchEvent(keyDownEsc) + + expect(offCanvas.hide).not.toHaveBeenCalled() + }) + }) + + describe('config', () => { + it('should have default values', () => { + fixtureEl.innerHTML = [ + '
', + '
' + ].join('') + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + expect(offCanvas._config.backdrop).toEqual(true) + expect(offCanvas._config.keyboard).toEqual(true) + expect(offCanvas._config.scroll).toEqual(false) + }) + + it('should read data attributes and override default config', () => { + fixtureEl.innerHTML = [ + '
', + '
' + ].join('') + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + expect(offCanvas._config.backdrop).toEqual(false) + expect(offCanvas._config.keyboard).toEqual(false) + expect(offCanvas._config.scroll).toEqual(true) + }) + + it('given a config object must override data attributes', () => { + fixtureEl.innerHTML = [ + '
', + '
' + ].join('') + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { + backdrop: true, + keyboard: true, + scroll: false + }) + expect(offCanvas._config.backdrop).toEqual(true) + expect(offCanvas._config.keyboard).toEqual(true) + expect(offCanvas._config.scroll).toEqual(false) + }) }) describe('toggle', () => { @@ -280,6 +354,64 @@ describe('Offcanvas', () => { jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface jQueryMock.elements = [div] + expect(() => { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error on protected method', () => { + fixtureEl.innerHTML = '
' + + const div = fixtureEl.querySelector('div') + const action = '_getConfig' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error if method "constructor" is being called', () => { + fixtureEl.innerHTML = '
' + + const div = fixtureEl.querySelector('div') + const action = 'constructor' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error on protected method', () => { + fixtureEl.innerHTML = '
' + + const div = fixtureEl.querySelector('div') + const action = '_getConfig' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + try { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + } catch (error) { + expect(error.message).toEqual(`No method named "${action}"`) + } + }) + + it('should throw error if method "constructor" is being called', () => { + fixtureEl.innerHTML = '
' + + const div = fixtureEl.querySelector('div') + const action = 'constructor' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + try { jQueryMock.fn.offcanvas.call(jQueryMock, action) } catch (error) { diff --git a/js/tests/unit/util/index.spec.js b/js/tests/unit/util/index.spec.js index 935e021dd7db..24921d730e7b 100644 --- a/js/tests/unit/util/index.spec.js +++ b/js/tests/unit/util/index.spec.js @@ -317,6 +317,111 @@ describe('Util', () => { }) }) + describe('isDisabled', () => { + it('should return true if the element is not defined', () => { + expect(Util.isDisabled(null)).toEqual(true) + expect(Util.isDisabled(undefined)).toEqual(true) + expect(Util.isDisabled()).toEqual(true) + }) + + it('should return true if the element provided is not a dom element', () => { + expect(Util.isDisabled({})).toEqual(true) + expect(Util.isDisabled('test')).toEqual(true) + }) + + it('should return true if the element has disabled attribute', () => { + fixtureEl.innerHTML = [ + '
', + '
', + '
', + '
', + '
' + ].join('') + + const div = fixtureEl.querySelector('#element') + const div1 = fixtureEl.querySelector('#element1') + const div2 = fixtureEl.querySelector('#element2') + + expect(Util.isDisabled(div)).toEqual(true) + expect(Util.isDisabled(div1)).toEqual(true) + expect(Util.isDisabled(div2)).toEqual(true) + }) + + it('should return false if the element has disabled attribute with "false" value', () => { + fixtureEl.innerHTML = [ + '
', + '
', + '
' + ].join('') + + const div = fixtureEl.querySelector('#element') + + expect(Util.isDisabled(div)).toEqual(false) + }) + + it('should return false if the element is not disabled ', () => { + fixtureEl.innerHTML = [ + '
', + ' ', + ' ', + ' ', + '
' + ].join('') + + const el = selector => fixtureEl.querySelector(selector) + + expect(Util.isDisabled(el('#button'))).toEqual(false) + expect(Util.isDisabled(el('#select'))).toEqual(false) + expect(Util.isDisabled(el('#input'))).toEqual(false) + }) + it('should return true if the element has disabled attribute', () => { + fixtureEl.innerHTML = [ + '
', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + '
' + ].join('') + + const el = selector => fixtureEl.querySelector(selector) + + expect(Util.isDisabled(el('#input'))).toEqual(true) + expect(Util.isDisabled(el('#input1'))).toEqual(true) + expect(Util.isDisabled(el('#button'))).toEqual(true) + expect(Util.isDisabled(el('#button1'))).toEqual(true) + expect(Util.isDisabled(el('#button2'))).toEqual(true) + expect(Util.isDisabled(el('#input'))).toEqual(true) + }) + + it('should return true if the element has class "disabled"', () => { + fixtureEl.innerHTML = [ + '
', + '
', + '
' + ].join('') + + const div = fixtureEl.querySelector('#element') + + expect(Util.isDisabled(div)).toEqual(true) + }) + + it('should return true if the element has class "disabled" but disabled attribute is false', () => { + fixtureEl.innerHTML = [ + '
', + ' ', + '
' + ].join('') + + const div = fixtureEl.querySelector('#input') + + expect(Util.isDisabled(div)).toEqual(true) + }) + }) + describe('findShadowRoot', () => { it('should return null if shadow dom is not available', () => { // Only for newer browsers diff --git a/site/content/docs/5.0/components/offcanvas.md b/site/content/docs/5.0/components/offcanvas.md index 9eacfd6b40fa..347242bb9351 100644 --- a/site/content/docs/5.0/components/offcanvas.md +++ b/site/content/docs/5.0/components/offcanvas.md @@ -117,16 +117,16 @@ Try the right and bottom examples out below. {{< /example >}} -## Options +## Backdrop -By default, we disable scrolling on the `` when an offcanvas is visible and use a gray backdrop. Use the `data-bs-body` attribute to enable `` scrolling, or a combination of both options +Scrolling the `` element is disabled when an offcanvas and its backdrop are visible. Use the `data-bs-scroll` attribute to toggle `` scrolling and `data-bs-backdrop` to toggle the backdrop. {{< example >}} -
+
Colored with scrolling
@@ -135,7 +135,7 @@ By default, we disable scrolling on the `` when an offcanvas is visible an

Try scrolling the rest of the page to see this option in action.

-
+
Offcanvas with backdrop
@@ -144,7 +144,7 @@ By default, we disable scrolling on the `` when an offcanvas is visible an

.....

-
+
Backdroped with scrolling
@@ -174,9 +174,6 @@ The offcanvas plugin utilizes a few classes and attributes to handle the heavy l - `.offcanvas-start` hides the offcanvas on the left - `.offcanvas-end` hides the offcanvas on the right - `.offcanvas-bottom` hides the offcanvas on the bottom -- `data-bs-body="scroll"` enables `` scrolling when offcanvas is open -- `data-bs-body="backdrop"` disables scrolling and creates a backdrop over the `` when offcanvas is open `(default)` -- `data-bs-body="backdrop,scroll"` combines both options to enable `` scrolling and create a backdrop over the `` when offcanvas is open Add a dismiss button with the `data-bs-dismiss="offcanvas"` attribute, which triggers the JavaScript functionality. Be sure to use the ` +
+ + +
+
+
+ +
Open first modal +
+ +```html + + + + + +Open #modal +``` + ### Change animation The `$modal-fade-transform` variable determines the transform state of `.modal-dialog` before the modal fade-in animation, the `$modal-show-transform` variable determines the transform of `.modal-dialog` at the end of the modal fade-in animation. From c198eb6319d63c5414dbe3036ad160bd78d4cf01 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Tue, 16 Mar 2021 22:16:03 -0700 Subject: [PATCH 15/38] Revamp accordion borders to fix pixel jumping (#33149) - Pushes the borders to the .accordion-item - Simplifies the .accordion-flush - Recreates the .accordion-button border-bottom with an inset box-shadow - Updates background-color to solid to match other components like list group and prevent stacked translucent borders - Use negative margin to overlap the consecutive items --- scss/_accordion.scss | 51 +++++++++++++++++--------------------------- scss/_variables.scss | 3 ++- 2 files changed, 21 insertions(+), 33 deletions(-) diff --git a/scss/_accordion.scss b/scss/_accordion.scss index 298a553e01d3..294d5229be76 100644 --- a/scss/_accordion.scss +++ b/scss/_accordion.scss @@ -12,18 +12,15 @@ color: $accordion-button-color; text-align: left; // Reset button style background-color: $accordion-button-bg; - border: $accordion-border-width solid $accordion-border-color; + border: 0; @include border-radius(0); overflow-anchor: none; @include transition($accordion-transition); - &.collapsed { - border-bottom-width: 0; - } - &:not(.collapsed) { color: $accordion-button-active-color; background-color: $accordion-button-active-bg; + box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color; &::after { background-image: escape-svg($accordion-button-active-icon); @@ -61,33 +58,35 @@ } .accordion-item { + margin-bottom: -$accordion-border-width; + background-color: $accordion-bg; + border: $accordion-border-width solid $accordion-border-color; + &:first-of-type { + @include border-top-radius($accordion-border-radius); + .accordion-button { - @include border-top-radius($accordion-border-radius); + @include border-top-radius($accordion-inner-border-radius); } } + // Only set a border-radius on the last item if the accordion is collapsed &:last-of-type { + margin-bottom: 0; + @include border-bottom-radius($accordion-border-radius); + .accordion-button { - // Only set a border-radius on the last item if the accordion is collapsed &.collapsed { - border-bottom-width: $accordion-border-width; - @include border-bottom-radius($accordion-border-radius); + @include border-bottom-radius($accordion-inner-border-radius); } } .accordion-collapse { - border-bottom-width: $accordion-border-width; @include border-bottom-radius($accordion-border-radius); } } } -.accordion-collapse { - border: solid $accordion-border-color; - border-width: 0 $accordion-border-width; -} - .accordion-body { padding: $accordion-body-padding-y $accordion-body-padding-x; } @@ -98,29 +97,17 @@ // Remove borders and border-radius to keep accordion items edge-to-edge. .accordion-flush { - .accordion-button { - border-right: 0; - border-left: 0; - @include border-radius(0); - } - .accordion-collapse { border-width: 0; } .accordion-item { - &:first-of-type { - .accordion-button { - border-top-width: 0; - @include border-top-radius(0); - } - } + @include border-radius(0); - &:last-of-type { - .accordion-button.collapsed { - border-bottom-width: 0; - @include border-bottom-radius(0); - } + .accordion-button { + border-right: 0; + border-left: 0; + @include border-radius(0); } } } diff --git a/scss/_variables.scss b/scss/_variables.scss index 2668a790cb77..7558224f9dce 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -1101,10 +1101,11 @@ $card-group-margin: $grid-gutter-width / 2 !default; $accordion-padding-y: 1rem !default; $accordion-padding-x: 1.25rem !default; $accordion-color: $body-color !default; -$accordion-bg: transparent !default; +$accordion-bg: $body-bg !default; $accordion-border-width: $border-width !default; $accordion-border-color: rgba($black, .125) !default; $accordion-border-radius: $border-radius !default; +$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default; $accordion-body-padding-y: $accordion-padding-y !default; $accordion-body-padding-x: $accordion-padding-x !default; From c5083d5fc372b750ceea35d72cafa26562762b0c Mon Sep 17 00:00:00 2001 From: GeoSot Date: Wed, 17 Mar 2021 07:44:15 +0200 Subject: [PATCH 16/38] Use more safe check for 'isDisabled' helper (#33385) --- .bundlewatch.config.json | 2 +- js/src/util/index.js | 2 +- js/tests/unit/util/index.spec.js | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json index 4a28264b3a99..27b998c6201a 100644 --- a/.bundlewatch.config.json +++ b/.bundlewatch.config.json @@ -54,7 +54,7 @@ }, { "path": "./dist/js/bootstrap.min.js", - "maxSize": "16.25 kB" + "maxSize": "16.5 kB" } ], "ci": { diff --git a/js/src/util/index.js b/js/src/util/index.js index e268b07287a0..e9950c9e387a 100644 --- a/js/src/util/index.js +++ b/js/src/util/index.js @@ -166,7 +166,7 @@ const isDisabled = element => { return element.disabled } - return element.getAttribute('disabled') !== 'false' + return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false' } const findShadowRoot = element => { diff --git a/js/tests/unit/util/index.spec.js b/js/tests/unit/util/index.spec.js index 24921d730e7b..41c1ce2b80b4 100644 --- a/js/tests/unit/util/index.spec.js +++ b/js/tests/unit/util/index.spec.js @@ -347,16 +347,19 @@ describe('Util', () => { expect(Util.isDisabled(div2)).toEqual(true) }) - it('should return false if the element has disabled attribute with "false" value', () => { + it('should return false if the element has disabled attribute with "false" value, or doesn\'t have attribute', () => { fixtureEl.innerHTML = [ '
', '
', + '
', '
' ].join('') const div = fixtureEl.querySelector('#element') + const div1 = fixtureEl.querySelector('#element1') expect(Util.isDisabled(div)).toEqual(false) + expect(Util.isDisabled(div1)).toEqual(false) }) it('should return false if the element is not disabled ', () => { From b9f30903a5a916904c873bd078240b3df743e093 Mon Sep 17 00:00:00 2001 From: GeoSot Date: Wed, 17 Mar 2021 07:58:43 +0200 Subject: [PATCH 17/38] Fix carousel RTL and refactor code, fix rtl swipe issues (#32913) * move common code to reusable functions * add/re-factor tests, directionToOrder func * add _orderToDirection tests Co-authored-by: XhmikosR --- .bundlewatch.config.json | 2 +- js/src/carousel.js | 95 ++++++++++++------------ js/tests/unit/carousel.spec.js | 130 +++++++++++++++++++++++++-------- 3 files changed, 152 insertions(+), 75 deletions(-) diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json index 27b998c6201a..58de657940b2 100644 --- a/.bundlewatch.config.json +++ b/.bundlewatch.config.json @@ -38,7 +38,7 @@ }, { "path": "./dist/js/bootstrap.bundle.min.js", - "maxSize": "22.5 kB" + "maxSize": "22.75 kB" }, { "path": "./dist/js/bootstrap.esm.js", diff --git a/js/src/carousel.js b/js/src/carousel.js index a825aaef4812..b14cbd1a23fd 100644 --- a/js/src/carousel.js +++ b/js/src/carousel.js @@ -10,8 +10,8 @@ import { emulateTransitionEnd, getElementFromSelector, getTransitionDurationFromElement, - isVisible, isRTL, + isVisible, reflow, triggerTransitionEnd, typeCheckConfig @@ -56,8 +56,8 @@ const DefaultType = { touch: 'boolean' } -const DIRECTION_NEXT = 'next' -const DIRECTION_PREV = 'prev' +const ORDER_NEXT = 'next' +const ORDER_PREV = 'prev' const DIRECTION_LEFT = 'left' const DIRECTION_RIGHT = 'right' @@ -137,7 +137,7 @@ class Carousel extends BaseComponent { next() { if (!this._isSliding) { - this._slide(DIRECTION_NEXT) + this._slide(ORDER_NEXT) } } @@ -151,7 +151,7 @@ class Carousel extends BaseComponent { prev() { if (!this._isSliding) { - this._slide(DIRECTION_PREV) + this._slide(ORDER_PREV) } } @@ -208,11 +208,11 @@ class Carousel extends BaseComponent { return } - const direction = index > activeIndex ? - DIRECTION_NEXT : - DIRECTION_PREV + const order = index > activeIndex ? + ORDER_NEXT : + ORDER_PREV - this._slide(direction, this._items[index]) + this._slide(order, this._items[index]) } dispose() { @@ -251,23 +251,11 @@ class Carousel extends BaseComponent { this.touchDeltaX = 0 - // swipe left - if (direction > 0) { - if (isRTL()) { - this.next() - } else { - this.prev() - } + if (!direction) { + return } - // swipe right - if (direction < 0) { - if (isRTL()) { - this.prev() - } else { - this.next() - } - } + this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT) } _addEventListeners() { @@ -350,18 +338,10 @@ class Carousel extends BaseComponent { if (event.key === ARROW_LEFT_KEY) { event.preventDefault() - if (isRTL()) { - this.next() - } else { - this.prev() - } + this._slide(DIRECTION_LEFT) } else if (event.key === ARROW_RIGHT_KEY) { event.preventDefault() - if (isRTL()) { - this.prev() - } else { - this.next() - } + this._slide(DIRECTION_RIGHT) } } @@ -373,19 +353,18 @@ class Carousel extends BaseComponent { return this._items.indexOf(element) } - _getItemByDirection(direction, activeElement) { - const isNextDirection = direction === DIRECTION_NEXT - const isPrevDirection = direction === DIRECTION_PREV + _getItemByOrder(order, activeElement) { + const isNext = order === ORDER_NEXT + const isPrev = order === ORDER_PREV const activeIndex = this._getItemIndex(activeElement) const lastItemIndex = this._items.length - 1 - const isGoingToWrap = (isPrevDirection && activeIndex === 0) || - (isNextDirection && activeIndex === lastItemIndex) + const isGoingToWrap = (isPrev && activeIndex === 0) || (isNext && activeIndex === lastItemIndex) if (isGoingToWrap && !this._config.wrap) { return activeElement } - const delta = direction === DIRECTION_PREV ? -1 : 1 + const delta = isPrev ? -1 : 1 const itemIndex = (activeIndex + delta) % this._items.length return itemIndex === -1 ? @@ -441,17 +420,19 @@ class Carousel extends BaseComponent { } } - _slide(direction, element) { + _slide(directionOrOrder, element) { + const order = this._directionToOrder(directionOrOrder) const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element) const activeElementIndex = this._getItemIndex(activeElement) - const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement)) + const nextElement = element || this._getItemByOrder(order, activeElement) const nextElementIndex = this._getItemIndex(nextElement) const isCycling = Boolean(this._interval) - const directionalClassName = direction === DIRECTION_NEXT ? CLASS_NAME_START : CLASS_NAME_END - const orderClassName = direction === DIRECTION_NEXT ? CLASS_NAME_NEXT : CLASS_NAME_PREV - const eventDirectionName = direction === DIRECTION_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT + const isNext = order === ORDER_NEXT + const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END + const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV + const eventDirectionName = this._orderToDirection(order) if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) { this._isSliding = false @@ -524,6 +505,30 @@ class Carousel extends BaseComponent { } } + _directionToOrder(direction) { + if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) { + return direction + } + + if (isRTL()) { + return direction === DIRECTION_RIGHT ? ORDER_PREV : ORDER_NEXT + } + + return direction === DIRECTION_RIGHT ? ORDER_NEXT : ORDER_PREV + } + + _orderToDirection(order) { + if (![ORDER_NEXT, ORDER_PREV].includes(order)) { + return order + } + + if (isRTL()) { + return order === ORDER_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT + } + + return order === ORDER_NEXT ? DIRECTION_RIGHT : DIRECTION_LEFT + } + // Static static carouselInterface(element, config) { diff --git a/js/tests/unit/carousel.spec.js b/js/tests/unit/carousel.spec.js index c475489c0605..dc3006fffd2b 100644 --- a/js/tests/unit/carousel.spec.js +++ b/js/tests/unit/carousel.spec.js @@ -2,7 +2,8 @@ import Carousel from '../../src/carousel' import EventHandler from '../../src/dom/event-handler' /** Test helpers */ -import { getFixture, clearFixture, createEvent, jQueryMock } from '../helpers/fixture' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' +import * as util from '../../src/util' describe('Carousel', () => { const { Simulator, PointerEvent } = window @@ -175,8 +176,7 @@ describe('Carousel', () => { }) const spyKeydown = spyOn(carousel, '_keydown').and.callThrough() - const spyPrev = spyOn(carousel, 'prev') - const spyNext = spyOn(carousel, 'next') + const spySlide = spyOn(carousel, '_slide') const keydown = createEvent('keydown', { bubbles: true, cancelable: true }) keydown.key = 'ArrowRight' @@ -189,12 +189,10 @@ describe('Carousel', () => { input.dispatchEvent(keydown) expect(spyKeydown).toHaveBeenCalled() - expect(spyPrev).not.toHaveBeenCalled() - expect(spyNext).not.toHaveBeenCalled() + expect(spySlide).not.toHaveBeenCalled() spyKeydown.calls.reset() - spyPrev.calls.reset() - spyNext.calls.reset() + spySlide.calls.reset() Object.defineProperty(keydown, 'target', { value: textarea @@ -202,8 +200,7 @@ describe('Carousel', () => { textarea.dispatchEvent(keydown) expect(spyKeydown).toHaveBeenCalled() - expect(spyPrev).not.toHaveBeenCalled() - expect(spyNext).not.toHaveBeenCalled() + expect(spySlide).not.toHaveBeenCalled() }) it('should wrap around from end to start when wrap option is true', done => { @@ -320,7 +317,7 @@ describe('Carousel', () => { expect(carousel._addTouchEventListeners).toHaveBeenCalled() }) - it('should allow swiperight and call prev with pointer events', done => { + it('should allow swiperight and call _slide with pointer events', done => { if (!supportPointerEvent) { expect().nothing() done() @@ -348,11 +345,12 @@ describe('Carousel', () => { const item = fixtureEl.querySelector('#item') const carousel = new Carousel(carouselEl) - spyOn(carousel, 'prev').and.callThrough() + spyOn(carousel, '_slide').and.callThrough() - carouselEl.addEventListener('slid.bs.carousel', () => { + carouselEl.addEventListener('slid.bs.carousel', event => { expect(item.classList.contains('active')).toEqual(true) - expect(carousel.prev).toHaveBeenCalled() + expect(carousel._slide).toHaveBeenCalledWith('right') + expect(event.direction).toEqual('right') document.head.removeChild(stylesCarousel) delete document.documentElement.ontouchstart done() @@ -364,7 +362,7 @@ describe('Carousel', () => { }) }) - it('should allow swipeleft and call next with pointer events', done => { + it('should allow swipeleft and call previous with pointer events', done => { if (!supportPointerEvent) { expect().nothing() done() @@ -392,11 +390,12 @@ describe('Carousel', () => { const item = fixtureEl.querySelector('#item') const carousel = new Carousel(carouselEl) - spyOn(carousel, 'next').and.callThrough() + spyOn(carousel, '_slide').and.callThrough() - carouselEl.addEventListener('slid.bs.carousel', () => { + carouselEl.addEventListener('slid.bs.carousel', event => { expect(item.classList.contains('active')).toEqual(false) - expect(carousel.next).toHaveBeenCalled() + expect(carousel._slide).toHaveBeenCalledWith('left') + expect(event.direction).toEqual('left') document.head.removeChild(stylesCarousel) delete document.documentElement.ontouchstart done() @@ -409,7 +408,7 @@ describe('Carousel', () => { }) }) - it('should allow swiperight and call prev with touch events', done => { + it('should allow swiperight and call _slide with touch events', done => { Simulator.setType('touch') clearPointerEvents() document.documentElement.ontouchstart = () => {} @@ -431,11 +430,12 @@ describe('Carousel', () => { const item = fixtureEl.querySelector('#item') const carousel = new Carousel(carouselEl) - spyOn(carousel, 'prev').and.callThrough() + spyOn(carousel, '_slide').and.callThrough() - carouselEl.addEventListener('slid.bs.carousel', () => { + carouselEl.addEventListener('slid.bs.carousel', event => { expect(item.classList.contains('active')).toEqual(true) - expect(carousel.prev).toHaveBeenCalled() + expect(carousel._slide).toHaveBeenCalledWith('right') + expect(event.direction).toEqual('right') delete document.documentElement.ontouchstart restorePointerEvents() done() @@ -447,7 +447,7 @@ describe('Carousel', () => { }) }) - it('should allow swipeleft and call next with touch events', done => { + it('should allow swipeleft and call _slide with touch events', done => { Simulator.setType('touch') clearPointerEvents() document.documentElement.ontouchstart = () => {} @@ -469,11 +469,12 @@ describe('Carousel', () => { const item = fixtureEl.querySelector('#item') const carousel = new Carousel(carouselEl) - spyOn(carousel, 'next').and.callThrough() + spyOn(carousel, '_slide').and.callThrough() - carouselEl.addEventListener('slid.bs.carousel', () => { + carouselEl.addEventListener('slid.bs.carousel', event => { expect(item.classList.contains('active')).toEqual(false) - expect(carousel.next).toHaveBeenCalled() + expect(carousel._slide).toHaveBeenCalledWith('left') + expect(event.direction).toEqual('left') delete document.documentElement.ontouchstart restorePointerEvents() done() @@ -600,7 +601,7 @@ describe('Carousel', () => { const carousel = new Carousel(carouselEl, {}) const onSlide = e => { - expect(e.direction).toEqual('left') + expect(e.direction).toEqual('right') expect(e.relatedTarget.classList.contains('carousel-item')).toEqual(true) expect(e.from).toEqual(0) expect(e.to).toEqual(1) @@ -612,7 +613,7 @@ describe('Carousel', () => { } const onSlide2 = e => { - expect(e.direction).toEqual('right') + expect(e.direction).toEqual('left') done() } @@ -635,7 +636,7 @@ describe('Carousel', () => { const carousel = new Carousel(carouselEl, {}) const onSlid = e => { - expect(e.direction).toEqual('left') + expect(e.direction).toEqual('right') expect(e.relatedTarget.classList.contains('carousel-item')).toEqual(true) expect(e.from).toEqual(0) expect(e.to).toEqual(1) @@ -647,7 +648,7 @@ describe('Carousel', () => { } const onSlid2 = e => { - expect(e.direction).toEqual('right') + expect(e.direction).toEqual('left') done() } @@ -1061,6 +1062,77 @@ describe('Carousel', () => { }) }) }) + describe('rtl function', () => { + it('"_directionToOrder" and "_orderToDirection" must return the right results', () => { + fixtureEl.innerHTML = '
' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + + expect(carousel._directionToOrder('left')).toEqual('prev') + expect(carousel._directionToOrder('prev')).toEqual('prev') + expect(carousel._directionToOrder('right')).toEqual('next') + expect(carousel._directionToOrder('next')).toEqual('next') + + expect(carousel._orderToDirection('next')).toEqual('right') + expect(carousel._orderToDirection('prev')).toEqual('left') + }) + + it('"_directionToOrder" and "_orderToDirection" must return the right results when rtl=true', () => { + document.documentElement.dir = 'rtl' + fixtureEl.innerHTML = '
' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + expect(util.isRTL()).toEqual(true, 'rtl has to be true') + + expect(carousel._directionToOrder('left')).toEqual('next') + expect(carousel._directionToOrder('prev')).toEqual('prev') + expect(carousel._directionToOrder('right')).toEqual('prev') + expect(carousel._directionToOrder('next')).toEqual('next') + + expect(carousel._orderToDirection('next')).toEqual('left') + expect(carousel._orderToDirection('prev')).toEqual('right') + document.documentElement.dir = 'ltl' + }) + + it('"_slide" has to call _directionToOrder and "_orderToDirection"', () => { + fixtureEl.innerHTML = '
' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + const spy = spyOn(carousel, '_directionToOrder').and.callThrough() + const spy2 = spyOn(carousel, '_orderToDirection').and.callThrough() + + carousel._slide('left') + expect(spy).toHaveBeenCalledWith('left') + expect(spy2).toHaveBeenCalledWith('prev') + + carousel._slide('right') + expect(spy).toHaveBeenCalledWith('right') + expect(spy2).toHaveBeenCalledWith('next') + }) + + it('"_slide" has to call "_directionToOrder" and "_orderToDirection" when rtl=true', () => { + document.documentElement.dir = 'rtl' + fixtureEl.innerHTML = '
' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + const spy = spyOn(carousel, '_directionToOrder').and.callThrough() + const spy2 = spyOn(carousel, '_orderToDirection').and.callThrough() + + carousel._slide('left') + expect(spy).toHaveBeenCalledWith('left') + expect(spy2).toHaveBeenCalledWith('next') + + carousel._slide('right') + expect(spy).toHaveBeenCalledWith('right') + expect(spy2).toHaveBeenCalledWith('prev') + + document.documentElement.dir = 'ltl' + }) + }) describe('dispose', () => { it('should destroy a carousel', () => { From 3ce0a8d3ecc05ac43fa5f5da0c5fc1aaea7742d5 Mon Sep 17 00:00:00 2001 From: "Patrick H. Lauke" Date: Wed, 17 Mar 2021 08:52:40 +0000 Subject: [PATCH 18/38] Dynamic tab should not show when triggered on `disabled` element (#33257) * show() should bail if the trigger has `disabled` attribute * use 'isDisabled' helper Co-authored-by: GeoSot Co-authored-by: XhmikosR --- js/src/tab.js | 4 ++-- js/tests/unit/tab.spec.js | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/js/src/tab.js b/js/src/tab.js index 95968f4f8ba8..ec3d790b09e1 100644 --- a/js/src/tab.js +++ b/js/src/tab.js @@ -10,6 +10,7 @@ import { emulateTransitionEnd, getElementFromSelector, getTransitionDurationFromElement, + isDisabled, reflow } from './util/index' import Data from './dom/data' @@ -36,7 +37,6 @@ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}` const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu' const CLASS_NAME_ACTIVE = 'active' -const CLASS_NAME_DISABLED = 'disabled' const CLASS_NAME_FADE = 'fade' const CLASS_NAME_SHOW = 'show' @@ -67,7 +67,7 @@ class Tab extends BaseComponent { if ((this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) || - this._element.classList.contains(CLASS_NAME_DISABLED)) { + isDisabled(this._element)) { return } diff --git a/js/tests/unit/tab.spec.js b/js/tests/unit/tab.spec.js index 35d17e16b972..231cf894c0f4 100644 --- a/js/tests/unit/tab.spec.js +++ b/js/tests/unit/tab.spec.js @@ -198,11 +198,37 @@ describe('Tab', () => { }, 30) }) - it('should not fire shown when tab is disabled', done => { + it('should not fire shown when tab has disabled attribute', done => { fixtureEl.innerHTML = [ '', + '
', + '
', + '
', + '
' + ].join('') + + const triggerDisabled = fixtureEl.querySelector('button[disabled]') + const tab = new Tab(triggerDisabled) + + triggerDisabled.addEventListener('shown.bs.tab', () => { + throw new Error('should not trigger shown event') + }) + + tab.show() + setTimeout(() => { + expect().nothing() + done() + }, 30) + }) + + it('should not fire shown when tab has disabled class', done => { + fixtureEl.innerHTML = [ + '', '
', '
', @@ -210,7 +236,7 @@ describe('Tab', () => { '
' ].join('') - const triggerDisabled = fixtureEl.querySelector('button.disabled') + const triggerDisabled = fixtureEl.querySelector('a.disabled') const tab = new Tab(triggerDisabled) triggerDisabled.addEventListener('shown.bs.tab', () => { From 72ef1dfdbd4016d0b4d51343d9ffa48c3530ff63 Mon Sep 17 00:00:00 2001 From: Rohit Sharma Date: Thu, 18 Mar 2021 00:55:57 +0530 Subject: [PATCH 19/38] Update unit tests for Popper V2 (#32662) --- js/tests/unit/dropdown.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/tests/unit/dropdown.spec.js b/js/tests/unit/dropdown.spec.js index b7e771c95041..d6fdaca5efbb 100644 --- a/js/tests/unit/dropdown.spec.js +++ b/js/tests/unit/dropdown.spec.js @@ -1112,7 +1112,7 @@ describe('Dropdown', () => { btnDropdown.addEventListener('shown.bs.dropdown', () => { // Popper adds this attribute when we use it - expect(dropdownMenu.getAttribute('x-placement')).toEqual(null) + expect(dropdownMenu.getAttribute('data-popper-placement')).toEqual(null) done() }) From 26d8955de255277b9ba6ce5290a9ff540edf0738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Semih=20Raif=20G=C3=BCrel?= Date: Wed, 17 Mar 2021 22:55:13 +0300 Subject: [PATCH 20/38] Utilities to Utilities API (Borders doc page) (#33380) --- site/content/docs/5.0/utilities/borders.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/docs/5.0/utilities/borders.md b/site/content/docs/5.0/utilities/borders.md index 14f700529190..6ba1174c9d51 100644 --- a/site/content/docs/5.0/utilities/borders.md +++ b/site/content/docs/5.0/utilities/borders.md @@ -90,7 +90,7 @@ Use the scaling classes for larger or smaller rounded corners. Sizes range from {{< scss-docs name="border-radius-mixins" file="scss/mixins/_border-radius.scss" >}} -### Utilities +### Utilities API Border utilities are declared in our utilities API in `scss/_utilities.scss`. [Learn how to use the utilities API.]({{< docsref "/utilities/api#using-the-api" >}}) From a88d61db6f8eb461a1bcf568f78e74514b79f0f1 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Thu, 18 Mar 2021 17:45:12 +0200 Subject: [PATCH 21/38] BrowserStack: test on iPhone 12 (#33398) --- js/tests/browsers.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/tests/browsers.js b/js/tests/browsers.js index 2e1bd3a806ec..00ad77ad7411 100644 --- a/js/tests/browsers.js +++ b/js/tests/browsers.js @@ -44,11 +44,11 @@ const browsers = { device: 'iPhone 7', real_mobile: true }, - iphone11: { + iphone12: { base: 'BrowserStack', os: 'ios', - os_version: '13.0', - device: 'iPhone 11', + os_version: '14.0', + device: 'iPhone 12', real_mobile: true }, pixel2: { From f4f687762c763ac6bc855309a44be5565290263e Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Thu, 18 Mar 2021 17:46:55 +0200 Subject: [PATCH 22/38] .browserslistrc: remove the Edge workaround. (#33397) It seems that Legacy Edge has been moved to dead, so this is no loner needed. --- .browserslistrc | 3 --- 1 file changed, 3 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index b8e384bc990e..cc24a06a0505 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -5,9 +5,6 @@ last 2 major versions not dead Chrome >= 60 Firefox >= 60 -# needed since Legacy Edge still has usage; 79 was the first Chromium Edge version -# should be removed in the future when its usage drops or when it's moved to dead browsers -not Edge < 79 Firefox ESR iOS >= 10 Safari >= 10 From df2d5b6a37b54ff967edfa21a630cd1ecd223f7c Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Thu, 18 Mar 2021 21:17:45 +0200 Subject: [PATCH 23/38] README.md: use shields.io for the tests badge too (#33401) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bda93599c6d2..449d1c698985 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Read the [Getting started page](https://getbootstrap.com/docs/5.0/getting-starte ## Status [![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/) -[![Build Status](https://github.com/twbs/bootstrap/workflows/JS%20Tests/badge.svg?branch=main)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain) +[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain) [![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap) [![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap) [![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap) From e775c494f2d54d21204f9449a232ec096f702b77 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Mon, 22 Mar 2021 13:01:08 -0700 Subject: [PATCH 24/38] Fix flush accordion styles --- scss/_accordion.scss | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scss/_accordion.scss b/scss/_accordion.scss index 294d5229be76..ae1ca0fbb735 100644 --- a/scss/_accordion.scss +++ b/scss/_accordion.scss @@ -102,11 +102,14 @@ } .accordion-item { + border-right: 0; + border-left: 0; @include border-radius(0); + &:first-child { border-top: 0; } + &:last-child { border-bottom: 0; } + .accordion-button { - border-right: 0; - border-left: 0; @include border-radius(0); } } From a3ad7327f233cac4bf1c9431bf99e47ab8d5f551 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Mon, 22 Mar 2021 13:59:14 -0700 Subject: [PATCH 25/38] Update examples (#33214) * Add updated Jumbotron example made from utilities * Update starter template example with new design and links * Update some existing examples and their screenshots * Add four new snippet-based examples * Update layout to improve things a bit * WIP * Add d-block to images * Fix horizontal scroll * move d-block to the anchor Co-authored-by: XhmikosR --- site/content/docs/5.0/examples/_index.md | 2 +- .../docs/5.0/examples/checkout/index.html | 6 +- .../docs/5.0/examples/features/features.css | 61 +++ .../docs/5.0/examples/features/index.html | 285 +++++++++++++ .../examples/features/unsplash-photo-1.jpg | Bin 0 -> 10451 bytes .../examples/features/unsplash-photo-2.jpg | Bin 0 -> 113018 bytes .../examples/features/unsplash-photo-3.jpg | Bin 0 -> 40607 bytes .../docs/5.0/examples/headers/headers.css | 32 ++ .../docs/5.0/examples/headers/index.html | 290 +++++++++++++ .../5.0/examples/heroes/bootstrap-docs.png | Bin 0 -> 371399 bytes .../5.0/examples/heroes/bootstrap-themes.png | Bin 0 -> 278159 bytes .../docs/5.0/examples/heroes/heroes.css | 11 + .../docs/5.0/examples/heroes/index.html | 123 ++++++ .../docs/5.0/examples/jumbotron/index.html | 45 ++ .../docs/5.0/examples/pricing/index.html | 222 ++++++---- .../docs/5.0/examples/pricing/pricing.css | 4 + .../docs/5.0/examples/sidebars/index.html | 387 ++++++++++++++++++ .../docs/5.0/examples/sidebars/sidebars.css | 82 ++++ .../docs/5.0/examples/sidebars/sidebars.js | 8 + .../docs/5.0/examples/sign-in/index.html | 14 +- .../docs/5.0/examples/sign-in/signin.css | 13 +- .../5.0/examples/starter-template/index.html | 73 ++-- .../starter-template/starter-template.css | 19 +- site/data/examples.yml | 14 + site/layouts/_default/single.html | 22 +- .../docs/5.0/assets/img/examples/blog.png | Bin 32843 -> 15245 bytes .../docs/5.0/assets/img/examples/carousel.png | Bin 21450 -> 13314 bytes .../docs/5.0/assets/img/examples/checkout.png | Bin 9884 -> 7639 bytes .../5.0/assets/img/examples/checkout@2x.png | Bin 25985 -> 19105 bytes .../5.0/assets/img/examples/dashboard.png | Bin 24376 -> 11914 bytes .../docs/5.0/assets/img/examples/features.png | Bin 0 -> 6067 bytes .../5.0/assets/img/examples/features@2x.png | Bin 0 -> 15002 bytes .../docs/5.0/assets/img/examples/grid.png | Bin 37960 -> 14485 bytes .../docs/5.0/assets/img/examples/headers.png | Bin 0 -> 5197 bytes .../5.0/assets/img/examples/headers@2x.png | Bin 0 -> 12639 bytes .../docs/5.0/assets/img/examples/heroes.png | Bin 0 -> 9017 bytes .../5.0/assets/img/examples/heroes@2x.png | Bin 0 -> 23433 bytes .../5.0/assets/img/examples/jumbotron.png | Bin 31403 -> 9155 bytes .../5.0/assets/img/examples/jumbotron@2x.png | Bin 38408 -> 23316 bytes .../assets/img/examples/offcanvas-navbar.png | Bin 20148 -> 9691 bytes .../docs/5.0/assets/img/examples/pricing.png | Bin 25033 -> 11621 bytes .../docs/5.0/assets/img/examples/product.png | Bin 24977 -> 12906 bytes .../docs/5.0/assets/img/examples/sidebars.png | Bin 0 -> 12287 bytes .../5.0/assets/img/examples/sidebars@2x.png | Bin 0 -> 33499 bytes .../docs/5.0/assets/img/examples/sign-in.png | Bin 2501 -> 2199 bytes .../5.0/assets/img/examples/sign-in@2x.png | Bin 5240 -> 4568 bytes .../assets/img/examples/starter-template.png | Bin 9761 -> 7753 bytes .../img/examples/starter-template@2x.png | Bin 11334 -> 20134 bytes .../img/examples/sticky-footer-navbar.png | Bin 14167 -> 6979 bytes .../5.0/assets/img/examples/sticky-footer.png | Bin 8170 -> 4280 bytes 50 files changed, 1573 insertions(+), 140 deletions(-) create mode 100644 site/content/docs/5.0/examples/features/features.css create mode 100644 site/content/docs/5.0/examples/features/index.html create mode 100644 site/content/docs/5.0/examples/features/unsplash-photo-1.jpg create mode 100644 site/content/docs/5.0/examples/features/unsplash-photo-2.jpg create mode 100644 site/content/docs/5.0/examples/features/unsplash-photo-3.jpg create mode 100644 site/content/docs/5.0/examples/headers/headers.css create mode 100644 site/content/docs/5.0/examples/headers/index.html create mode 100644 site/content/docs/5.0/examples/heroes/bootstrap-docs.png create mode 100644 site/content/docs/5.0/examples/heroes/bootstrap-themes.png create mode 100644 site/content/docs/5.0/examples/heroes/heroes.css create mode 100644 site/content/docs/5.0/examples/heroes/index.html create mode 100644 site/content/docs/5.0/examples/jumbotron/index.html create mode 100644 site/content/docs/5.0/examples/sidebars/index.html create mode 100644 site/content/docs/5.0/examples/sidebars/sidebars.css create mode 100644 site/content/docs/5.0/examples/sidebars/sidebars.js create mode 100644 site/static/docs/5.0/assets/img/examples/features.png create mode 100644 site/static/docs/5.0/assets/img/examples/features@2x.png create mode 100644 site/static/docs/5.0/assets/img/examples/headers.png create mode 100644 site/static/docs/5.0/assets/img/examples/headers@2x.png create mode 100644 site/static/docs/5.0/assets/img/examples/heroes.png create mode 100644 site/static/docs/5.0/assets/img/examples/heroes@2x.png create mode 100644 site/static/docs/5.0/assets/img/examples/sidebars.png create mode 100644 site/static/docs/5.0/assets/img/examples/sidebars@2x.png diff --git a/site/content/docs/5.0/examples/_index.md b/site/content/docs/5.0/examples/_index.md index 4d747cd78713..3d5bfab2fb46 100644 --- a/site/content/docs/5.0/examples/_index.md +++ b/site/content/docs/5.0/examples/_index.md @@ -19,7 +19,7 @@ aliases: "/examples/" {{- $len := len $entry.examples -}} {{ if (eq $i 0) }}
{{ end }} -
+

- Your cart - 3 + Your cart + 3

+ +
+ +
+

Centered screenshot

+
+

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

+
+ + +
+
+
+
+ Example image +
+
+
+ +
+ +
+
+
+ Bootstrap Themes +
+
+

Responsive left-aligned hero with image

+

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

+
+ + +
+
+
+
+ +
+ +
+
+
+

Vertically centered hero sign-up form

+

Below is an example form built entirely with Bootstrap’s form controls. Each required form group has a validation state that can be triggered by attempting to submit the form without completing it.

+
+
+
+
+ + +
+
+ + +
+
+ +
+ +
+ By clicking Sign up, you agree to the terms of use. +
+
+
+
+ +
+ +
+
+
+

Border hero with cropped image and shadows

+

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

+
+ + +
+
+
+
+ +
+
+
+
+ +
+ +
+
+

Dark mode hero

+
+

Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins.

+
+ + +
+
+
+
+ +
diff --git a/site/content/docs/5.0/examples/jumbotron/index.html b/site/content/docs/5.0/examples/jumbotron/index.html new file mode 100644 index 000000000000..99cc61dee34c --- /dev/null +++ b/site/content/docs/5.0/examples/jumbotron/index.html @@ -0,0 +1,45 @@ +--- +layout: examples +title: Jumbotron example +include_js: false +--- + +
+
+
+ + Bootstrap + Jumbotron example + +
+ +
+
+

Custom jumbotron

+

Using a series of utilities, you can create this jumbotron, just like the one in previous versions of Bootstrap. Check out the examples below for how you can remix and restyle it to your liking.

+ +
+
+ +
+
+
+

Change the background

+

Swap the background-color utility and add a `.text-*` color utility to mix up the jumbotron look. Then, mix and match with additional component themes and more.

+ +
+
+
+
+

Add borders

+

Or, keep it light and add a border for some added definition to the boundaries of your content. Be sure to look under the hood at the source HTML here as we've adjusted the alignment and sizing of both column's content for equal-height.

+ +
+
+
+ +
+ © {{< year >}} +
+
+
diff --git a/site/content/docs/5.0/examples/pricing/index.html b/site/content/docs/5.0/examples/pricing/index.html index 57d4747ddff3..5f09c529fd62 100644 --- a/site/content/docs/5.0/examples/pricing/index.html +++ b/site/content/docs/5.0/examples/pricing/index.html @@ -6,76 +6,144 @@ include_js: false --- -
-

Company name

- - Sign up -
+ + + Check + + + -
-
-

Pricing

-

Quickly build an effective pricing table for your potential customers with this Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.

+
+
+ + Bootstrap + Pricing example + + + +
+ +
+

Pricing

+

Quickly build an effective pricing table for your potential customers with this Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.

-
-
-
-
-

Free

-
-
-

$0 / mo

-
    -
  • 10 users included
  • -
  • 2 GB of storage
  • -
  • Email support
  • -
  • Help center access
  • -
- -
-
-
-
-
-
-

Pro

-
-
-

$15 / mo

-
    -
  • 20 users included
  • -
  • 10 GB of storage
  • -
  • Priority email support
  • -
  • Help center access
  • -
- +
+
+
+
+
+

Free

+
+
+

$0/mo

+
    +
  • 10 users included
  • +
  • 2 GB of storage
  • +
  • Email support
  • +
  • Help center access
  • +
+ +
+
-
-
-
-
-
-

Enterprise

+
+
+
+

Pro

+
+
+

$15/mo

+
    +
  • 20 users included
  • +
  • 10 GB of storage
  • +
  • Priority email support
  • +
  • Help center access
  • +
+ +
+
-
-

$29 / mo

-
    -
  • 30 users included
  • -
  • 15 GB of storage
  • -
  • Phone and email support
  • -
  • Help center access
  • -
- +
+
+
+

Enterprise

+
+
+

$29/mo

+
    +
  • 30 users included
  • +
  • 15 GB of storage
  • +
  • Phone and email support
  • +
  • Help center access
  • +
+ +
+
+ +

Compare plans

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FreeProEnterprise
Public
Private
Permissions
Sharing
Unlimited members
Extra security
-
+
- +
diff --git a/site/content/docs/5.0/examples/pricing/pricing.css b/site/content/docs/5.0/examples/pricing/pricing.css index 70afca134bb2..c7304d10be4e 100644 --- a/site/content/docs/5.0/examples/pricing/pricing.css +++ b/site/content/docs/5.0/examples/pricing/pricing.css @@ -1,3 +1,7 @@ +body { + background-image: linear-gradient(180deg, #eee, #fff 100px, #fff); +} + .container { max-width: 960px; } diff --git a/site/content/docs/5.0/examples/sidebars/index.html b/site/content/docs/5.0/examples/sidebars/index.html new file mode 100644 index 000000000000..76feca91703a --- /dev/null +++ b/site/content/docs/5.0/examples/sidebars/index.html @@ -0,0 +1,387 @@ +--- +layout: examples +title: Sidebars +extra_css: + - "sidebars.css" +extra_js: + - src: "sidebars.js" +body_class: "" +--- + + + + Bootstrap + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ +
+ + + Collapsible + + +
+ +
+ + + +
diff --git a/site/content/docs/5.0/examples/sidebars/sidebars.css b/site/content/docs/5.0/examples/sidebars/sidebars.css new file mode 100644 index 000000000000..d034f3af15f0 --- /dev/null +++ b/site/content/docs/5.0/examples/sidebars/sidebars.css @@ -0,0 +1,82 @@ +body { + display: flex; + flex-wrap: nowrap; + height: 100vh; + height: -webkit-fill-available; + overflow-x: auto; + overflow-y: hidden; +} +body > * { + flex-shrink: 0; + min-height: -webkit-fill-available; +} + +.b-example-divider { + width: 1.5rem; + height: 100%; + background-color: rgba(0, 0, 0, .1); + border: solid rgba(0, 0, 0, .15); + border-width: 1px 0; + box-shadow: inset 0 .5em 1.5em rgba(0, 0, 0, .1), inset 0 .125em .5em rgba(0, 0, 0, .15); +} + +.bi { + vertical-align: -.125em; + pointer-events: none; + fill: currentColor; +} + +.dropdown-toggle { outline: 0; } + +.nav-flush .nav-link { + border-radius: 0; +} + +.btn-toggle { + display: inline-flex; + align-items: center; + padding: .25rem .5rem; + font-weight: 600; + color: rgba(0, 0, 0, .65); + background-color: transparent; + border: 0; +} +.btn-toggle:hover, +.btn-toggle:focus { + color: rgba(0, 0, 0, .85); + background-color: #d2f4ea; +} + +.btn-toggle::before { + width: 1.25em; + line-height: 0; + content: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e"); + transition: transform .35s ease; + transform-origin: .5em 50%; +} + +.btn-toggle[aria-expanded="true"] { + color: rgba(0, 0, 0, .85); +} +.btn-toggle[aria-expanded="true"]::before { + transform: rotate(90deg); +} + +.btn-toggle-nav a { + display: inline-flex; + padding: .1875rem .5rem; + margin-top: .125rem; + margin-left: 1.25rem; + text-decoration: none; +} +.btn-toggle-nav a:hover, +.btn-toggle-nav a:focus { + background-color: #d2f4ea; +} + +.scrollarea { + overflow-y: auto; +} + +.fw-semibold { font-weight: 600; } +.lh-tight { line-height: 1.25; } diff --git a/site/content/docs/5.0/examples/sidebars/sidebars.js b/site/content/docs/5.0/examples/sidebars/sidebars.js new file mode 100644 index 000000000000..68384c1633e8 --- /dev/null +++ b/site/content/docs/5.0/examples/sidebars/sidebars.js @@ -0,0 +1,8 @@ +/* global bootstrap: false */ +(function () { + 'use strict' + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')) + tooltipTriggerList.forEach(function (tooltipTriggerEl) { + new bootstrap.Tooltip(tooltipTriggerEl) + }) +})() diff --git a/site/content/docs/5.0/examples/sign-in/index.html b/site/content/docs/5.0/examples/sign-in/index.html index 6fefc45e6c66..fb885ba41437 100644 --- a/site/content/docs/5.0/examples/sign-in/index.html +++ b/site/content/docs/5.0/examples/sign-in/index.html @@ -11,10 +11,16 @@

Please sign in

- - - - + +
+ + +
+
+ + +
+
diff --git a/site/content/docs/5.0/examples/starter-template/starter-template.css b/site/content/docs/5.0/examples/starter-template/starter-template.css index 6fb709105168..d03436db03be 100644 --- a/site/content/docs/5.0/examples/starter-template/starter-template.css +++ b/site/content/docs/5.0/examples/starter-template/starter-template.css @@ -1,3 +1,18 @@ -body { - padding-top: 5rem; +.icon-list { + padding-left: 0; + list-style: none; +} +.icon-list li { + display: flex; + align-items: flex-start; + margin-bottom: .25rem; +} +.icon-list li::before { + display: block; + flex-shrink: 0; + width: 1.5em; + height: 1.5em; + margin-right: .5rem; + content: ""; + background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23212529' viewBox='0 0 16 16'%3E%3Cpath d='M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0zM4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5H4.5z'/%3E%3C/svg%3E") no-repeat center center / 100% auto; } diff --git a/site/data/examples.yml b/site/data/examples.yml index d243bdad0dcc..9898363d60fb 100644 --- a/site/data/examples.yml +++ b/site/data/examples.yml @@ -1,3 +1,15 @@ +- category: Snippets + description: "Common patterns for building sites and apps that build on existing components and utilities with custom CSS and more." + examples: + - name: Headers + description: "Display your branding, navigation, search, and more with these header components" + - name: Heroes + description: "Set the stage on your homepage with heroes that feature clear calls to action." + - name: Features + description: "Explain the features, benefits, or other details in your marketing content." + - name: Sidebars + description: "Common navigation patterns ideal for offcanvas or multi-column layouts." + - category: Custom Components description: "Brand new components and templates to help folks quickly get started with Bootstrap and demonstrate best practices for adding onto the framework." examples: @@ -23,6 +35,8 @@ description: "Attach a footer to the bottom of the viewport when page content is short." - name: Sticky footer navbar description: "Attach a footer to the bottom of the viewport with a fixed top navbar." + - name: Jumbotron + description: "Use utilities to recreate and enhance Bootstrap 4's jumbotron." - category: Framework description: "Examples that focus on implementing uses of built-in components provided by Bootstrap." diff --git a/site/layouts/_default/single.html b/site/layouts/_default/single.html index 33e4f406e936..8ba99c7188af 100644 --- a/site/layouts/_default/single.html +++ b/site/layouts/_default/single.html @@ -1,15 +1,21 @@ {{ define "main" }}
-

{{ .Title | markdownify }}

-

{{ .Page.Params.Description | markdownify }}

- {{ if eq .Title "Examples" }} -
- Download examples - Download source code +
+
+

{{ .Title | markdownify }}

+

{{ .Page.Params.Description | markdownify }}

+ {{ if eq .Title "Examples" }} + + {{ end }} +
+
+ {{ partial "ads" . }} +
- {{ end }} - {{ partial "ads" . }}
diff --git a/site/static/docs/5.0/assets/img/examples/blog.png b/site/static/docs/5.0/assets/img/examples/blog.png index 6d6c8356bc95a04d8f454642bdf2b01222f6f8c1..3ce428418e1af9fb8beb5f661966dc5c2c0c75c6 100644 GIT binary patch literal 15245 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 R{;!NAB_=OgCt?`%e*k96%}D?N literal 32843 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 Q)&Kwi07*qoM6N<$f_MR*^Z)<= diff --git a/site/static/docs/5.0/assets/img/examples/checkout.png b/site/static/docs/5.0/assets/img/examples/checkout.png index 9e4c3fadc57b3d720954d28adfbe8592a5837e2b..cb81ef2d7ca0021f5a4c2e7df400f3d398f0f31c 100644 GIT binary patch literal 7639 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%0DGemm@*&?+Lu1?h!dKXfgJmzVLMy! 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 O0qQE+%9V=X&;JL<1*ACu literal 24376 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 literal 0 HcmV?d00001 diff --git a/site/static/docs/5.0/assets/img/examples/features@2x.png b/site/static/docs/5.0/assets/img/examples/features@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..88bd3301237ffd348381b8b64dc711c7e3808f7c GIT binary patch literal 15002 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 literal 0 HcmV?d00001 diff --git a/site/static/docs/5.0/assets/img/examples/grid.png b/site/static/docs/5.0/assets/img/examples/grid.png index b3b5b35650c3c713416b053fb449410b463a6733..2c18784c238ab0d2f21aa85924a122552d355faa 100644 GIT binary patch literal 14485 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 literal 0 HcmV?d00001 diff --git a/site/static/docs/5.0/assets/img/examples/headers@2x.png b/site/static/docs/5.0/assets/img/examples/headers@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..234f9b1e6d9c7655e0ef74f5c1fadc4453bb8dd6 GIT binary patch literal 12639 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 literal 0 HcmV?d00001 diff --git a/site/static/docs/5.0/assets/img/examples/heroes.png b/site/static/docs/5.0/assets/img/examples/heroes.png new file mode 100644 index 0000000000000000000000000000000000000000..e9bc3e627af922d1974e8d8d982d1c363d636c7c GIT binary patch literal 9017 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⪚P~7 zg82BRIodR_Kh=V+vk(h(7X?0G&%%u+k#~I_1XzvFyubvcE{L4BxRH4((>!H=7WYL#)Thp+^UZDEbX_> ziq8Wbe!T7bElpyk%Dp5=%{og`Xd&r`6f2v+q^oJAR2{zV2`>_|3-_SHv~#geH@kAgGLTgnK%UJy2mdRf zK(I=)aZHS^Uv3kU)L86hp6~y`&*|ZHRDL4ia7jM3k<-kgjG)2PDBU$ealHii;_-Rw25_(N+7P8Km)0@cZ_vH06GN+1qWVJmI;E=shh=& z8cJYV=%|oG#&gSE!eMrvL^fd_uO1@c{}=IqJ>O8{Zyy3qI?r)1^*y`(zL$)+=9RHh zlvxLO96jk|mst-MTId^)R~oJW6N|COop;yR{IhfP?o)#9lXC==&YbH8FX=Lke?VsJ ztVteP^4^j6ZMxfdoJ4HbRR$`fAy=r~3%&0s9d=~+f>fQexA^>p7^``vmZpcCVkl!KV`)!QIIGiFexh~#F zd=937_Bz=g79T>cR2JW?EFyA?4Up|rK4+N(`4#;Ia%~#~sWa@AQy=LY&*OBZQ@$d!Iht4dxA`*jTPC!4%cCX|ur#zGNbPt;k)p*#cWIvEuGRaVle3f}) zbCYgdjC=~OaJz3Vglp0yA^0p4EhzxP93X37C)raDoW(pv!BrDN*ePHeoRldLpCYw$0TJw+X z)#$vj;7g*eJ8 zey}vYkY0K#2(Og_*;Q>|MJQ%EP%qKM87+s=Pj-%%HXWk~K;Qt~Z8J3pPU`yoLkL!f zM1Z?fgL?phgH;u*TVwvAGvNNKFQ6tdYx4;;NQ>jI3`oum0RjPd8Co<6Qym0Us(rb} zdvTjf;m;X@c@3PvAO~EAY$K3FilJQF;agb6mM+Cga7w5~a3BP8&r-$LyTe-{oPob| z8hYn9S{QoJU+nVa^ei8-mwi4EI0#fWkt(Pn&sPL+=E?v9zaV9AU%@_(lJhAWo}|8S z{iTKB_>h1!J$_3ZeDUfmh;qEQnJX6btPUs5IdT9sXywXv2puU7R5B|!1w2s<|0d7x zOWbz1XZU~`E>ZaH|5lE3SH*xIu%nh0f0n$#lU(G?y9`{|#C2KI~}C&hp&F<(yc-U+Ue88tkQaa4mPjvENo z5N5QwnZ?PBdS^V$v_+IGDtt;XOSve=1PVA-9Ut>(?QmDWWV3gLv6|f4FA}PUD@!;# zKO=yVG{0wFXluZBLOyH6xV26yd|(89PscxrLyc0Q`Wtx)hqKc!6RzF2*$XR{HXh$N zM)Y%?w|!Ur_|7)RAst~^D8KP1CW%}EX8PlNwAgyY>cbx_o8kMpgy`}i_Y*2ge23o5 za25J9d$hnl5<5hj^abNao)v>E2&Z%K*Rv(LPFuR$S?W8?`0xA6i{!5#%S7#0Fp7{+ zGLD=t3AiV%?`SAd9rPQP&kTq1mXq!xnK2$@U0rKyN$c>nKGsNs0bL8vC94m$(#ksps9PwTIoJ)4D?A0i-)lzu~iAfSRF3r z)a5}1j1Wx5uRjz$9mRKoG%+qia=Z;=?zG{`5^6v-n;@#}26@TqjYn@g8}~}lX5n;i zM64W1>0{QHdxv5XT*UDYh}hMc$S&JIoqJyp%Zy#4*^SzI&-hcs3{S7#5#t^ebl|F%N|W4%4V;em0*0^buvbWs_&pWL4CgCXmtpca&y9()kw z>c)Mdg{twQlJ1WR+IW)P*8DVS*g9?E^@@+40=?noUEvpK$b_{tpxhsBYsRGq%B*9|~ZyC?C6H+*R;(T;yE!^C62|u zwklX=A7jQNuR~aI7wthXQs#6}Ho5*5f4IWxA`MF&anNQ90 z5bKy16Tu(;%p}OPdZI|J;(a6CRGsb&Kirzl8&gj@qM<#{5>m?5@H)34O5J8!=wfK_ zlpF3(f0OQ#0{t=N_kc`5Hcjv!GCBUqVsv#wOl@`QY*;__LfhgBmFypIX}04gZY+nr zrEuV4#l9nfulS3*&%-11+mE|Dexr?^+MMtTq5C;#Vyr{fEz8kWZF;XTE7=_epYvCgQGqs_P`f#5ul^7|JBQ~XIDj_U9We@VDyfF@i@a8-b zCUP?7*MXDLKSRwhYcq$9XHqC37xjD{9&k_$+9hL?vUt9SM3CWsU* zz#}D+kyJC3ZpxF_g}XfTLyl7`rwO?Rzpat~BMK%icR~pZQo;x4FAyd`<@0!x`pk(?x1qaivZ1t7(@d^&w z+T>XlB67m>*Sz~4Q*=1skvW3YowClwV}A+Ly=A!fm1H^u7;`o$t!+D=5tPh*UG-DA zQ60!-B4EALb5mBQZGC0XxOEN%YcEdz-BXt_gHP0N&&wpqtBA$JRcv3W7+|relL`$5 zPvr>7|55j0s<#8~TKEW!2*JezR|OLkY^g`uIfNZ{ob_0>)+GRr@cyLepSq74co*0! zlquj-?nG{hrQi@TI4In!xJlc`xUFKydNe4h9E}FP_A2e{GwG3V!~dLk<%FQKY}h&W z6S8F61ZE;Zs56~-uFr%?oN0+k;Um_i_?oIGhxd=U#?)<{-|w9hCM1}!xb|5^^~w7) zV({3tH;#Sa4@wnrn(NQ7^d2M>noLNyxAWMU`pw=3IvY>rajGA7Die+tKVv+6{!BvL zT-)+(n!mGKw|OcCINP4c#O*k(+{Az^SvWd3r}HGy@)%#?Id^`Udxo-VBq2EaWNa$* zY08M$>fe!YM*1rd1da|vxDOut%ioA&9&hAd@EU1_cF0c`TUuAeK7?jLGt;5fMchguA*^JwnUfwF=dildW% z;cplrDFjJ))9^ioL&(8sXbk_MBigjk6?-$W=;gHQZS~}u1bQ6!j)FYKr6SGBV}WWn zsdQ?bNpT>v#djeP#jnAcx~OH>!;$rDxhIZIPtdJl*4H~~fwkfvx(y_fGs}HnV0Nxe zFA*>DOV`$`O|!KYV103(H`^11yIAhpuRQZH>1th33N5e4@Nm;3w-I%{em<)k;DBYX zVE=I(mQv(W&Z2;qt_qr)H>o8iOo*N6a=EnJ)PqcIF3lfu-*H!5d0(_UzBruH*rEh~ zRNc&6w(KifW4wun80U822F^Y4b5P+&6^csYm1 zbnpgKO;$vTP6TKEeeG{u!f;{WAODCEf(L(IfYK>`gR(wml+08=>g`v+K}mLEb^X5( z5CC>fXB7*uX~y}BRkmq)TIil?gG!6!StKauXDg+d>@nr zAi_l9e8wi4j1-Rf3?W?sw>O+I4pt33p{56n&D58oO_MwfEt?ynpCd_#71SeOKk5Le zlrBR}DiX9qI>@Qv6s5pC6L5Hb)DmHtTZ4XmLWf2yoR(1MkH2keiS*VnbohF9fOja!Oc14B|^^Iz$_hDNZ) zY1%a#x+Qdl2L#X@0+S8dI^qX82=9IBlGuEs@(RGDCat-6bDo!X0Z~~(xnCCs?-abx zBc*I9#57mt7_MO=zD9Rp;U3X(xpJuY}9P6Z~zih3X;zPg2nQH$T#`qUPr(>GU7Pm-Id$A zLHfbYm5YG`q+F{1-}HE|FSPoXkuP@+lp$jgl|W?7&u-bjbmqu9@|+zge#-Wc`H<*x zNM2&xHJnM<0!XM9zbGmTy0HeiIKuoYI|itQUm-Sap4_>8VXI%t0E%0(ZDqtwyl#kmYEyaT5lX!jCTaL=Foy{Vl^<`6y8DHs6cZo#Qa*cg zWX~;y@|9Vj+ssL1Z?^f77MJ7b?K(1sR4elPy@_qY{MgLn?jKUYMQ3IZ!dxAD_c$YD zl%R+jaGI%X`+>E?8rMCr?w%6e0q90TEYe^2pxeaT)U3R7&8+U9wSb20i8_z&m%Wja zjp4_OB*OGwyhHfNFb>Y>y_kKy)5z|N{mNX(r*ca$!&K5It*Qr$E+mF$MfZvJixDz6 zC{PxQlf$3m9NQR?4n~oB3n{K0MHA*lIx|?j$E9$S{O;L4j4<=*0QRm9Ogx2n0iTYI z)(%5JN#KOAP}~oG8m|c;_46U22%-affMJC>pa5%hvqSKck$FyVOYv{A&xmzixbkRD zAuau2;xn5XJ=Jg;d*VcgdInNa%>jGe1}qfN4`^ z_MJD*)nML3eaKa)z)`yH>C@BO^YhE&!`s8n%i-S}Px7P5rrX7y``fFh`-`^(m19S& z>zCKphlfWPY;$38acgV)_V%u>zEMF*m4<CNAF4#C&se%gV++=|`%ny4K&FoyMQdUEMwARyM6|?NigUw)Rf%IeEe& zzR&%huc@sQ5EfV0)ba5P^z`vdNcu50Hf~~W1qlwlySsCAcJ1pQ=;-X`8`7QfaHzZI6( z3@^X&y1smHe9?+}%`L9z{{1Eoc^w{`6!m`Hzj)g?d{Yg3HHd$8&Up=uN{CCzT8C}5 zPQOjT-tv0huCHD#Q(jZD3U>AmMa9HLM8$-JMJOn!OjLyAKM9Gb@e>dd3J40_YpX(} zCFg5d_j{Ojx|pI|d6mo9)p}WEg1CrDNO^eq_yq)isVJ64aqe|9ad3X%;^v{DrTtgS z&BKd_kKdEc_N9wOxsr{8g^!JeZ+>>uL#599OQV-+W42F8YerUGTwaF%(0JE&Wzw|2 z*3U%8itiTHVP@@lp`&FH1#wQ$y7akZ_rBY!$M(|YmV(8e>b1t~`I6{~zpEEP2Ca+Z zhy6cc-)*|8Q)V}ZVq224XPc6SD$*L0bM9}R?rxv%{ylG=?`|J&t{+H~PE!B?Z5cVK zkLq5)<5ioK27W-;jCk1yvWlHVd(mCbNUU7>#=Y3yb(cBnl=n8#YurEn{C|`@n{A_? zpUX(5MT8B7E&e$I`=7%ti#7N>(~J7y2hrkyT!o$kd(F)1;C#yt%EzwO6DJI>MpW^x z=HiW95Zi;{iL71r-^9+VMl#_6jYM@;7)nL@z*cO zy$pA{{{xgBc87Ov%cFR;$OB70#{#Pq--X-tu=icOh_Ii##TspMC;L@q8|QW1J|%)* z`Ln0?w!7{2grR+&y+cHh!(_g?Q9vm~OmvyZ>}ft{(i`HG!UH(i7E;U~{ z9@g^h)0eXw=aIK8zDxiEW9CdUFgj{pgfaZVI)c|h zszdPu=&ET$1Esa|L6}vIu;V}wIz|SOuU6<0fHlJjleP0J3v9S8dm|x}wlpa@0A63jtMx7FN#*i$N~U`m!TEAm^2_^2BSJ5X8&Jl@`k52zYFxgl z_}tH{dqP(t~iVig~9SApzdp4#6ez85Y zee8D4O0ZPomF5ybLZo6zcVv+VwI$BDN67*mA4R6hChb>u_rb`jpewPySE z9S2%rN4WNx#tVEyoBpX28apN)-U!hDQHUsP=IrwGSMk7gDvoPPtU42-ND%aVcz>xC z^*ZI%7sQLU&7e{l3|gOF)F~>9A#^4U-r@CzDY#CDCQe!>n3Mi51?cPtmfJ zG=*J*uSbJqy}g6!s4emN_;psGL}pv0-PNTIYSdLy3R<6aA{#&fMPn;m)2>ZrkgX0A#`M5_qxg2ddP3uTaD9B&3#`E#? z4!C!B>yQ=lQ+Mip@hF+R;PSiW)~+KR;;^qJq|Qeu^s(fn%haE9uw0xTsez>1aNpG` zRzlm0#&Hr>$iLW7#-0I$;E8ZaZ!s+lc`1{vai z;*E&<-A^Zm0X=DLz(OXnH44@{`cO=OP}?Tx2M6rs1y+P&e3#VYfT-- zZOT}AhX~9C;Z^cZC&il(CAb^w?TNtqT+Twk-|Vq)B+VWo@$)Xm<=G#P4t^GUlcKoW zOa@)vP#NE*GS;LJ=sV{qB+0!q`k@5bCY{nebLKRrm{-u#Fz&cn-PXS|8Ohz&WbIl) zG#urK9tNJv@2w%$3^$^6Vn{S>$X1+%7(}gqi&YL_nIf7dMCfFiiZNc}LhV#5M-xu{ z&FRMpGne>6sA4UUI^#7-?rpg88M8Ocq!WDWW(dADdRj*$uNmyBK=hi!bH-U^tQDcu zUqa25*xUI7Uhla*k(6iO!o9vQg^pc>D?Gj5yJgPks}Wv|>wTf?+@3JTYa)aPWaDX{*0C2K_+@Nn%DI4$yH%F_!o2^|FNrPE}d zZS=fdFlLC@Ql3kOGmMl#e644vv7KeQb9E7qB~%^uUXR7U?j9R)F#j7#?Gr3g!pVNA zrRu}=_0Zu7xY?(-ZJF{Rp9zK!OMM-#S_iRQP8i`hKectK)Qs`L-R7b7A?f4>Z7a4u zzeB4Ad}3LOA2G){0WWa0YW=;!80Uq5#<{;)iT#vEbgbP&2fK9*-xf;GK#j5bfJS?{ ziV)_=^r|^1a=;LuWK}w2E&L)1Ye$Fg8LGKg%QmWr8C)xYcskrC#&hdfbDzqh!!&d= ztn~?;SK7{kB&27_jX#H(WO;`>S<_qK`WLCYLjBLTQagCnxi%0xRp5Ld9?b7)yv}Z{ zt+2mGeFj>oL0^W#DQ|lzk`{o8rM0V<7QmM5%xX}Vf94A0N#b8$a-Cb5O-Gm4f258X zA4QGrz(%Rp3JFV2wkX<7{-&jg3~|Ws4gMRSWR1~7E6jx3H&Ai7{N1(h&tgxR_n-x9 zP898qE;y2GLBcwOB)D7U_uiTz+s9K=%ZRI%j@HKSGUke}(E4OMMaV^UgkJ8GO#f70 zJlzciPK{k%J>8vo{;KIJP87~%w##ji2~iuuSkQC~yvHMJJs@Aok9TkFjJbt<`1>DOXeoS#W#J< z#e7aZ^>44yOq45joUGQH>mgil^f|E-vC|M4AQf2h*82FX^LvOtva>f3R!=kt{@TBo zaAUNW+0=cu?v5$`GE7YYU06+Z4EUsSI=C`Ym^nX(w9!i)_^UMMC~?}%&#!y((Y~{y zg{HMic*ukqo(H^27Ne$ziANA%7y1^IjU5oeg zfvkQ;9Hex%aWHhiaB7v=8{^u#v4ys@mh>ipj0y<{_G*=^&xu+q8W8?Q0)M#ABcC@A zF*b@T0_&9V-^V@DfJ2RLp<%;gJf{6VN1R%fmmO3DZP}Q+j_V~Tp(0JQ~d?H3^;i(88KGTZ@0%+8*`-f}8AbS;SVzwOlcG-o zHDxa~y-dq_-Iq)0x_*x~UW3x=tMhNtt)Ib1GNZLX&bFkGjYU?{i+YKWf%h`#5f>ew zy#h#vvnr@u@ISi5_wBJysso`)?~skfJ>}ENKX>u{FfGL=Wvn*JZ^9^Q+8-Vc$0<%I zceMWKp9wq*FLtz1FLy79BsFd)I*D%mJ$Q0iU4Donst zZT;RrcFK{%m_B=9?iU$lCbsw--w6ws;1X0mRl1<Be}IkSSCv*c}Y(fU~(6PR#}TCo(bdUTu&=yt0t zuvTU5R0;kqrJI~kp2;8q7?8S~gv~cqPkNv#ulPT}$gIs8r<<@iCIkLKlie{REGB|} zF@~5(--hezxzQjOGg}UD9g8KI?j$|#oM*El_M9C+kL9b4Hhi)X{$)g(yZ8}6pN9rP zSo?OwO?RYLPHVuS#GodH1Jxz=3H)2zY`jC~6MPwoQ0!2~$D)ky_(j|i)ArT^yTV2X z^H7C;HsMhB+X^3CUfQ=A+pd^9OJsLyaZ;ER7? zYX>coIPucyVr@SE#25%&#grwiS~hJ^_vzm^Ro>jM^UV zq*BD?2uZCnICb27-jWaxnpds>i2pF2$-E(7GIhj`)aS`0^y7 zhX_(w`NEn2T30bt*A9^lC$=Od8?LXR81a`+4Q#FNKSMKRHD>`*eLX_~=b+;Xp(gR& zRcCOg|7r826QU1vRS5N^h4%xLG9DO!#vL#hG-F82zg!f}w=MN%0kgW%NYiJ%p4|g)fmizW)*(!zc8Vf}9d%l$ zsv8;dGorb0UN7TtDkLq!Z%l!$AlJ%+xH5|w*sx$kQzw8+cMFz|R#$~+p>499cv#MX zAJZUj7p~IxdImgAg%p*apDv@GDYHp&Vqj~3$2R?f6}ot z>^&7?gqDkDz2CsBs}ywtjg$AP&A?6%ififw?<}#=NVS#v(``-!fSPBB_j`Y)Ir=^d z%w_{!zc(CC@Xu@zf21A_WQa`m-Lyz68w2nSKj3&y?E-znwvc5AF12%}SeCFc`zO?K3uczda9o}YSuZ}3=c`972+L*7(KYD30` z+3V&;b`!r2@|n=Aj+^{zGcz6ITx)jl5%66(0{-`iqqnFU;Qi&1wo*PsnN^1h67MhB5TI4S}bL^R5X4WhyWsQ|sY;d}9gTRk~Lg*&z44;v(~ z^H4;?3%01$%O&l=cVyUJWk&6YhShipgm@G*2BR}@!;IJol)_Tje)+2J=r(-0d~nbu zQ1-FQU+Kl}JPL*dX>v~(_r9E8Jdk+QPZ1)Y9X18ShPZO}-aaq@Y+g_9@81~(R$lu5 zOH2J<QY7^LRP0 za;C?7yxllG04}5B^^y&YnVN%j+_yi*4~Sw_FtJ+{Ac?IFfq$)diSzaOOH6E8^N!{g z5>;gNt@LZ9x4o{OLr_2xn#ISNscLK`GDt&AY3$GZ)$U$PH#R}iDL!uTgIeSA))9==gjTfOM z!BCoodNpnqV?<-l(IR2^Cv4mq7Bvsp2?NZ$` zli=E3ga*v98XDLHk>VtTPGlN%K&h(f*Dw0(qGkBu6cxHMOPKgL(&nPevf?haF^^kC zZetB(TnNv-^7L4otOg?wZ}VGBC@Jsb7$c-^g^^t6N0oJsbxbVt+Uln@f}Pz1Y>*yU zaz@IZ2y}%~BLlJGd^ey?-ct2il*r36ac)2UDnmcgDB711Oy&E(ETLR5=z9C~PBN&( z6v7Q~D6rRQA_P8>p{ z@YG$#LoBw(UtlRSlXCbmpOyShu%4PLf1i zGKVo%X&H5`h^L;tt_4v+{HyPcXG^#RBHX{6-oJG}koVJMqV8%y!zA!7ztO)`<0~(e z^_+=qFKHl&Vx<0Pc;%CL(0=8J@XM$F!q52-E{$|R2}tX(Wd8fYKK@xv0BLHWI|6ow)W|Ouo}qL&%4pR@Sk$H1F;|fy}Y_vAH+u4{u~0 zDeSJKS`=_5UHOBdW9z8~FG?rjjVK05*}-b+7TnbqM&c;V|<{xANZ!vxdqd5f(Fw z>#5NKY>&IYJ3kIP-ZlABD;oshr0-HlpcBg?RYIIu)cGTvbB~>z$=z?b-p*~2!DY-8 zp})he^sn;z0sTPXPWoTZ#07{y@Nj4lUBKKC!fDF4@m?MLBh(qbn0&|EeE>}6&#yx> zP7m1XlMk9~+y;%8&+LsoeUiq*d=0AHQL3+r_xEMkuTxyruz#mK|9^7zK2*XlI}U_d zGJ+aFMA+rT=~oDV38;$h$yN=t?mfAxQ~cZuM5WBtdS)7>#|$bq=#I76#+DBqlxu!) z%&EP=zg>A2SdhmE|B4eH@FV=ZD4#eRi-JifstZUVd78iXZ>Qji{Yw%6?3|Lg+hCS$ zXnNwwgZ2rY(c!g>HtdkH^IE|2zwB=|s{5SZdA)J1clP{qq$_{V+22^Fh^>N%&)`T` zJTR&1_uzBs1e|a#m_?hVKunId*Ft{r<{TPsbd8nyTHDyrz8L#}Bk7KOAUXYA0cB|7T}c zU2p7gedMUG4G)x$By}0nRXZI$?Kaytt42)wkMBMCVzlhDj|SGTYH^y>`CTpNqn~H( z%?7{5N-8gYSHqL{xd2mFYL_(!Rex&K+&3ZRF$-`&%f|g(a^(2NIz#bNnqvcmXNPjR z+LJEJ65r%;_o!4IwB(mEPt&GN%bU7XUW2%52=DF?loh;0!ip~I(y6oSZa)j^EY`d2 zZ(nUkIJ(Z%80O>QUm;&{!R0k6S6!_0@2xf7NeIDHXl;lDM4%EX;KKu|$PNZZe*NXiCYm8; zSZhz91%Tr$zah$5eP_hdVIW3+QdruNtPXG%y=sLOdl*T ztOUyXc}fA!2Ta4fJmskc21mneO}&0LaxH_RQ54A+F%x`tna1NN5Yql4@jJiTHZNX% zfJgI@1kP7K(p(c_&It*fA>fnS+u;}wwb4Cqo-+Y~7GccS*#NDNEN!IS+D$ za8XgQ_)+<-@7pp%l^nUeN=VSan=>RkJAEQ7cW@T*?OBAgurUrSduwg3$-4F9k^n^w z!%*kCD9Q(+@-aXYYZmWOZGw*`0`o#2pt14jW!}|rYV0#q8w0SSafcYnl`ZsR@p33? z=xMf1a=9W0?IPf6ED{&?UL`CY#1U|1y86n~RiogUN-z3^-kBn6G*n2|vy`n>JuxtV z!5m)|;|O5*XM*G)m>wgvAso%w&MZ0fApb5&=3shgZ|I^O5hyx-5G)yFKug8ZaBlM$ z0Kp_d@!N7~>=rX1VBMO;C`YoXT*BSc%O9;eM0GojT=nuO<4wG@(<)oAA%_U|k) zj=V&OW>R_E0zo`VxpUn)dM3Y1_K`@Qfwm2Lak~C?g@^~J zQviiQNk?&9$3`}0^AF2`5<*%lw!NTI-by4QhH0eN%J+hlJ$~8b8bNZ+Fs*~qt5IuD zi#i6dun>U%o+LZ8rq7uCU$`3_NFw7H2H92GQ3YVSoM4kZE`*|WgsQgMz-qCR~@NY55U)nb49)CdJ2x%U?YczV4-m~fMAGZrY>SMoC zshaq)Ng*owX4pR!%wCAn9Zr!*=_7P$@eLe+^r!Y(h50Slzr)&*47rd0byqTamlZub zs~F~B&{y+4H9b9D_2NS#oy?2wAyO4VOw)#Q^-|y8B8jGe01X@AH#0|nDL`Eu@PB2% z|5pKGAtY4o8_#Cl+0mSxV>5>bc7{LeT>ln~URyoKtGoaF5inOd)X`g7-#7NN%ThSQ z5Rm98nL4;|R^res{RRdgdC3E)i~(@b5Fi!@2tgbQK+;C)H3M!$td>CbL~W;IUW%0o zH~^sLU+)^=F$btOWa%CXy3LjPH9@CjT0@HmVYBuP|6X=}C*X`rk;x4cHo*va5BJ=E zQOLzoTZ45VII}}*qdvzp!KQD`hfD+jx+abZvlmU(;NsVlri{np|DdUlnvF~E=n^z8 zjUZDx6zUKrOnC)XGPWn|oaY_Mw574a2q(@W2uQATzU1PrmH%e<5fQywdr_#QEZUfp zuZS&94^S+}JZNtEsq294zJSf4PYGgE@OFlN*qXK!O8iKK7(i9kjVtG2k3pk~nAI5l zC^u=JxvFBYoUuW`(|7g~HJ1;!E+HdF{sx|_TG6bTqGyFD zMiu%qV6}4mxEr%mJ_h7iHWvy3*5KB4^2?2B`L;R}J@%M_B$z1<#HHpSJ1sK)( zS~&%>#8xEWuu)!JaKt(=3hd%+j)|%N__!t&(-A3ZJLUfdo@frd4^T47qvn!?5&~q` zlb7D#T~;RFY5jF2a5SikHQQwjtRUbXpd5bIZ@RFfYDA_^l zH`LGK&;aF|-5W!YR8!mMEC5 zpR>R?;q~XI0(xZL04pgt zO7N5wTF~&RpRc2Qh;=o+wU8AaaeCd_nF-PMc2i zQPZ`E-4*tFt{+UF1^(Nil&}Cvofcl`nw}A=`yUJ`g^? zpW)rvPH_BP4w;B5FJW=dxHVhFUmO#T-F`TLvtNH;vJ^Ti*{Zb%!vDXr-v6Z$l)&$4 z`^@Q607R_st!Js}th70SFLry%Xmi6N;|7>Yg@~KUWsnTx<_gWQoWs@iU1&!1!EG`8&PV{Eft^mQ<B(W=4RiX=ydulj5M|^7ju#;3* zA4cJPp)`hAf!n$v=zWBEY-joru_`JVqwX_~5GNw*k4)NnEDNEyW&?myw00mj@?dFc z#9E*(Ktb4Fo$obxiX3ZZcq0M+wVzpB*w^m@a9?1Xo zOO-GLtNy_K-DySW6{9v2`jj2bq4YqJ-)f->jzvYZm=Xx*T#jV)o)g)QD9242Gfh)X zWt9yl=sl@?jln2lNAmo=k8xjE19raj69pXU(l;wk>zaJfseHu=yZ4ymib|I6;M$|# zL_XL)tpY(=Ss5|Xy8q*kr(&GH!p!UOuL*1`Wz51g(HkH-Sfp_BXv+-|bMrN13~K~W zJCQKoSj@Kh7c-3T9JDSzftLQH38c*58q}7A&l;0#W8jR=_#I-2wzQ{~ZIEaJX7yb4 z%mKt_X@WN=H}qGG^`vq!YoX1Um|W|8Uwt>Xha^V|Hoj~dR2g_;%r@!k2h82+(8v)+ z`V96SS7$0g7eF~bc9axaBtH}+MVtn=g-=N@LfO=zY$%ISdu}FUq3n!zi}RmcH$t$q zSJy{F=xKIIaO&)DEG^M#6#h;eI~w_UKqXF=|I^o$uxg(FCEUQ9GgA(2EL!fAZ02X8-i9xf*^%Bx)n@G!^jI)l^GI!@j)b1pJZ#ntqroFbO`w8ph#jsBuAt-;AK6qu9VFd z7zfsNO67mj&bsZzkgM`(Gsv5zTr2nY*RBWN^{=)No@?HeoR8>-fHnD~Sd0Yv#JXfwbn>~C-h^x_lhZgl;1>p>$_&6lC#*tc+Lm5oGx1;D#rs3bA7-tLD5I7s5 zfaI)plZt~U<5Xe@&xWCdn<|iM7kr~^JT?z5 zF|88AoVv$20S#{iFv2VVw=NSwZBAUquIRMJPL|{IInbInI7j(z4@CPP$$Z8FXOg4^ zf?^o0GT)D1*6)AjlnHWCP^*T0{Q>$D`#`51EnPe#S9{FPs!!>RW*=@l{%>xXc0|C+ zboS1mhCgpfl+J3G4k7eP!*+DQ<~@Jy6PidUDZyI+)F{$mk)k}#>t5!)vCgjxj16DH zIOuxf(r-|}TP%F!Nsz;w$_Yz%vfa=T*b(e2N2lw(8~xu*&0?g1Z$MrTWCwa1=HvGEjSAkW%Z7jGv#~piGRF zE!q3lY8uoXK3eEUayaATx&j()QjF;-y1Yp1wQu7x5*551>`hdt9ElC+Bo~U{! z+J7pB0V&7EZ=aW3NRFAS)*Nsz9tKs|Z({nN9Dk4N#(;CetP+Lf@-35pUL=?IwC2CD zy7jyg_&~!7l=QC3{?LdR+Y$22B(|L){PPrUw54UK&nA)ouwoG1D21z#sQycQATywt zK!V81I8dbc0b}5V-a*(-uF#ZUX{+h`JI;JW#oVN_rD&|9^p69Ms;Fr?V{CYgE6y9z z&|MNs=(vwA`CmnBoBvtcU=OD22*?nLlZ0w6r#?^?w%$&vq5HC@6z#gjuRzc5 z+PmdRf47@fvv}7VUHRS<4z(bRn02Aio5-})W5ul$WfY^QGZJU7(e7M-_uM0}ypz*s zSQ4q=&w0O8rii;vpT|-SBCM{Hc$sk z2a<5=euSC8=Zzjy`h}WvDOq)_{Solb5wN=Q?xox9?pbs<;>tBODr%yN==E&qp1Qk> zSq5Y-CVL0bX8E_NP1muFCAwQ(nDXNCD;aaVOLb4}S4i`Fiq?ETdT!NTqIi}jMi()$ zkrQ-Eh`H;;xpbWgss%>VcG4yNh5y>!r*-sx)ersaE6T=3X$$cAYkOxNfqz@l5HkVt z(JB3cy$eSGRQzFnrQ7kBf=i&YbY;qT?jcEf2y38J)$j&+rr{8fjO;tLF;qUfIZ-eT znd~rz7L0r<28`|d?ZPl(X6uIfOFQh^Wr<_NU2uKKL<@G ze(;ITboN{0LhEzYA7ao2;8k&i|btej@e%`Y7NRHk?dI(MF5ru zm(>9?&5t83#?!Rg99FYsHTw>Ug)=qLLjnq5l-w_#x(W{8uNSUUppTz!!hTN?2H3x@ z|2_rmn&*Ru^;w73a+i0w_A<;?&B;bm@+jcywGY3oj;xtpYFITk>=}uCv}7UotyaH^ zdRh)cy=Pi`O2d6T4bk2m*T>BA+6`+@7xj?)oVuHXL~3@@ds2;O#^cG`w)@f2|3h1A zKWYaK>9N{ zaA_Vu6P=5BvH;kjO7H2|?C0~$H7T>}Xz+Yo72Li?J6JPs>&+B8kxl`W9JHS8KAKcg z=J&03#+meH$=%PFuitvaEg(8A;ak~23hchM+sU+DdeAI~$sld`47GIJPz1W#hlv7q z-v=S4QgwOMFe!7yTDvbZ8GnQ)NSZfjb<+T0?8eK{!zwar`&RI%9;%s$3e}H)QurvtXXb7 z>ciM53l|QGUxtCZzvW6gxrL0p8yhjI(OtByvUayWv7&p?_8Rs-;`!8(3P_yiQOsDO~iQ9FuJfv+^6qE?14Aa;+ zmWzFs^O1j^^c8h>Y53Jv&1VfDF-~aZ+o1(bP(YKS%uX6{CYmZpB8&K}KpW=GBnIe) zDE37|?UX?hH**?@>3c#>R$`pD`sKN?hozA13DGzwUaJi#`V5Y?jlr6JDZg;{`?Bk! z6)i`H|M=`0(AhCvD~8%xuP5Jl7;4kbR5u^@`wvx4rO5Pl{?TT#xvr?m|hX%sy(kAmi7@MjbWrzEXtaFsKcrSoOF(fuQh99v80 z?Rm8#9}1Kpm1@q(AU=$(?%nsJnoQUHFC&97+`b-I+`fPz6z!)fDc6%AO(g$xk2|=I zpiu^{W$)J9U7`bSKfqXi%Am8yUKyHg9lrYjp!K)$r>seavvftPhI5h#?#!AD4xwDQ zmLSW_1J|SIx#wJjy%CGQ6Dl7ir}|j^k%S|)U-TV+eFs;ilfhj)3D;8_7kvywv_U#q z?Dnl$7*VJ18ITwB{i*BUNn;18)Jr>|}|Rt)xLjeflfBs$$;hYUS&<3=#w0|QN6 zK;>#GM}(D^oZ==tYH252;+58e<>J(x4t|v@QPRDce&5E5h$qy@;xxf2VX9|;d~nyb zLkA~+?RsE33wcAOXcxlrb_w5mwa<2OGK*p#D|6Ra>0o3cA^erVAaCa4_`^1p4|3*1 z{vP;R7ymN?R#-lZ_UD>=4{^N=jrpxGunZZ$NN!MWg?(GoxE~lyS7We z90sjradYxSt*sEJfscVK%xlK_V^iUBO7H|>Gw-oZ{V4(c^ZQoXF|95bnHL5aubNnBRa#2v{5&SZBV0w|t+ysUmlME{4E_|L=ZGOHiw7M)F| zpO*#^UKN6)zBM88FO7A4+<(5zgl=JM$(Ml#0NQK;sabPgq-;Ps-9`pw}CBh;e`}Z&S zui2gfp=3K;Gc#s`Lg&@cnGt(Xr@}9T5#bF|?2ne3v>$i{8!V|6oWE+?NZ1Wz)Wx9h zqVA;=^^bbP%dY8eKuIl{i1w}C2Q|inDP(r-LLM1_23nnO%8NJWPoucW@(V}%O+wrF z&veh~?mKP<8r7+of67WdViq@R6@w=1)4IouIII+<`) zvp7i7rIdwETuBy&txp1fq(gOv>2%m>`fkOzx7yQ-HI6)S?Uv{3YAUz?z{Lm6S9yz? zT~tY%+q;=h&>(V8F{i2pRU@w~K}nI>XzW(%^8Uu0Nxg_9=faE1_r7X@Jn37>v_V{w z1TeyXO$|={Vg87nnn8~~K0w={JACm5I1lmlt|Wxtp{fokClK;_T1Y5$o$84f{DP2L zkbmXlBB=I#5Y-P#Y7zWM02Q`JM(Ivt)WP=r6PBbF|c zf_U-D@ZCcSdw@L9uv2!1Ga?GK>;&qd=YQ5U{`!-%8O{O-xFz(>VNDoD;tJU+@IK?Ih9I45``{6yrV&r1WVpw0ro}-LsxM2&Q2M(mSio zn4Y#Woexw1pj3aoG;+Dz4knzQ&Io{qJTp860rjFI{s%kFCN+sYu(8?d;#B zn`}(!iw9hEU5n^DaMMai=Y3oZzf8vTfUWN0+uB@VLOgJ>>Wmq$ujcR6*Q;yyIt!lP z!J8YRWTgc%SH(aIS8JR(dK{}Jn!T!qj*h!(0E(yan$xkz)IS;> z;(q4BNf|q~(XX_^!tu3-3Z4L=q4X*#%S|bRuv^_f;k!Y`NLZ+cW#M@LZWUTKZ8WSj zPHFu|+d;%){b1Gv7NmhjuSQQdDdSR*zlK3T=#6k>Mu$Zw<}rlj2NnkwKiO;M?eeJ?k&P1;B@ zk=Lh2vC414n-o9DPD;i_Ad3)8&1HA0y@s`T1kf?oVrm&j9;U?ipA)2v=dtbAla^Uv z4Yk;inL4}{*21>?#mh@&_R(-NFl!t`40JNplF@n!|AXtbPguG~*162T>Dtgl!})6w&Umn9GTWXFXQUZsU}9CLdE%VS)pLyBqy~15)*<+9aP} zMNpk;5*5Q%;-^n>e}<=coV@5g=R)5CihXzXwmC3lmfh(8{a}3_V2{{a|84tK9w2)k zr%4WH))bmh+CnMzglz<_^%~%B;CLeg`z;5GO{4|r{!4+3oHH8xzeVgtfAdA}FFe?* zym>JQuGpKea!nf92^wbEwAX#OX5z%4pC>ch!#0;Ah)QWt{h@JnWyV+y41=~emvVx z+W)5F-dz(fT4$+|qBq)G{-jqJ0RqEGs^Mw8U!kEh?)y;4**_0=xl}67%Z(nH0v`S> z9h5IiO=?My3t>NOU1*Ohtoz6flZuJUApvsXB%LyVbU ztn~Xl=*-!R*XkcoS%W{^%4V%Np8ZDVUR3KlXjt7^=SOWkK&aZMA9L7Toy&{%{?Os> zP1wtxro8d)mqlG3-ZNiv85>Ns&Cl+(e2{hrzla8pG9^*v%y|>~A7WgpRAG-y-7DF= zC2aDhzdko>#@xPU|Hxj3&&^RsC!1>#$Mk>n-T-AHrN7{Nsqk+-kpNU7oM*_PfU}D3 z0mFlL)ATo+Pc~8#iDCCxp}xsB6Rs+6AQY#>4nv6jTG}bGVLb}B3izf@_vt^qHk%6P zZrX_L4c+Da{CeQn#XAX+?A3M<)%|K0jrCFU-^7hW{4qcLx(&@M0S(DV%g+4!3KWOMwDC0-Q6<_YhSG)Yp(m$c_}Kz$iRH&Ij21 zq}|1{qJz%g63E^#@fTk{UjrikmkrL%KOox=cx&;MVQxEE!+%8VHVM|&&w^}&o|IUV zrB*#MIjG*QaQ5qlERs&iL(RXa7Hv)o+yqiix~4WgZ4=$eMYsb*gF7h;`WXEWY(4#) zC|svADK9zy;E|9Y!?TY^G-4F#?tMxiS>aegQu7T~13OguIG-=4QWQdWS52@prrRGT4^eN+dNIL#kt?(#|3vcxmc{AY3Un_u@ zlnj3h9ctk5ezT&Y%UAd_gWTD#80Q_z^hWU>NNj-pZ(lQBt7NI83`|lGwt~Cc1?#G7l^C(nZkHd?*PBAp$$eA3zSfo zPm~bZ9p7Ox8d=O?kc%FkdctH^o%N{o`wvta+x+xqP!mGei-P@7*+eEnTW3ECrKC{< zbbJ$7+<$)mZovGG@c?O*_Zx%~Pop+Z14)MohS0gW?jLchGr#OdR(U&%Sx(vVwN~Si z9p}KthCjpb!lOj+V)^e-CQ|)n#M{$(QsZ&LFi%{of%DG&v)%l**S@Fb09u|rp$z97 zoGM})3P~G$04s&7Hdx7H7_@zQc@)V%#%pKovMutO8HdE>2D;8DDVI8v1qJ-m(B&Ib zN!Xa%m~0wO>K`cnPJhmyQ51HgeRCxeMp-l5QfhUmn%r$&==V^db>Q~l2x`@FJ8&CM zxn!y@x%6qaxD@hb3&s$c6(hG4OAkIfgOsmNE@j$%n--gyqmaSBU|(HiyiL|BBHn6B zYHf;3N;d5DjYeo{+e!Ft(NCmXYY0Fy6T6q<)Avt27XPn8`Tt|oLg06S9uFVGH|qlk z*55Vt{9XkDH#$foV&Q?F;@bD#IK>sSpe8JPK4TP&UcamQ$_!M(^+{6PLQeN@nW|gX zg#MPC(zs=+?%D;CFuxXdbtjcx(&cc~#N`l|S4F;$kKT5Nh~pfAF-4nE2Vmfn>ltY( z=LhCbaC^>A!bXm)y&ngJqk#O>=DAzagW+~DFDwz;7}UJ(D)r?Yay4!*3FI3&rabC( zBziwl^*mBkg8(Ax-Q5p{57xYVmEqN_`sZE2Hg7<1D2os0-1#Ai+UM&gL6ThgV)oB@ zoc{U-cNjtrML}d(AKdHBnDosj>{-s{K~9WwX)mL@?4N50Wj0}Huu}3m3g1rLBXbS* z#B&f2JJC`6T)zBN{=ZI1S>acitvVhh+3w99A}>#sk56qctfLgh|LU~75_95!jpS|J ziOmWC2UDR?FBS-fiqu$|Ibx&3Ec;`7c$C3Ist-TWMPKYr;*mJ3;!%5C?qXWoWad_2 zJ!;dqWh=KReEVz2`6jGjA~(>2^X4CYTieg)h2&wj#d@J)KSI!g7p6n9pHF1>eEoQq zEdgM5^{nx(fkG4sGiO6utwA7*q3TOo-dURTg3RYKH8hCBk2FU9JK5rPSq9w!S7jXp zsd=(=oL`g zpx25(Agg?|)6@i(J56KXeYxw2M4l?21{7Eq2Gp~XUruas6ja{*lflw}#Pu1C8Qq3I z0Z9H7L5r9baaYgXi_~Qws557~jH0BVBh8JJQm66J7d=kWYc zv*y|N<+-nqs@MaZVcQ#{DtRKyA3t;^9R?JL9bHNWNKWK=l*pMnW$1}cxy#&m`TUBR zxtuO<+h>1zPJT;f&9*X(`0@s+nmLS39=rQ_5VTJ2gUHN1aJ^p5Z-sufB&giV+a-UG z^H$XVTju`<9i;1E5^3AGlyj?`e@%N=sUhG9(&m^Ebl4+#Z)2h)uRw^5E^y7c!gtas z#{v7^#-_OJRPnLrv)h3uy@1jF(9wcVP@3eEdw~DXdQ&tJPJQu<@Lx02fc*h1@J_jK zHg%?J2G9LRDwQ@h#nz;b`c9-0qC1XClq!s6Z(#ajlYtUpDf0rjNBXnjA%cl|9Xrq+ zdGeP(o-Xo`8e8{e#&9mM+L#f$qmF>bo`Um+eDDDPu z?6wenpZbYv2*z28+zL(1caUfhrXF8>Ng_s>N0HykrtrucbnJqZ(4#Dq54h&VxwXFJiGE~$7TEjw(mi7YNj#Yu#TSL zOA$pfcJoUIY`~3q9zbuGqM~A0yWY?y#8U}UWVL+EvS>kf*Zg^e`cDW^($;?eKXsMr zt1rv~hxutQoCk;oMQ`cgN{Wv~&f#k?27FH?3iafjrX^ z{F^sjFY~Hd@`S5n!-wRF*3sir*PPRGskfDNYqT-bJcju{^nh{ospy7e%iGQkU~Gvn8)NNgv1< ztM>4T%+`TddDd~!CfB;09}M53^$2fHb8x2-@GoSS++ z4+b3pj!4KX81wbz`+ReBv7iAuXIE>;n0<^Z zqKEFaTUWR!8@g(S#3J>XjhP6pWovJe1?=BSak=@Q8z}ql)Zy4xTN3G zEYOF3s76^2x^FFli)5ZiqbO^@EXxO&)K;wkx;_E*BFrkxS%3%;`|m&SpwS`GMpEmgrR*)_!T$l#gq7G_)CXMrQ*(~yfs0x)Sz#@hgCwlFuLj{gTQ5TO% zh{AZy9b>P1a2DE9_9s%RcB2EyZw{Q)t@Rf^54RtDkJJrAQsgZ^%+C5O{nE1*{!~k zu#~cLHtQNC#SL`4$k`1r^S%=Q6Ge@JQFKXm&J;^^gul?znzot^7WiasH1b2R*r_aY zB^W5;*EFf|*eyC`kK5Qn(BC6XqQm|7fRNs7=}TO+QGP=GH%72w0jVv2`cuMSUv6b} z!jRROOg7+WV0qPvW01e>_7U>2>BZH6hv(vUON?qLA|A3o(e=TrlY)av{2#NfS!XxZ z5`!4=4Au_;&Z0F%UY%xExqy2*rNq$6(br^T^H5nvL(1P+vYw`LzYbTtS9T8Rf|4lB ztFkjH92@n{R_AeS~{BmwAKdXvy}^7z<`}@^YdArQTqkU1}YSi*WFCg z6VSm`v18voFQ>3waS?+I;{NH|aEq4gQeXCvTzkJqW!%f(;{~2DN!lr%u892y9evN7 zpJqKDfJ@ji=~PO!`qS*EB`Bjmdw*1Dz1Bdt0f5bTTtZVcS_`;yZ}`g6dXM^*J4V{B z^+hn5NRX*kiQAk|)JgPnBAX4JCcV7)dm)e!!uxp-_vZ!$7isp21?xW1NKJrTVBM#Z zzIRLUGt^kNql3_&CBH609C6oLp4dchP;kfq%FIt?0yD|w09=FGxw4scS>aOv?4Okf zGaEoOQ7__+z^kT6}eKr*=(!sydHPrJCr+%E`xam};D(c{HVJW*je0B6 z1U$^*PNGFDqJ3VYJi^#Lg`;MERs;?|mBJ0?N%G;!jQ`mF5x_w_g^y2A&}Cy`pf1V? z;t3kP&L}d3?1RsiPIkE;`S4Nwy8#cKjtqAZ?QHJO`^IGHf2we`5n)W0q8XPeQvTrY zhubc?xX3tD8AcE$oDLm#dR^sO1^qH?-Yi@n zF0zH|dF`Z+(6=fK+2)}3X`SdZz6yQyN(cH0`rIgigS36$I=#EF_XDf~E82CI z`UlVNMhSN?mLt&cNO+v}Ap}bn&k&8)_lr|?D8UMQV;+N5&buZVEF!+b#`|dxuvo^4 zRQ;2u3|<*`N%MIqj13fk8L0P4()uR)(wSPO`IZjwK0~#*B5s;Gq0uN4q!9Czu<6v> zeh!B3E80l-D7XTDyD{2p&pl|4aythH-$6{$-8V2+f0%3>jr(viprdTf||kO$TCLJ z+$CmPE#^2t`Q5jySq}7du!0jx7YEBj)ES+)1~FErdec$H`L@{@(|n2&t^YYt##73xT3(>e=trS_ zu+VEL(i@HVQ0h?PuXL7+gQW`CqQG-@N`ck2Gnv+(dKT9vkLNtdgL3tv@tn$|Bn&bK zj&a4S+C&~-hz`+OrQFRx+LVvRhp}9o>@sgjYFRd16*ydsF10H)S>Z$SAKZzf+-6v3 z5R1xLY4Eo)r{@`m+B_{v-xo<_P+xhTO=VODyg7j)@WzY~Fq3QSmWt6dZynt)o@Tu8 zI6ivr0XvKAxHywIrUB_#XKbZF_YQ2PO_!dc>Q56{y(WB?80v z#Yu?z3s6QzH_9MbdM_1{k*iltWX1T<7?}~fn_{jt$`^F=q>yN3-ZVZVamOSC6Uz#EpH5&!RVpnSOE=4B zqs7T+%z=-q)nnuvrz3zXN@dZ)7Wny(l`pMs{TyYAYx%~$J^#5*xVyjJJ(<5kS1MRu zV3coG3eq0p9mj{M_zO)v7+1H3`cl0`!s9Ggp4G!xJUpmn{5hh#J-VYW+Gqn?OON9d zUIsPjN5OABB`w6vhE|7jkdd*Kn%2OvHjgfZ5AHLuS8E@XtqeFOBb&g8vOlt)oomA5rXIyZXr;ckV0e` zf`t%egXBjlRjRbiiM49`GgRQSu#6o1DO(X6P9mp-rC--=-*1GMd;+edqbsxi$#b*D zVobx|!piY^irVdYs1m5Tq?!YTKG~F-{@w}?5)Pm6eC8!268Z9gV?}TjpI*xg`W>3D zXY679qxZW_(bk1hS9y7CWB~&=K)&~JWS-AqC@5FYPCdX?xU8Oc8+xMIh;NeogPtfb zWxg%{Ht%x~sq1KeTua-qVm1zal#Vke8DwE2>U*v;C`AIU7)bZ;XPyFdnX#;a)%(Bt zu?l!v`_#GgT1pQnKLeG$sz0oYxvHSW_jKBla2$x4YcmhZDKhUb?X|8RbH%}K=4+A69`-jJkO~}>N^~J^I{K66& z7tiSUgsg%}ZhoPbuKx1MT3F=Ik+Jc<{(;EoxZAsXPaprKl~r2@=WcMXfQY!NhPH>d zZ{NV+)bxxWC^$GY!rjZ~cV_k`WXsLdTR~YpGds7uvf9@_aCLnnG$QKp@zKHAb$tT@ z3JzUaT`MdujY~`p3Jte&bawUd3J40xD=3cm8MC{$@9hVgnVlb>oQjT(S5enKJ~{mt z0q*U$wsU-aeJv;|v3GJQDXZAt*^Ny|%FfMi>*zEzHoLyL2@DBy`r-EU^mKoJUr|+) zk(Kj_mSK8kPD)nsXH4Aw!O_6ba6)n_6bg-rOWfMtO-fDM+dnuv|F-~F&o3{=W|mbo zbvL(nsp%OlZ5EmD4^@9gfCmRBw;EobHA)zmc%4UZ%wr5qle zRM*zmH8iE9{T><_YiMdo`yplPS42F z)Y1DpGnhktQ-B{L^aR6>SNKtx0Po1BuWrH%dN z^=(XiVnkF-dPa6gc%-1Hq_CKjg|!_E$Cs1Sv-zbJUH$LdyL)Ao)l6($R<;ft+qns+&?_!7nNN7o8wJ5V#+T!PoMe4<@V05yNAcy z+xz0u@;}`@yL$%}LvPlpP_u-$@%0xDhc|i9TT$Qp?{;WZ4K(KuRN5cvmY7?dCjQE26siLN6#lXjq8gsS)9GM$ zeITyXRyS`C>FT|?-D-1HyX@H?Pu>Q7s^A;uQ^X~sX!b!u(`fd4?X@lf0PkZTSj3e7L4dg zD5HK?BMxCHA0~|?Ly(I&^OKv0qsl{zTs2F-eTQY&($n7jyEI3FrT1+$sgofRK0y#KF$T9TO&{t6^zD zIX=M(=lXMA9!JNYgE`5~yvZZR3SMW^N=NQRGY+GDtS3Vcc9nmp!=97MM;kBqJlCV< zhcFfC92r^U5S;_s_QxV#h<& zudwDi&)NB<@51Nie!b`Fr3rIC?k4ANsqMvOgfmQ0L;B-NVgZlLE)Z(eLd?N+`*gk97k*oO>?PC%5Aon0iu?4{f zVMiOmQSnj`{!^Vq*#1jJgroYWV*JOC9SsSCoS2u8rBU-#N+Jf3g9TqC6ADu!|Scz-C*W0qo z*^?oi!f>Z_jt~N8_{<@D!x1_adVp6xloGDlOOx2iLhp{Oxog>L;F0%SYon*7I1?#N z3;CvLA#n7dR543lum&I~6N~>oH~p||IATqegIYpXen0QLfD>q{qMV3M925RmhGEN( zNY5RPw@RKzBpJ%|$b}lG5Ib>I7&II_YUYoP#H4i|p$KD! zDlm$aFws0{ONozyU(r5xE4f zyi7IW_Aqgjs{u}@f>#fJVo;?FyM@%p#Zd}^n9YPpCa9i$lBGCtpLUUN3b#G?$#kB9ab$g3_H-rmD^#c!nv_-r*`~ zYbaAYqqNm_6IgirmgV4}WMSBe1x~^t>>qM@;nznsLA$1-B`!9?5LpXGs1e~yDh#Qdyb(8O(r^PtYn%NDzJ%YxNC+WQWnvi- zKQNu6A)vP>ZgIS+sLJsE3rWP9TIHKbog3 zPp^EgwYzAwg7Ipfu_01}Zjzdc#j%Z(2Hnq=dB+@$4TWWnC`r*S>S6+a;o(-&vcFYjCz3j<5cQYN_&WTK&mGu&o@S|aS1)0uoz#8#{1XgWw zU$^8yV{HhSW@yzUZZy247>m4Qi!b%?Vl-jhr%Z6wWOZG7l9Tng_X!26DF0E|TB7Gu zz7e)+Z3MlJ1nz6sCzSgzEMhn(GG)=YaH7^AKMS2VG?0a_xQ-xr9ah&K5`Wi2RX~hM z&Ob%#B*XPm>e)g6NIB`{+=DJMxNW88NhpmLVxlk`Xsxnr?JJnrKoRXQ0~C3ujhL4s zN!)+|&Iky=A(J@F0+*$Z2sV##J#ng$;wVvy=?PK-q-Va2sSJoD6{6eyqOn~qJbSV~ zs&Eai|ITm+9QC{ljiVYCS%27wK_eY5of7)H!fe1!iQ12Eq{>)ghi?V!n3+Phk47~h zIpiO(L8ReARg`@u!3$0Q#ww@rj30R+MZ+h{|Ff?Ay@lGeQi(shD->sE_eChnLe1nA zqBL4FK>OarcBxako_)yaDZOUdeH z!U`fhVGCGT+0XS9@_JgxXXr-mZ0M)s>v{x4!r%rB0tA|8njl92OuWZb$+6gY`1rDp zQZXeUCW6Wq8C@g0nPXPJ1Kb8J(gaGlbZH9GMMJZ3W88TtRi?7ij0FOV-v{M*Jw;nC5>7xuREFn1UK;h;k2>va7^4cS$ zl3=OOg`*DDLHHYhiYFa^<&xJ}`udN3P~cy?vy>2u$0iEFh#gZ`fWl*%liH=FNSz@f zg6}hzZTv|AK^Ybig4NG>T8^?S(IeCYe9XNb*6+>9o&)KRb0kcW=Kl#FR{S$jFn3c|lhzY~X z>Z!7d%H|aN=x+jZb_{(hta1TCTmt{W!0V6lFC>s)a5N(3j)_ghtRAn~-bx=gh zK3(EmrO#*;rdXi&{^9=1W(Q!AIsLPc{jA1rP?qJ!T9{*BKC)(igIw5)-^!~~o-SXy zdIS35_-ig3B`Fq56gqc@OE^W>kC;S878ao6uk;Z#()fIUD8F3Iyapr8Ar}0FDZS&b zXWjW|TE%` z1h@YD+nf>^@tJzX;*B|8;b%w+jEr(f^p88%F%m*yDk8+u!>M0{tw9XAUK!2cy4-B5 z{>RZ$sr@(!s-k)pg`PZ&K5}S-*}m7W)dnz$8l>?6o5tI7f`RQ`N#FsAKKLE`D0uQPYjo;dfmd*yJoq z*$+@x3SIzhfs$svk@>U6WcV2s;_VdW;L*;-uy|QjGQZ_to{`65)VLx=f|_zd)Bef=nSQR68@>8UtYY9- zAqkUQp`y33SbK(k^7-Xg&@h?q7|^O#!eaO==v`RE3$=V((N5|!6oDMP;{(y-(RAF- znEo0gjRntmDR^0xQ9rf`wfKJ-(|~K20j5Huy$TS(vQihxEs42-N#aGZHI2iwI_-&z zpnsf=#GUbrQl}FFesOP2Ca!PlWzsFJC!a-GGW=ZW6OXpuk+&gvaHW1*%hNdX{mK0k zQk;@=)z}+GAJ`6h_E5f{j=26iFZ` z!^-{sMVFZ9Qs=kxR*joT_^at1?HC~&6%vN_bJg`~4TCs?&hxR`IYI>EN#IGstV*lA**Vr#q4$ogZ3)Iz}EMA!0RwJ15t4mX=e=QT7`)Xo8-)7KFLc zoFBKa;l&-rF@~It_?*Dfs%Sx#t?o`D4nbr4M&h61V0oDc>W04$c}1gUIon(IqqZ!AAGxe?r4v5%&#E}qy_b(h%tDU8uiq|9LbbksE~!HGZ8=;Mq^aXSzWGIoI;1JD@4BIsZmH(M}6|j zHjdVJnh{0GYQ$8>L2)S`;a*I2UU*hc+`K@v&zkSJeOrk+2)7K_=$!Iu>m;92t$?y) zc{g5$n*d*4#~|oAxW}vk7-6J$TEIm~cRQV8d76F-GGZ`K=+htA>Zmqn(^1t)kZ^K9 zlb%FP{-U3nolpQq@%D@!yuR(bd*6z|v5bI85nvPdk?2BD9{EMXay7FB^|94~bvyJGg&(D1S(XJHeVfdBxmxIQvuwMa88cdU z8cld>mCSS=P4D{-ScU#E9_7pBH|K@3sX6?XW=XOI&Py9H{7mC@!~ZBu%k4J9x=^LA zR_hCHQJgr#+*L%Ub-mV-@*ADU>PC>v8=6{Gl7~>wKIVvA6})xz7&QkFHl5#S0qHIk z(JkM&5SLunhOBNpfcwH|smw~vnj2U%^Y+9k33S;AjmW*duWHc zQD0TCld!YUQKxD6jk%;QZcdkDe+lRN9YFV%8-lfJGvOh()TC%tKc9I3wSJJkP$5Bu z5Hd{AV;0tY2eJ;*ZHH1$OG=v!qaBP?#DA7zOTkk!2KWADMAJH)3i93r&2VW5gi1w;59w& z@HL;yVtp^qf>Qiurl%4InO-QePpz&DL*7$~a}v)s*sCF3A-&5KtL}vGQ~GM<>4rE$ z^{%QbtUrtB>8!?5yVEkq1NqlxVaOSi1Ni^;8Fc#qvgrWLqCeAjoxu;!T5lEJeHk|= z-RX!Wb5M)8b@az~+*(0ibyy8zVo$GpYNDWl#@8G;Ke-F~Q10wo;83VF35ev5P8+rTSXzy=18~EB2z;aYg z@8x7e$=YM+YJPUH9A!iowRrEo#JmX7UYmQxba+2DLWo#*p#8k~wg}fp(fPRs+}auS zpQZkO$;#%Xjz9`I*^ZWPAMEnxXmIxT@RxEnk)n;c$T6cbjq_W3i>9iK>~n_W4xkl2 zyksj#z;Q))zy3K^qWBgeOHXs!Tgv)sMWkV-<<_~8FJxw zdufY)>MxZ`OQ;tTY#alcoKOz>vQ4NIk+!e&DV{2ij7@#FtbJNUf9t6;OB+5PF9hEq z0QsG?6&1f$ky4ye;TImPBQ+)kzqJ=D38n+ptb&rbJMeWlzrX@nMjF0GM@rXopPJ-a za`DkqLyX(Oz;EL2A-5>zI>kj1)_U--;w)OoSgQLEk;fXM%&>0sI^qiR=J2nNyxt#G zv#Ys~`~4AXx%I+N^H^Ep)A>Vj?miZ$grW4Q%_-2Bpssp&6HUO=H2Fo9oQ=}n;Yc-f zbFhc8v2=VH+x?pI7HOj_UqPbxje$mT*zm-@PmZ*Bi;F>T7}z7Ub_>90Ynn z@27Cw7Lr)6Jvk`#rZbLbCPY3){~Rg?vZzloGee>lSJa>rg>N@?GV5Pa=6%Hko@Nlk zO;}YX3&^hU5$;h8qs5z$x+ztDD0m+|qBrGJ9b%eOUUg+M?c#J|ertClUQ9<<{mGKA4Ms12YW+_CH*4R~-0^+l z-y)GOL= zBa<75ix@gM3%WzWmZ5Su48$R{I#9OwD1{zwdi0k~EGxr^odkdoe5S@`d>T0qFLvq| zj13cMTuba#fbi+B9HpZOoa|E)aZWQEIOP0 zBY}*c%z4aXy&OJkt45=I-m|8;b%A~$i+t+$%*W-&ee1+t5J6ciLAj|9uvy8I4dI4j zR+z>)ECn%oYuY!xGn}zPZd%{AebREu+-fnGHYaf?yP}K~2uOb)H*>ardeFWGRP*M0 z&{mZw1=Zc*7YU5#A$mO@Ml)@U37c%LP@@W2cTUbq5E06+X<*52#-N?Eb*Hz7YTt^`I}QjzFf81 zfKl4(2akvO+utWjxM zTOM(Ff_VV>3Cws9r1AG}w?U-Vh2OKuTqyBBYm$4;r^T;I;FC&@5gA8j7k+CC7E{ZxjjNbBsu8vEHxxNYbH_v1+qaeNNB zmcy`&19@R^UY87}(?I`4*IwpvsSo7Hp4Y@&Tz_O(h$C)to`R~Esw|5WWUI&4UItrN zFK(z$>|m(cTFgm3PfwvN)}vyuaFF;UL5|y4=8v`e1Xa@~j;pqpNgvP^4J@1EtSAlk z<1b{?kEcu@XzC50{;cdy)$sZx$e@f{%3{X|{=1n|r-Vo*ip4gXgdzWCuY?MS0l;FZ zL1I8j00yhV!h>TUCfKOmgO5{jI0g-)q?ftfqy}{id|p2A^FOSsD1*I7H{8 z%}1I%1k&SBe|ARJN=fh;fslDMQ&^HQ%^ER1%YY`zQ*$A8&$N zMx!_H1iObYGdmJP0?>>e7~2*&B-A?RNoHV;X8HW zXmY~$3b*n=-u>TWw@xc%4jZEA(Rk8TLp~);9e3&DzO6+s*&SQ`A*J9jHkKwa99&+j z=9e5TX?zYRO3j=dM!2rOP#dC8E6ca z4|MZ~t=OyhPTs1KvVwS&a>z&`OeU#locrSSi`nj_VT76O1L2=-mu+D!iy0f_A98JY zStPKSd0RB*?quahSfkYq+|rxIXC@p(ZB=D#uNIHZ;~G&BhhZI5tG~rM*c2kGGS-8%L<_5LjmKu) z%|}L)X2O94D!FPbIf*%KVc%1WH(m}|bPcouf|y5)&m#I5OYYIkC**Jm`J5aM_3?+2 zC@;=FAV~wtR-nH&|itOm6-rmiV|E@Ys@HzJg`eVlC(;#m9siFi|w=HNL^kXuE+@!Z_Q1H7q>KIhe z;I?t}l`t-9#?`1jlTk=cO0D*w*d?X3S`$ePD$6!~iW_+`i##um=3ic%wNT=4NiFfRy{rCyL2LYS_$uQ2CyY~CNC4u^|j&O=_x>tAS%XpwPdq5!B4=Y*q$K@5MZh4({&XWZ^xH&N5#7p`on4 z0R$FCFqlf6Fga)#+_lcy&pF>N zUjOp%(9>RSU1RG1YH@EeoLHAE$o$d9csEERJD)8Wx$3>D1cRvn**@W%Z>zT3e(rS3 zXlUA))EX7k=hFJl#j|LPNb7Vy?pROk-ZW9ao5B4k$r1SSgOwwsYfnflDSe6JpWU7^Z#q0@4w8kjHC)N R&Hoc2E2$(=EoKz-e*kU5xefpT literal 31403 zcmY(q1C%E{&^J1^ZF9%Ac5Kh=*tTuk)_-iTu1BtSZ<$cP zIsWv?8v)dXKmvD9gvSQwcW$gy`AsU6rl;NZ0u{QVs)=28C>68Rh=n4Ih z1~QlMK5?Qo;w187xU>Ev&Bld#@0BO*d~$*$+Bt}>niwPvMMF|z5OV22#m~9 zT$RU?f77`TM$OHK#@6f@GssLT{*(k3lET-ptkcQW@@fP*0b8R`aczrJEA%(b!%vR3 zGm=ly@e4_fh(z!koBbxmhKEeFLvevA)`NZ<7?!qLvEz0>y*(UuI~@xte&Y=SKm-7`?rlE)BH7BIvq^UJuSi%N9 z_}6%{bUqb(kYI$j17KEF=k#`_Dg~GiovL(W14z^@^k;XBm@);jbE=pC1x$bT%o_)j zs@T`Gu|1P=WEWux>e_dVh5efQLBJ`0DW$9Ew0azkSFrMl*fFjvH=UuhOI34_GnJn* zm?$A{6l!%06RVc=Rdg4U|5AR46w_avn4%k!T&$L3haYh*J)1@mZ5TiP4ch~jO_Q8s z=k%VTLT4Sz#Ke3YdZSP*w~B3J+6kEj3^6p1C2Q5RA1$(uCgq3pn8V}d`}N77t-IOf z@?I>R)@r@!@iw(Ssa|8f)%A4Q{=j%&!{-&3$J_2Ycnk`O`2De|hudo1>3B3@MPVM0 zcwu@dUPff@`)hEKF`kWfs=1z*6!iN(d;3Z|Su-?g+R;&kmoNH*Ht^Xv_+)8my4)sR zQH{;YHisdZudwK2vbLwZ+%8*JiQn-uIHMSy(C0p564Tn+7MIDC*WAL&?&8$a(jrSk zZJ0RUFd5K(AZU7hqUX)lU38H1!cSY98RMW(TW&>LTV-o;k@& z2qqRKY}JG#!``N0Ro9nt>Ms_wUc;h^{9TZ^q&}ylc7=HK;YKB}eg2Dk2vmYu_wYHj=L zIksjh8>FgI4?6QV>1j^q%LkL+e5{UFYW1JbL5AM%`;(7PNQ6&*yZJoW)DL#M`OGKW z6FTik`Bt0Vr%^pv^(x&U`}Zdl)~yM3YOdE`a`8tQYyT2{_1!gY!LcKxXrohx9fhiD z6Han4W^1RS>L0?Yf`DIsECoJ?HDqaSc#y2y`F%XSrtK!HsH7#U`hFkEw}THi!^`IR ze357W8&=;9H@R%eI6Bo>o#VBVn|>$su=E<2X~8}F-Z#Z$%Z zp(*L46~=&-%WP9JoujzBbU))on5?F9gc&D@LUeD6&xs&ZDKXOVNgN$SwS4|)_QS|v zT-SFHgU*zkw_KoOPSMP=70RBhaIx&xuxmQd>s~i)S|c{UFW=A?gWJJZu!4i?KyEJt zEjW`9A_beF#|pgyeufWrn%h0NC9w=GX?%dOp%)m~4?IXvVE@QMBz+f-??Jq$$2&$e zMTaM}ad5w#BvmzY^avtLlP&o2H8F!hf4tgkeYq9@BK3P&yxIM@oz#QHsNHPyxNAu1 z{cPUr%=6W1vpyPEF8$W5`@43By6JYU+im(eo>Yot+v^&5e1?^q5aNw2EHu`}R}x#H&paRbeZ#1#hikT{s}#(opYCR9m^&&6c(fLJ;U!tmVxB0)ix zvqO3ZLFiYo&IE>bwj+Wq5%UH0g6^Sj`lF-UDiF=flNzc6?Y8}5>mqHdb8Q9KOTA2`JCNrj|{`_emb^KD!y8^*=9A{0~&^~+u;IxG(b*6 zbazN8r`zFtHa2fmn*k7&O2;%{rVKiw!8T@Z>&eZA2sG!ImD@&;t`diGQGfPLX$xt}IJb0|ovLfGs3T-QOq#0peszfPf* zjb0@O4(3rI;3C`;74Eg;AIFmN$chxGl20Jp`PFPbJ}T|*?qRgyqRHzD5CvXAEOy>+ z4sPqV)4sZ9VJXM%PdhoO&?YK9vhdZ(hL4iSIYuNfARw=ADZ)5nUS=jsC3yS?D2ra8e`w+oK2t~0M^LZPK;Dt+lP2pkP<@an zto{ICr2i`c3WPvn{eKg|xgYBPmq6kCJpOO;HnYP8B%R3W@Dbf?v)STyl3}&k@w8NlPE1Xf|IBY9^7DTQ?I$pKJKBuXa?+x# z?_7D=_0EN#`tLEmiTDN(8zjsVdVe$%_oRd!USVQkU=LERs!erygEBtALmh8ypf>7| zBuD_kE7NQDuv=~o!K&B1gF|GA(&fRX(du+3m<@ak))C>pUXnybyA8 z8{9vN%j*F#!}Xx=e-u}8h{a_&-%Y^R&}9VNbRrVOI;7 zlc7KZBAnE#w{Hg-9R86(u(AP_6P37^J0AT~3lZsiv3n=O^85GK8Hz7WFKqgjlILttOob26qBfj)G4%D z_0F#o+TW9Ii4tTef?>hp)thbP1`EmF14PpPHGhi5WO*Prfo1EmdHnVfbUGFVwg{O# zwL@vwYj@gY{UiEYNwRmlY|Ijq%Qs~j;xU8FAHv0rkoSDujVNQK3p@&gMx(_hjGmS~u&WoGH9E+C&u;49xUt+l z2CZ71xn%3c6Nl|KG%NPNgeIPh^-|Mt^!mf;ey#t;WUE%KFP&yLa!VM z4%=PzDW8vz<+%i-3Dt_!T7~-G!&1u@bMC79Pv9J-QVt)k1kr9&>+>;&hWIIV{1T8 zzXeGWfN&s0&z|CkC5WKqRBP0vL0O&oeXdE|C*rxp(+GSh<6o)MUE$ulnTSB*q@k{-|cxbttJ4%2LXy9eG_Eq-QDRGNGMuZ5+>5rQ?z;=%==J|Zj=3w2 z$Lo0!LsaC#Krinr$S)$vem@aiE%op;(y`k)qd}+LK?^-NSX5+ItBF->#=DC+G!7>$ z0A~L#TXo{P`(0dY6zL%m`S{b}bWL(ZiFCki>z&W{pc%JC(B9Bbm;DZf(r&4Wd=@we z5Dzto$I32bkkI`O|HdWvQO;rt876KRWM6pWPYfQFGEjNecuXzGg70O<0ZGY0|HTIo z{TWiv&*SRy1(S({Qo){qVJNPcr#sX6WDAxK&!vEBB8%(5;i243w;R#}H7;#_gU9|t zN)!r7CW~{KYb_9G=V;%}SUv|7ieXx@+SR?{1Lp#x0`&qF=?H{>zL!hb*&02TIZ|Lr zg=MQ{7L96Go=^CHnp3+Y@A9v9K*h(nfYiEmdkvpDb`QvP>)g3W7ep@3b6V{jr1mS8 z4ZX83m#Wnlk}c$Oy8D_llZgR$c;AbrQyTzDC;e$2!KcD6`Mpcslhw8e(-{o_@W%Y` zVE;Ow>;Dd&td@bsp=tF$L>}--F%sN9vl?%3e4VX)l*`J^I%weLNMWHAl+|#~tR@B@ zl)g-mw~c8YqQohe%xDd}tscl^_|->qexH@Cp>btGZqGohEhU^x7p}+#9_O=sM}%|P zI_F`W=KaoApYjx5H5a3)lxl5zX5 z1#~>C&3c;GM>B?9^IJABR)87Wjtp*#HODV3#JB_bO6U=@soYxNjq&Bh`DIY=QH;5t z_2eAjcDVx?#JY!*h(3 zT7*qRr_%`yt69IH?ExilRizo9AR-NQS(%cKnP%b?)sMSOg5KjYN`G7f6mwz<)a?QZ z@$(~7x(m3SRjAb#pkd)SJpRonqF%I!3btSGUyp&xYz+a@Bzwb4{DojI{1yP-o$UeJ z;l5;$AI&+hP?PKOj(}G%K{o}GnOvV#Dc&xndbSRg*7w-AZ#1q{lGAHXo%?6=t<9Dc zdbbgi9#pnrDy3qXWVv6k`GTWjw+-744aDsCafGs2yu0E|mQJnm2f3-)H4flz3k3iP zM_`-&wE|WBPuB8C=CCp=C0%x9g#6hd>4Mn4-Ql z{+vwYqjP@&`Gi_k!B>&T*XjBsipj4!-?9qMrr(!KZi!&k)`#~Bfv>?}*kx-mOhFVJH z1yo*KHfIcQ^%&6!oyz6MkrgWwT?>!n2P*?m=;>DVDxu4w@79Tm)r@ShE~9wvhfLUe zWXhV`+0MnPdxThA&h7n^R}Tv~yII;V^}E8sv>N?B0MJiZ3^<2uI4_JmpL|k%-=kY> z+IH7Va3IWxb4@@aDbsA$vn#s^kF}p?^UvC^*W+$^YsdelfLL6e@3>gpkaUIUb0aKS zF34sW<6`CFSrvdpM38u_Ft^JVmB`m)+x*gbnVKOauZ3t_#9U)x9DO@D78=Z zrVB~u0NRLbwiG-xgMXIWbyBry;Huqrl1P{YnSbnb#^dUGE~H@_yO+K|m<|#by;ieY z4q2%$F}P8SP$OTFWYo$Pw`)$TJ+yhy%tpXx<1yVGLY*-p>^wQdo-V#okv_Ni znnc}NhtJ7b<4IC40z#Y;<@h|_W9!Az@`Rln$XxL6U zvcW|F>1a8)^+EwWpK^RD-U|27=K2H1Jg7}`nA7W5+9Og50UqA8oCESW|;Q|o)I(d8MB#Qmp6JfZ9DvdgBJ3xy>@2$Fn2zu>{M(S zx60RC(EPqf^g!u8Rp!Zgl1I5iMk4be%}c_Z#*gXkC)rQ*NXQ=M8I@KolR&{I#8>yV zfww|-iyrZH14MTKX{uhkxm39;STJ8}86x|idmu`P3akI71*iDmI&dEf;a_QyN+l5bXm2j>>rMH+%dam2^dr5Mwy&`ap-k;L zak&O%X&BV}$4pL_=Z}%+8jRnXXmqr-)JJ8-+0dkzB`3oRa%+- z+RJ-qca7@HhgkT4W(g-3W*g`V|jW+60UPlBSO1uc}*2pOf|sGgqC6 zOhMn6XLQq^Ek_T=a?*Jjb^BTo#eh+xVp#H>5tHxW??m_cB>yE zQ9R&XRaNqsxM;EWT~HEWonO@l{@qT4Q5bdJ`*oO?;XOaR_REgy7nnp`Zub=0#Pp0! z?_g+!W@8S6`uyjF7#gy>yYt%{r9f{1Acy+A+O|&0@7+s4C1fy3rU%Y!SPGtxy5RBh zXvee$O{T)A=8r2!N}lo|=|K8$M?tV|rPpTO=DRpdKyH_>c-m(nDyNu}hEcO;X8B@K zt>>bM&C45oB>bon>+&||ZB9o@R(dY#CJ2Li831%nCA?7EDvx^!`3Xj)=-11qoeKeoEu43K2p;sK=D}4^NLfD&~fH%y) znY_$jM8o$|E{m~GQYm89%jmDKO4D|`)0IFRjoDqk(!M=v+{?n!5&*BtR?!fD%ZQWw zo*ssps)PW^_0*fPy5|NCS1zsR78o zkB!o1cKiUKl~{^}u+rN0ARFpalt~F*kCEPC7*f2PZbjka<2fphfcPE=FiMfL4M_VZ z@LT6uj7eS9tQ@)T>%K9O;vEtJ#btHk_IL7Ye)r$yW(=-f3yIX}lj1DN#$4lhvt!g9 z@kxwQAXIdftfWM;Gqlzs2VYAI{vZLJA2i#Fo*Y_bNa+5cS>~X)hEmGA83X1UK{0ru zF?7m(5Ltb3R8Fw?iZ=qDV(f$wqU9UL@}#&)!u!G1aKoX&y)U=r>=4A&8sP>cjC%^- z=O9KA&d0+uy39GRceC_^5r|MHk*XC5@lhU;S}}bU>UMCA3wJ2GBqL_C5c_5e*%MbBKIEfIUqb0{_9}pco=fMRI zJ2-eb3Vw19aHKNR^dm{F80stesc|}BM+j&p5uBUpBVj>S9AP!^aD|}lb75EV_Cah4Bi5H-QrrMg@Yg6bjN8H09)1Fl9Tr9hnkE0Z3 zRos{Q-i^u=|6T|Mj9Lwwg*0(qCEvuz_E+P2k}{C1JQv-2#;Ri}+JCQGHOwBmgQnOfzFcXe}L6x<<+}e0;qkdP0F^(4_Gw zXR?_jR(=(0rS(}>@li^$CCXqaPFys4H8Iiho)?aygCv+sv-e4jQ4mFFE@OR5ALiTm z*jbvoh!57h-Qysfn#JpcpN|VyJTLZCeoWyG>E?!}J1Ekm@~4x>WJ2YR+`4^G1vv9< zjSlYCflB8cGIF!~$abR?rB>7Qk^P>F4^hv+Z7D!*g#1E$WvCEpE5bEiW;OE>*nzUs z^!6fd7d0BU3Bj=;&|>&L=mGV#8WpR*6UH;RYMbIpSwvLvhnH(j|QVf>$;^NCWv}=Lgo#e@+cFT+q`zvCqB{DPNa33a%>*K@A!u z6)h`n$cgXRxq4RO8f2*u%>xy~K$^_uhm_LBl#te`e>HW~`E_sOXQd+yqtri~yc()z zV7e+-r?KJKkctdJsXQc8dMj2e(J7v9!okHgvT&Bi&wvL8t_G8V>wL;stLu)TfDKP> z^L+<8AE?bh4Z(_|hCYQ*FWKj1XcaXyZ#hd>UdRxG(L1B~FhOnPhLpA`n?t)qN0^CH z<9&ZjJbex(wG#Hw)`Y}23~QfuNQmOWzoU!rfu#Nfw7opgZYilM56HJOMzSBn^J9^pqP{e{|Rq};fGw=4Soh}V6L z%)0NR@XwQKjk&OUP&rT(wG}Miy@Vn_(V%c~RVn)Fk`M(&9$B(6KLHwJ4E>b9 zn*6ZI%T2=Z?A#^$Al%<$TTi*VwQA8@mMq(FoirCeWp4Q4w(xyxAu~4H3R=eYxb+30 zOV#!Ktq&^aX7=%B zhl7oUgs1}!A#N8B?QKsy=5<;K)p*+P7*H06jPn5hRH&@x#US^na&o> zB5_d@)LT4s`RTMdAm6ohmV!vU>(4J1EFemKu-55kAQ}}a9P45YN1j(I z8BUf(LJG(vG)4*v#5;Yja+0LdcD(-u@7W$?{tmHrHHZaa zynndzIRRC}^uv)g`iQlf`sWg70V}UL8)NTvK~SbRl*ig!+Gr50nDD$Pt=>E;&aJ74 zAg|kqfRfKsodF^PPDu=J9&gTT0+!hI{V0v!-JC<_f8C}UI5qGaM9=;7k%)6}e&MW6 zMJKm7V?@k}pq$4IirtTybQ#K2W1v)K-@v}Wko!b#ECDMZYfMn=jEtrpNSYbyny5~= zy1Njy6dOw<{J>ldC8ObRQQZ!EkT#6c%owU=VWuY>44OZ4d`4nGXtvdD+7PLO*Q4Hu zyUWALe#ldXG%$mk^T7UjU<|L6N$qJ1n}Zm8>ov$g2;3JByl$$0{*3VZt(9_Cj|4f9 zROv|WpA0@8OS(zMhlt*Pt+Y~7yLxu*NdVxMkJ*eSw zZkp_Qw*xH}D?CVlSVURGOyrT~p0a`A2hR&34lm~!dow*^F7JtFqxtjK1H-h$Sk9*r z>AwQlL)>`TEl#}b6pbeb);9{`g<#ef1k@={YF77PpTI)gVpNZ8(&&=+1y3xB@sAh3 zPs%k(uoK)J=H%(=Qik3JN?T{!-uHj&&_%5bt_VsQyszL4)EUPRf9t%#6r#ao5KXw8|vTTdlGvQDk1;7kOD{@BdD8TH*LtDifErddlDpUA_ zFr?3k@+Znz@J~237Sj6l!R9>h{R=;`akdN4bE2el)U!)`zVqIdZ9gpko@<<}STGc> zpkYmzhk!mUz9YUQpRC2WltNm5q-^Nm{N&ewn4pm?N&~wyS{&50&|-PdGfg5=;|CFT zN$RhLv;}RkK(`iNe#zwR43Oz1CIz7?T4rA7;p#Aq1Zd8oLSmE8up||SlIz+Lg+Q^H zPoUhm#=Mxg%f^7SsIyo%1NfA|XlaNDs2bTOdw*;}3f3+CwjM8oY-}-07d*~_ZgXEz zI3i92)Vo$2>R3J6D*DwS%7^T{18_kOgufv&5~yx{GNY?e??eVzeTZq*s)OZC*u@sa2BF+HH;-%#H=a_elrC>}&m=e7HrXo-3eRxuT2K{jTDTCdnj< zYJ^N)Gz;oPy&?wX%S+POQ3`glN%u>;YrHz)Bkc4SO&A@IQNt?WJa#w4l@?dwN zDxjdCUSrS(ZLje3Wk6!z$Rrd|!l~@_(zh9;WZ~UAFo$tAFW?&G%(v>?5GOKN6|qKd z-dI*mtv6eenr*Z~n*CUG&W`ZAbe87<$hOHUP%Tr@r8eST%G7jMMk&Gm$`L%lfAbNf4KOK#u0< z{Mj&L&c>KQf$)F7J029@LKOa3SiZPKfF6y9H`Bf2zT~K)!^oP=xnHQEAd-wpHk9Ow zO4H8`HYS%ILefUdjYFTNrR_{R0cC53OpjLX1|{u7%7(^;jGe$~=zly;O|}AnWEVfA z)tuTJ9Qh-NkFZ?69p`urY6uK2ZH4pJN1SOydr*DUV~k#fR}tjy%%ftv+uEu@w$?#{ z$*m;&lh8*k+lDMFNz*~IlBu~e%cJ9Mfpd?#4zUqv?Z_TVx6izOKjg*?`Pg!HD z8;#L&qox3dR1wUy=j|)p9zLS8!QXVl++?3C6m>s2<7)e(W#%TWRcaMaoDR%HO#;K| za`~6~<}NE-E*RB*v&NrqV8r2hzXpnZRPwtMF^^H}wmRW%ykX*e{ERE-0tPIctC717 ze}?vws*Pj^lYE%hV%P+|`Dt2BsBO7lKd#R{(27b)M>%V~1FJ&1ZJg#5G4! z0ogcHL7=$#XSYp}O%Va?7@=T6MO`F>uG-uLT`f#iyW2rIhe0|!MYn+qXIZ5qY7#lB zpAN_iJyv5;i5CNimdnyz*{eMMp`V-m?Ez&-Tex+9@MM!dm+M93vRdy& zT_Pyr0ped(qtiQHVpt!q)QFB*$$ZDxG#HUHtugCLog99;0|9}EsLv3eY9BS1Vtu)# z1>z)@CS0_wYR^EQq-j~cq;&~5Tx{Eb_uFDXh}#59q>aQd?k_?88L6l%pQA22r~(|E z(!_rMR$=!WxcnViBDb`I0!@8I7yEn~FR~~KZQRvB-=c>OTkIcJcuaB+673M6@9NFd z5md98T1Dp_7JZ7~MB2;%Z#{1@H0Ph)6ZTg9)gmK)DN0 z7=~zYOc^UdzJFD_FscRDuGk4UP?Vi31{{E^w8a4?-K3dRDzzH6pz)(nqEp92BWVY7 zxVmfL7^-TDhw}kn8|U8G@mi(MMUNxN_oQatdFXDzn#K>Umcn5;dJ`9@L2tGS_FlQf zmyk+gJz;A3VCyQfReRAxOG?t|I>r*9^f*G>P}JgbsRJW^IjH%QQ0`(XE0lPGggVb` zKN}-+PD7&GqAB6XA&$W+l0aa#+`rrI4kYv-l1UyPl#}Mx8Rfs}Ngq+qEUtKx81dqa zL_b*QZ?)#wvi<}st;Z5$+n71BJ~H9SrS}Z|c4o%V?s?Lu$rgBvc_d+X!=FK=<-^A3hTv z@N(Kg+|~t!b=~16*4tOx3TsG<1lXFx`KjS@HG5XRBVmqV-8iXkPVd{V2t;5YgTGxK zYvn*T?+uB0Aj{jzdqZ?w& zi<6qPF3tcGI-c%GkPl}s8;9Hex)7eOB|3joFi)qG9s|AAWD@8aX&NYuhew&L8^Zcq zdo^cw`_&hKgyso>EBnv*K6yE*l+9b%|AdK5vLoZTc_;bbTZHB_dUF zyJA04axY=WJ$2G-@K;ugws&p(iwmnB|TTFK3|cp1-; za>0?E=Y4Hv@*(IhS{7aI;2(_DBO$n^h{!D9p)A9~&be)sI#X)cndWRUsH)up|M=lc zqQ-Kz`O3qT@f}TppYCYq==z#>BQHwxZVE}Rw#1oRmBrrf-rY}g>iDQ%dp$IOrmdBd zFxqr9UiDwzxFO7Y0D~*L8$h|ekZ}gIiaRQsU0jM6mgn|c z3AeS7t~Q;F3*l)>ng5>X9p0!(i)NKDSo*|+1?qNBSKyKO_$0=pi0cPcy}ApWDg zhmE$GKA~L?8A#2RjI{x^ zHl>1Q9LV4uJ^eU7qMLNrbX$HFvW#SvQyM z=j+q1vwHrl6Tc61FSqDGMmT>1)|cKKPblG_dfB=bhj60U*g)XjQLPRWsPDP_>d9;! zfFI;nnbNU0P5V?keeVnRluJhKJa`~6)+un$R$l1-G=x3?7>*SP0tW~b{)c3o`yX-| z^ZzcvGXG)v2SEHVe@HmiAF@vn^nXYo;u7AC44`o8Fs0RpWFs7Kpp!GDa~#i`&7JE_ zekh=p?x!8$G&1=0(STGkY;(!PpA3{vl6fxC7(gxwq4{4nE-0M{*Yv+!`eMA;(iMW6 zQOeF^AhMOD;Jbz^7DGy_&B*Cy8!y);AAW=y<3%+I$T~O7y7$XSsYr+i;JI6 zt9XE6I5>*i2X*!3<@NOzk~~w>(X3|mo$@+ zaBc1u|om}NDS7Nm&xf$vvZPu_IGS|yL*3jVEg;~ zeIVn2WJRhY5#9(H&ag9-93!`!48q546H@JNPWRe7OHUr+1k_d3=;`UHs3N0dvGMRw zLX(n|9iSuj_`my*#4+6zB;{=Rp*o6-oBi|wb!D7fY&O2Wx_{t?qGDq%ZV2}b+}+c$ z6|1cAxA=T8!e(p#yXgNpM^LciF{(^IriDn>TC?yiFSnQh2T*Xx{|tjS3RAR)JaGB2-6D@&t8l#x-& z;9(!1&-wX!@6Gk~VJ*dnf*{>Y{p7@k$Ul~p&&%7NPR3|ZIFM2YRmE2Bx8WI?sn?5U z42)8}efqNaL7!o<=Q!!CY^~8Tadw-{>XNF93nM~8qNKD3B0j=FExG%1b9I$rX*K!d zOt2SES;f3vKCg7tGtNfCKm_S!yn@; zCryvh&jg%?T|Vk=ZivJ&`vJnEtS;~$LBId_L#`7MH@b}G8Xc>lFyE^#FC$aRLxzN+ zYNRZ&DmKioF{FtQkf9#9N zwBBug=`*n5D@-b#t-l|s-kdns42#RCv^+I7Hf1p~x*;R3^iOnwi)OkH2oS>eDcsoT zpjox6D7!#%ZWq!{3JC!ZEbD6MsOhP1PszznJpVatAv(<Z zvJB)fU>cv(8*Z1Im-qgDISXE^h=;p#r|VroS&M^}x2mN0<@Rn7vsSk;5qyfO!V)Yr zIAHH@$}&V)s6FdDB4Ji;uB43AIu&uy38cBZ=lk?516gs=$9?PM!9g##xnh?$h;Of9 zOwS#=jgL|C_q$2u&)EbWW#vxE-=R)INu1_--}-HZ>b1Kl$dY>Ok`qm>Zb&>oRakoK zZqFX#di8oT%7t7uT(GC4~(H5y`Bjv#HXevgp%SX6BL;|JirSJjUeMPU;lxZm>E~= z_O|EOCm5UT<`;S);8AD{eF?3X&g!VBErzbzT3TwhN;Xt=1wNXu_S7OLSRW(OtZez+ zN-TZsQji4FhlPR;eWGE9Bo(WKzyjF_X|Hj006}hSZ1{apPb`e=%n!$G-L6Ne3lSU0 z?LsNTtuAi%w$vc}3w6lS*vRd54)KuEpGr*PVz+j1eG+^H950^G+tV8$Q}%C&PgkL-EZwy@Mp`mTT>A6ubxlmt1PYUS zg9d7DZunc{k=OPu6*1TDc9Gr~gm-=4N(yi8F+gdG%rVuIQDN~zX^IJP^#c5(MZ{;J zYR2c+eNJ*eU%^G!xjY0-Ar3IQsM zOEK~i2N2uc-wJ=ad{%pKTd%`2^%}zQnwq*6NFb-1!vg)8Saw=2K89(g^m~}<@31x2 zX;y7%>FM(qs`IPAZ|@p^5c*bU*f4t7SavV4P$NR1A9hA&u^ye8pY& z_i`3JGkf|;wQ5x4CZd(+*jvOXVN5r9yIuc}z~8_1rLD61@C%s|5wnLMr(~RE@QUd) z1(KJVBn|%v>R7E;H21Xv;_V5)1@TzR>WZ6F)cXyP>1}g0*14=Wq(C}CI4f$Z+3x2ffng!7dMpf-K{EMbdje3YBxbOkOK^0wsq_(aP(g_ z+^Yn?5o&@u2w9$ALdFoq291?eR4*vwk z1i!V@ChBQ!e)@wTB-`lg01cB(tJT$0RlT|(JUu>>El29Wp2^&X%GeWfb+UI zI?#64l9LPuU`Xe3Uqd^AJ=4}u#YgcSSlWu*w%^qT8$%+3g>3zvW72+on@)ToRsO#+|EJ%tq&2@5on9*tbc-|JzZ^kCLx?jGaE-)xa{u5#V>-w9lvhS?$bY#Ub=Om@c9ilNu7&S^s zQDAsLK|v9091>dy}Y0rWGq+Mb`{f+C7e%ge|NGy+ou6UY2b=c`c@L{F>H_WJmX z{e+&M25kw_6`0_pIW-Y4APm4-Z z&K(J*={)zH|CuV2}0re9CM>rQEDyjO-QvC`@+ zL3V?iQy6r?lJZ>SzosD9J-!dmKd%C7qMzuM@ejM<_wH~##1JR4Jk+C2Hn839e)+rZ zav(Fp!v`-rgV7!;C$;4nM4_9> zhquG)?TgIJtK+1GA!27pQu`Fxn>8bb1AvscI^zAo1E$<%+%FRPQn0PjAl+Bqw1jL9 z%4KmIf{c#xVt8W5<+4K~)}xv8L}zv%TU!Fzuln5s%o^6;YGjI;eGS?}&;Y%4aH3md zhu@H)q3g<8UZp{nQ0><|Wie-$J!CoyJ*=%QEG0y1+$XN*Q|o+Qh%&NyZlh5@QLmex zcU@^O${4Aodb3^Nm;R>4Lt)aw28MjRSEBYbFn6ENAmHYI^ZcEMmAD+Xx}Cm@vffG_ z0(cH0Rj%CY>ltwZUm{%0kymT&o5VVV+3u`5tYu@@MV9rBh>Xl9wq2+8TrliTz4m7f zA{d^noyNVPIrv$eZr8sBtDV4%4pGy`V#7Svwv=n|M8{i4g`K}wa(Hg#>RWBMU-RIz zguD&NXUh@rxJitJHA45iCl%eZ9Vkg3CFsd~RxyJeqPLSua_`E18hNV8~%+VI=Th| z&iP8Efnj1|$%l+}?3HhJjlp54sLJBflUz6^cW9s7E^pDfIHJkgiaHk}?+f=0ZW@<7 zH(ir_kPu-25gF|_$S~WTE?LeFYE09BReNZ_t5)>MJ0d}ijd{`6#5wnPNIt0U=MHF? z6ivmiN~<<(tEl8#?~#0H-2(=jf*EODb2?5 zWFFl+RAJ$kQAk`4WUreb5ea`E=L~yEO;&bzdGd60SS*6>kH>0e^ZK;Z7t0dQW$4Bx zs{v71x`2V+udJ|v*ya@1o@a8$=Sw0qrWakX$KdjwE|tS$1QJR{V>0Nb#sylZ%(@iY z8_<~?sV4X;i$Wr%S%Q9mjK;`T!^=+J%3(&MPLx}jN3Uzk+6)E^ikD07Ze!zciCO6i z*#CnHx4XIIR#I#KRuKCKNLqopel{B&VVIs0kuw`9zniYMK^f~)i?`;S8GEX1@E;5|jn#RFr)Pv>g+yKkO;)LK5UMhV|5-Vr z*sghEB-MNv5)^Sd;k?TTk=NT2iZU2!2C|QVgNAe&;{7j}TxOKiDkPidboNteQ}<0( z66tD4iA_JbY4Zw7r<4{qSLM6{XNAK`%k#Ctg$4A16Mm^hxwcvN+qSbnz-jEcQGAIu z6>=Q1N&sdiG(ZDAo6VOQM9NUmSeCHFF=m=>D}}zaq%KqAM}Gk3jNQkYuF4e6S}?S`mDf+8IIY*=5M$NQ_}Xs0WpD`cJVjmQEV)3x ztseqr($)yaR&Yb7q1H|xsvskhd)xMx2%04;yFI9hqar1b%2h@>Gukak8v>I2|EcSn zgDZ*NHe=()w(T3+#*J-fg2@CE+nLz5ZQHgdb~5oyy!q``?YH07ZvWGDs@^(Xea_SU zJ}*x;zY*xSwH$P6n6#AVN_E#jVNwp7bKtA(?FS+Ih|;_+jQ z#YF=oPN=i!tIH_I%gd3HCQXd#zW@0UY}6XDxsy*&A7`Abw4I_453xKxTRhpqVr9+ zVV7S>$R_8)QpdB{Q`rY3g=636w_&CYG@;S>?&P!Q|Ds{ADI#4J@@6Ay1>Pi_EQ``) zW4$+)$})>jMk-SDoBf*4zXVX7ZKN&7aSCB1brz5xpEia|7ErsKxW$(u!@7a~Yilo% z3yo=`Jxam2FN8|eoM80YV_|7(a3|dUouly{J$Z2ynI!u)$uBewXCqdY|$m{EPvFvBNXRlWfq&$VfhEW)4?q|H8aGY5X_nRYGNn?psF z!$f49FCuR|3OBB4gFOJON>cc^=8tvM+H15&@cd1`Xo+%GzO-993A|o56M3wLQjl=S zoUAKVgEYB3o}HQHw?px!n|VTf3%t~PuW)M60l^!Y^~HpwVu4+GjYM60EpQn5JSKyW z5K+Vwr`=rz_`B#xd(W|Gs1*D73nTcn$&NB@;KJN)?3z9)#8;oU^-}})!(+igaSlec zfY?kJVCVO&z(Y)kS1~l=Ib-OAWN=MbCVqk4qPF&MX0P3y_g8kRHUE7TB(>BZi8oh- z3*oSD@M^L;do88!l_HC3rkuet1`Z352o9WdAr97cszVE!n>G5~wo&O5U1hZIrW^_~ zUh3y2KM&KU*5Yc_zS5oOn^vCiOAYmV1{OG{aLwAwoKF{AnSvo6j9=bt}K)2HPQBuqw`XpOI> zK7PFe4X6cST25Ns;2Wa}f4$4?^mq>()5)aOxE3=QoXLS@mvx@WwcxlX{HF5vrAV@R zwSOd;XaLzSUZo@WFp{i1)gZHHT37a71+0~RU%zbvl_1B%J~DMeMQJ`G`@u_w$g)w{ zs~j7ZY|F|YU{%@L7^enX<#tq|7#ireIxen8GktLDjyJ5&CKdqB=EIsnx-?u_D4n6*FWVp=`h`1l~kw2e)O> zLK(7}2Ejy7<7^e5tmwC=E2)~jTp8V7e?-f!|Ik9 zhvP$2N>1_Y-JIS|HZ}%I!oc4mOP+sBnju%5lw#* zL^5%UwG$||Uo}y!5EC^})DAA9f7<)$p4dkk(+J*$_{O{E^$1DCf}oX8J`_M&T?|LR z`}VIzcb}S^H!uJf^AU}`;?Mf6Y!b}o^uE>-4KDN}CRL8*k{^5`|4OsXCJL8r^)3O0 zIsGN_o>pVX*jE3aCIY4Cs(CZ5T8l&3Q;1!pOf_;jG%-uvf;GA;pntI zk|#+ecp36&cTe@=_3}Mx6L}AsUX@>u1%nkD5zs7$z@-bqNmM1Q3LqRX;}7U=qqRHg zcyX|69$46pL(Ol$i$o*wwAP6nD9Bi=Qs@wsEIwv(+oV5r(|S}g53=6(0rJrxam|h8 z@u{a6jK4hujv>m+cOgYUwMsy7fj=Pjk`i%IEXX}DlmD`UWKfM&nU?TMXDr??NV(*v z{g&c|Xf$nRk8?1pJzb$Ku4oX7CEXu5v%|DeT~`=BHHEW?cV^(f)5jon*&A7*TTAiK zhv`=lf_Ay?9yjZx8)D1?4>++MLNi_DF(j6Pf)KGsiQA(jg=}uJL4t_@L&+zOyzGg^PMgN+iv!9l=-{Dfa1GXNxA zkJdv&!Rz)l4N|G#bYN*x(aaXyNdj=dGB&NfLY*_C=sGzF%Hn}LZC1lsHH|= zq(Ee5W}$dH!<-*35+xvIOut~sq@i*VCwHTciXVzP#yiHILk=SU+bEHC$@86dff%x% z6XKP1D4Uo)@0=)~7e^efYk*~hY=_PFJ9L1Kw>QKpQkO@E3f#X!*Ojr}uXYNkr&9Q# ziaE&o1Dpb-1L*~@Ga~Xl&bo5CnnWX&vNZvBKQ#8w>?w}w|@uLo>caC z(Yor>KidMr@Cd)$a7+gratweqx-`@*-y2L`8$L(88mfS9ADdnC)EKmbymKf&pj`r=S48nLsCPBLf1kb zrnt<2#g|Yl8?0nJYuY6WQm_fgyo?tZv%$AF@}JF0^Ej=oCG+;SYS=1y{0GGm?Iwbp zA7U&VW-f~?PBt}tKqu~LBu;{^6(A>DQ0z5vX~0w!d~nu!HO`NgrYdxV%ubPUKs?C^ z8>0?99%8lnSW!(+JOf>%_SnRd^p6itzCig5)B3MaMuw68zC_Y~^4WKs@Bsz=;$jP| zjnMRS1BpjtLJVIG2co#*z%QD=64<4%HUr=T?t{bCK$($k6lfvAd_L5E_A8V1K+?;B zhHLiG6(3k>7I5F$Jzi6xqQPnBV!P%Tx$q>&gzgWb^ZF!UMeMAcHtCqbALL&=%@8#j zjX6jwbtjAesZwDW-czVd4l>0mSR&`YA(O1=VM~1GZhvy6S+!}BcpJ;Y>6gu+83N39 z%sV4Rhk*6asiSGJI?24*kNi;eZLKZuFBgtz9vTz-*)LYeZ~YaZ7;NVob&h@M!zw5r z%ldcift;#8RpddK(dk79hGE5%T~k#K+uF$tamDAIp?ja_ zdC5fPp75`BxIOrUn2y3_-@N)Oj2fA;Jh|ZQe%TQ9+qNH-zJr4~pz2z6Uvt!vnnW2T zk{&Qrqcw1~cZ*@z3Pz4Ho0Bx+iPdGfnc7a+PnP+AMy)9c{j1K%XET&G*NjhTQ~rm> zU5L+4BiLpcT;iIEi~SL-jOIK3EBiFIL%^7=h;zDyvOylBOLkH1lRf_w^N0;8D3N;a z2e@PT`-T=Ad*n?h z$Oe0!;3|raJi^x>{894S@$IbRUiRdbnuahUo?$cS_m)|PmwK*fUb;bSVkNnM= z)5bGuM&=zHz_v;-Q|OS=uG21bQJh{g$Wx5RHHgMw2 zMG|$t-yJN;tq554BTqmqUMn&r@aWh4t^xP&(4pS(Ubr!_25Rn1POD=f8I12%!-!~_ zgH7tU<{rbFWa`{kv$f}Fvw=k=M+Ucp84RG&@Gd=m^ z_G#05W^KEa8X$J=Ls9qC>tCahkt~Db(S$iJ5k##PziF&|z?{LyY?L{I?%JTiI~x+y z>xU2CKccCw8;Y zV9SsI466rFngSU;?_uHj92ps$&{j~lmRz|SG7R13PoW#)^gXZZRU3Bau?wmQ0rPhs zlyUzCH78RalN_W5ms+eeo87#yA3`T09K3^xzl0sZxGeED zPJRT3LTP6bV0}v^K~#g zSt81ef}>HdYtm2f{8Km|a`t}2`h@S4XC;OD@*fv|K)}Dl2i`33Vt8-(KuLBxQ5u)f z-G8jNkpPShsXF}-J&i~Vcq7t=ggr)~e@E-QPkoi}K)7Df4GcN85LSG-V(o%5v_2}4 zexD@IWyxb;FnDB2q4b^{pmk^=-{-R+JNzY5|5>YhO+sS&CXl+wEf`_2z=Pe!OjISn z30n*?T`+=n;>6n7gh$O*~->32?Jq}rYTqbR63aoNg@SyAac(v<<-!Yr{ zzzx!e?XJJTFf8gXMTIyT!$d=jW)7~jN!?)!3HNt80TKK$;ezn03@KLT2Qk$&tuh=# zEzE7+s3IA%tue(=yh*-{qy~G!6KpIGmQgW<8wp>63RF-jq0}tz2T+9=p+LC^GaK5%bU0N(27kC*nMgy za|a)&phvVL%i}U{#FpREd}MH^r*9GgIi!+0lFi{QJY3?V%y;SQY_1MLGk4D&g?IoA zlko1JXcl_j>yXh4ipBx;efK^gDj~MVanLz{+&f1vY3>D~EOKzcn8UaXbq&2)z5t=s zBP3B22Wwj_5iNG#9NCoB!rp-m?fP)!o#Z?$+#@dFzrbx#RPh)@1Ogd zE&}#63m_KJc;fNG>2$aJhH_P_O1ty#uzQ?X{wOFYnZ#Cc zvgDt=)9ja-&G2}@YT?31cs(ME826PkD+ZCoB~_p$!nl3g1Qr^z3r3X zk5_eBpJGbpOkn0>^iyE_FsZPiEFo1fD^^F!v~Dl;>r<75kX}LZx}JbIYRMjk8gogb zk|dB(fDRW!q{0i^5K#$e@WG#)WT-&q#U*k|?1ws9htdQ(7=Vbv#4Pg3P@CKzRl2D? z6%3#XG{z355{%iZkk#dmO{GX{7x{m?Qj5sbu9jKuV0>6me$N{biG8xtEW$Zw|B$TB zzxm=+NI)3gZZ7kX-z(EomX9sA%Ca3rDIJnaZi4HEtCK1 zoP_-_H8Yb5!d=W4mWD3$Up~W9=#O=#0hR3MCVnC4kS{uQ#j8zgD_YlODn)qjwc z=aC-ve0-JxmO?ndl(r8LLwC!ph~FhG=YhtIpSV^9(T*hN1=PCIL@=QyVo53=OOIegooN=|os z-opZQm2h_0w@X+O6(=z-k4Y2b+ZC#J{im=h@kVqhDpA{(chn&KLm`ME_nlI(o>Ly0 z`gb6p@o*J(bkq+OS171qO_)&9f{)p-5D}S{>}2Q@yWQ(u*U9APidcdBrds9@D`aLL zTkvWnn&ROwxElhSSKQWkPkH%V0iUjM+5aXSB>)f#N#sNxkQH9Wi-_M$%la(CvfAp5+gJx* zgkz891;neRP`4Lq;LjR2jYh_mS8mu+Q***t+slW_CA>{`lK4EpBZ|gxRY)#4RC67Z znG#g35)6`Tj~aavq#YZY=UNqB;w{YZ!`rnMGVTvifm`~!|3$m}o!aoVf-+G+d2 z>bIvyO0Z+!aMAXG-vkHsP^L+NC5aZ#xGBi!lKmA+Ki4LKUm0|jHgO`u9Zh+ITgsS- z5v?ofu)&kZRJy>kw;%RkalzQc3ojZp4;1#g9)RX>9avQq$8Tx=hA-LHy4=xSYt8Y` zA1+ju0f_<@4UHYqgejC$9MM3f>G)Z0&qV3i&S}dkn`+9j_jRW;V>EJWRT_I=nP@e8 zca?v6wC9A6Ry-;Qw)12h{=Z|*E~FOmyljO6ox<%oUMJS1#oUP7b+ z6X>&+P1|}f7}Pf@u)L^XwR@^&_j}b_fl^e%&vXVcAyHpy!b{;}I6dz4y8kkF6-_s< z>~L};j~Syh$e(>pS*dIE8Sd~lUND~|ULbzZ`*AxWQu+8j0Ab2M5Cl?Y=tyo`pNl7&X{;gts%E$eRoTu<#*dtq@8=KRqg*gu4+G-nJSzleFuQ;p#!TBWD>M_bJhM^d@S=P$3YmJb`bTl; z*q=u<@JWt4IqB(=E&z9I44j=vo`iorX^_Nh6xgQNE!gmwBsl8;F!j{a;5flp)f@5T zKf?1!Spu`W=^KP^y)k;;Be)n7zYGSBjw(f^u!Gm@?S5&eXBHS%nE8E+e6)ktAL+P(VnAM%i=z_+o%Q-Ab!Dd1fP~zmThx94V9-!0mx1#%??W_dc?9)2|(J) zyt-ZoD-OLkzvS|zdFx5zBL2Y-e*6iY{<2(hMzsN~LjX_|^MQ`=ta>UhGU_kv)JwC< zOAxsVdS751v)mzev(#ksM7S7BlLC8zZ5ps`K@}q4&suZl?JmEk)L$yZtIM+}SNU|@ z-8Ed{NDh|$&5Y^fA+q&kvfqktROVRr>X9vr4oV`I62b9-X;Wx={rGrDx3-j5&!l(bLK-KHZjmJPp6)G;$52R9qBO;lgDNV~YM6@0O$Xbg znvp;XxCk}+6mvtxU^;M4O^m#F0JarM=a?TMWPcRi9?ZidYJSxoj7i-Ko;RDjH#;T$ zA+Zs=#H_!EU%@de1)8k|Ojt)vJv>66M-s&j%68o0Y_{;PkR$LaFi~45wOgNBT9BlX z_brxPqBCv?$LY5$SOWM+IsxBv5(4-^#P~_q=&+#>m7d_qAfm38 zNrB@0c1cO=0jSvO;oByGh1Qqo2&!=|H!VpEiQN2&P|Ed_FnJLDgZ3@m-_LHze zG|XWzp?^St!X%<$%SKsow5B3Q&xeS5D{4H0s|4jr~&V|7jPC!IXlHzRA}z|a>>(}4`CV&E)@ee8Bd!fdosf?F@)UW&n~~n3PNx(%fgRdn%`cWWf3qg zP?UQZhBk*?W+`Om0rsFbn?yh-z;jOBtX!Of7i=x6N5ddwpHc0i$4C^@IzwGEahYy_ zT@30p5S=W01Pe@@UlAN8OB8{_*qB#1NDfDDr76-GjuNw>9GMnjo;U{yI;M6dWxpiK3lITG1oj(vm?j-1wE`{Pvah0A_Xoj$gf}w<7V#GVC!)NB?5_46DiZ1Q*g-$Yo| zu9Vu$3`ZDPvu%d%280g_-22b}G6`Ddro zrc>ODlPH8t&5?xwwVC$&0>S=d*wrDquYnk`$fze5Ww7XYSA4wvH`iohQnb@xL)I~a zK>eh`omLK~L9q4_VzweMhSeL|jaF@0&q6%@(LRweoSJK#&kW0%XsIJL|lU^Zgl-SFTeIM z0Yn7@&1PLViN1bm5+BS-Hw#elJha35J5O>AA)Z zJV6nI<%k^&VF7xez9*l3TBR|Q7_4D80q<;W3=|K&fewd;e6VDPceai z?BbNB@xuiJ{fb>k9eML<;11nyr$>QanKJ{T)y01fz-E6S;J7H%@B#upmx#oQ$vG`k zN&r$p5iPo$4B)ehYgS?4nf5B%(tCTsx*=Oljquk1_4>8weM(9i_j$WBeeKJS;Yold z*V0(z{&V8BEHsw#}_f=#$$0>`+rIHK-NT9<;L8bY=vX4#r zqOK(t;0e8gn;joPf&hLZqx~x)!FNCF7@=|{gQ4?=H6(6^IfuUZ08i=IuS|%oROV@a z`+Q;^T0k%*876E)j~dm>nAJQtLef%l=GBNXKL~GV{ct6m5(6guMg=T{ybboT4-(qs0~f!iZaoV93Y&{yI6ytkR@0Y(xb7fF6J56TAGcM1zQ6_t4io| z9@v%Q4`S{8?B)&HhYDH`vr$8|LU`D*0mRl(+=oA|&~l?C4v7aLO}ce)4FHnrsc?Qk zv}bBp8*Wt^&w6~ch2&Y>ftDZA1m4)f>KU+#1%2F=aNt3u{sNX3h zj7654e}vZ%qLzx?{VqSVNwDN+J7A(xgTveos_CaqctJ8a~n(J`N7{}++!YADWemC%z68wXq4~&dY*&50kcB-hT zIiiFc-Wi}t?Bmd`xls?G1qk5XNBGF+pTUKrG`QH)G=0NmGQO&0+KhS_NZcA>L~qwP zsLx9yZA>A>eLp=sTO^f&RlF5oEN({qXAExwobwD|A|x};9)ZfO zhJP(2+C$)bMPXM)FkTSUkaGuAIkwYW!_a3%U{`D$EygZ-_G?qbrQ~bgB7BC7w!W^a ztaXnX7X(ZEfGCow0a#!i0dLHfu`}*ez@Ut~#+XA^R^Ow)TisvUrPk2TjSd(we+v8{ zoB*OS^MUzAu1vwcg@lO=q`!D(^L&LKv%XJ|FUV#{$+Xcg5|}o;$nq(29rnQ`(6vt3 zeg$CrIOkwpBd+A;NppFfXPAHHK z9Iv4KCRZ#U?h`qf%JJAPy8V|7BN^Ytk3!;a6BMR{S$sf^Z*SiGh~O>kyuWl@&7V~( z3uZ7D6-pjd*GNq5Y7&n$fSw>X#ZHQ*;-6f?DnMiX{Be*No;$~cQf+cbI}Iu2Qeufc zbhTdmHlsMjo9UZF#`mx9&U<*nUkv!i>AU%2t)o3#tHs0A5>XbYoU3_AVx$S(JNWk< zd3fQpJ&`=-X_{7pDz15C{s@l`2RAor37HVh-|CutV54g2^1@2QNz^~2h`M#5w|@uw z3GY9_?OfY?=*(tea2JsWL;EeinV>0H!z&~quX6^d-YHlSs-$s9lySY6B=Iu7u}i8! z%Ww^F0b8Gu1N>2$``N(ARlbK+o|4v!Yv0&nx_ZONL(4%wkH~T$m4jsVTanD5*;C~YhuM_&3hdpj8;;x`Iy7xD>gDMGBjBzXXvFL z*`(DL6@*!z+8tXMFTwSHW!7{V8Z1E(S;uS|wK<^`^Zu+LpPh5eblm`Ocwt(&xNPux zsSJF>O$(hSZ{+6m{EDJFKQ=&FysQ*hIhgY&%88?~a)_Wq!0$#d;IZU1lg^9VYEPLG znR99ROVE?E4Q2*JM$};!s03m(0QbO8mazB$SkmjKM zGTLF^1(eM0cqaBioTkuy(*LO8FXFXm7dEISp$S(hyERMbwPX3^jG1!SR2O9w7l0%l z{a-QQVSN4{yx^{6EY#NQc0k+Hk|2Kfo#uOEv;L&?oGPewIm*Ol2HUa6b=ZlCyE{eT|G0?e@ zY2DEW5tgZ(u_?VArjOKYoJPmCk>7h6As*x@KiHRhg;@!-;{*M;!9l(+l6vW5nEGeh zIj8B5Up?ai9mEmVY`^Lf44S5hlc^vebn2;AAmYrjZehYltrfkCgbvpqUQ&qK6{36I zWmvY!{G6&I*MKNt`b8%AVaaqxou9^;zJ7*s8JC~AwI91$y^Pjt> zbg@J^^;~p&d6e6_b$XKkJ;<0nWYlp+qxaW*ZUxiL4AX%eG9;j{?+uB_lz(c4jMzkP zn+JycA?8?(B3wx^eL=@`f$#Yt&7TgqUqsTV9H87*{KdgaKgS>?OX@t}bvA)jQg+Y* zKfgli-AtRnW}T)9ZDGiiVH-ENOKpPaJ^iCAC*1VtS~jlKDEjvd`UFwLS#ua&xZo}$ zJ5g<7W-YEmTJ9db`Uo5zM;bM!9pV$V)KLivdiG9y4nNXb6uL5tQTNEkdM1QT`h$qA zgpj=^FL@teY{KvQ6wSS^x>O1pJ=^fK3do@O+PtpyB#Yawh(6nh{WKemg#{ySm!%XG zq*A6K)K)0lwgY7$JP{?Db>hAPKxln1hpCYN`n@2&bVu}?Qoy3Z6MBlXc+GX~#@Mwe zB8f9Pd1_cDGHbV^{7eVq`^pj1`U?7#Ui34V_LeY^^e-r(%Y#d(-?%S+dC}ZhBSW&A zxf;>-8)W}#=af_{cXlvf%y*C{i+W=pG(@%5Tn-ur$mG!iDi-fcUb=rs-|W^Gxrn96 zm=rgtz!6Vd5H?*reqSeVjOs}E_eP1(qFsFAkaPlSqaoSG!Hz$R7`8b5mcy(1x&2qhpE@>(wD#+YmjR1w{2~XGe zp70*_7GX?J6Ls1mqskf_mvxwkp@kL=HoaC-p{Mmk7D!3Sd>PT^^7!&Y0K-GE!kU1V zid?`91N1;1DH$Cfmzo>pwvQ?^9W+X2O6?XLOHQ}z`h?>ZpLGMl${?{hbcDuPwy+!4 z6R73&#}I~kt6xt& z4{`_P^vX0z=&<97dNu(GB}Nz(%W&q^Z$O_XpTOsBb7k@=)#CS`dy0fu`7%dyou7$? zC_(#l@XuetXnc3+x;0oNU>6>x3ZbmMK1?t;viNNSz&fu{r*5~Irk&4n`QiCq?763+ zsv_W6A1ug7fC1g%L<$uvg-iH*Mt-_ODglJk z6>&|<24$F80U(v%sh$AN#bj$YgK&N)@KEwM7cKXxjPwj~*g7mHW6g9f9yy#*Syg@= zR(y8Qef9XTb&4c`6Qs}--EJp^cATKgWW@kSSyfIyI}D#aU&RxWSlN1k=k&{ZgcK>q z$6m^<(~yJM!Ijjg3`n-?(B|5H!rm2<)>039=7VwFPbJjuw{D3?9!q9d8g{tShpFUq zYfaC5Ydpse9W>P-5d$S5A2B$gc{^w=z+`kuRrG3+r@T*XUylCE7{^$XP zG`N968l?tV0#P7?M?fR*H*yI+iI?4e@$ZO5XJ6ILyF4H)`Id$z!+f+EQ);CpsnN9X zw4g@ML)UAO(w@803L*sV-dpC9T@1bSuWW^tUZ=!tXx^oC``3XMQYT6Z61GmxtA-Lw z1(?sgQF2Bzp#l~1SzRLjDkN)D4BoqE7Y~xEY}E)sN1d?d35>wrXMXC(r6$lMZO3|8 zY6H^I>^#RRs>lW18Bdc9KEdm7-ufj{``Y2ganK;j^*;?M4+r0qRpqI8pIC8>`d<6R z!Efwrqo^wRono$=6mIf#GX;8kn86!_r32)P0wa~LoPpRx-fmFZ-fNE(o@N-}>|W@W zH;m)2)0MW1dE+~93kvwpJ5lApNPB6f!BkimH#Lsem8}Dhf>U$Ff zx+9Xz<271_m|B6O`Q}TBkF}Po7F4m$jo*g+i^#LL?}&iY0|Az&nE=@Ys>p%Q?^oOP z4tfra8^F<7%iZ;Vh_k<4XVj-In&;D<3&|PkIlfs(my z`mnUJ@v1d>zMXa#=KLG2Z+q@LGInqgrDz~X!O?p!c`U`0?{Rz?W2NW?E;Kn!5H0J| zV_s8*!$nK2DCuL=W+pWG`8lDC}h2-lbm@|zy*chvC`ncbIAp1N& zwjv|;%$#>@EkMHO3SQMVJ=I)PtC5hD$pqvWEgJm6_2;HB7p$oZE#DecAK3mj-F#N? zm)Nbnm>VF^%_uDN@^DX(9Yil@3w@gL2a?F_E0O)|?_>7O%<6C8x0Jy{b-)D1A@n~& zXh)LxCni*>*GdN;{6z8d192R>IfwUyKtFYuQfyw}57ghp5XMc5o4lNKhyG8Q+2VnD zu8*-ZPcgGUkcj{8Xyp})Kw9d3-XhRE&+!8{mzeykVROwuvofnUn4mHzgx%H-r$t;4 z?wqiYa_xEND?$^db@CH#Q&=mh4#`{2ZfK_eU(735yS=e^9P2+Mxfj7tSz=yvbINrx z0aA>b%_+!1$ZkIaRq1a~vo)F_3m1e~nU{3zoY{^w|FQ-Ks_E$q!O@TWny%K}_SGJf zc?gUM+(IgmL~zX(LHzzY*vHdaK_$w|*9oETWA}`weusU)>?tO6m?Ye$4^BRmOA%FsL;|fTzlfiNz@HU3`ARP)Mu7=jzd~(`x26eu3^G!4xrz*)v4`adN9j z>dwE9tvlH|^BxfKDxA$Wb2hv7S4lUJ{M5BQgf@Duqt6( z)$7Oby4&D2-Y8T_Qz-%;r;#g{zbLsZX|yCbp^YTY%C2puVkKHm??QMLkL4N}^aw@M z+^Dh+jV4pv0N=y}fSf-w39dw%<1OjtN}=&-JETh}#xD;SV0eOdO6G~>aUkY7MMqM` z`*lT>BY62>s3GgsOSF+CK$fX2*(?W9LEJlr%Na2!R5>$t(ZH>KC@Ml!nnrO@R8>_w z7gHsqG{9Ouz_*GVM99qtWAH(%tO)>l1kIoCn9$}>6Mly!51CNv=^CVK0`g+wwlta0 zI{YcbL?ZQW@d{j&*MoDd?;wyhH!Igyw0j#H9lJzm-1YhKmo$e75LAewmZ$O6Plh=_ zzy7D|bf(d2F=Fz>jF551d%QJ$81`;bG1I~0(}!!%Pzn`5@!OwXY(jmrO9zo9gDB4j9h1BKxXtv}l!RTAGR)b@`FhLOj9B$;`Lyk#3_P`#+yy0bM z|5K#w>@*{2ZRSW?#tNe7;OyNuw{P=-JmXN`S9MjvS=cnaxw1nh-C z{v=y&>>61$S6jQ4fvjxCH^HqwU*dv02KeyPz)Ca^&8OgQSWz%-67How64P2?i|mj# z;Ts$jfylfJ3$HcWb-e#YZW;|A#U!sl_Y@fV+|oD?M^3-O$rxRPdYNptP8F035j(7p zbbzKPwlsS_1;->!%&0+@DVS0VzQDRfqVs+VrYzD8NtQm?Q$~RBq83l2AIX~I1mQzA zwC);hUWA13Zk(u8Z06^m_zj1?v;J|(JR6UK)J+wk;na z4--5~Vzu<`m!DYKkHK=I{%2UdEZK0~K9_@IKISXqlLYZD^7$7Pk8`J^=4v1`x0nnd zaqSIR^re38S$Y%b$g7d?XIDaN>Irg<4mcQ*5rxit4ZD1wnoelY+ea5Zo83{j;&YtA zq~;8asYF@wv9IOJ&PBxX@zHPc;>S4R5)B>hLG*F=>;2*3QVi)MQ|jxGHEXZ{ zm@ftWrKbPu4mj;qcvD>*kBEthnI>t3hjO;=l=ot+)nTQ|2e|HIomOF{ARs|YwY zMp^?E1*M=XLV_NBYkRS?sma^PX>EO(h-qhSD_YoFN5>#$VwCEu!jQeu<*WbB_j|;~ z@AqM$(!@f(*zVliy(+qfp7&4PZQB2Nwv%~F$ID1$#d%Laf6evI@k$HN?MLA#4GoR6 zv9k>?19xprPkvj|rHz!PJv)0NVw4<-;P_Wp@v%vk^Q#LMW~ScH8|NYJ-Z~zdUQ!zF z-qKc<{nvFZ!(LwlO+!2_lH9bc?99rVY9k#32Bz9@g3p`6xz{Mkq+Kj-vvg7_XoDuWoR?XOWDfufL-hSEq7<2kK zbA6p?l^!|+1@%(;b=)a7cB)j8S+-PFc{m8j-D=7tF@;uJUEA970~0fuk&&4yu{C=Y+4OGh4qlzSrB=?b|nBzfaP4@r3fT{``1Of056C z|FFdW3sPU>FKj}6ZPNe7=>Hq5|0VSQ7yh3!{r4IFoA5sfx>{5xE|eulu&+y2Qc0pl I%sB9W0B11A^8f$< diff --git a/site/static/docs/5.0/assets/img/examples/jumbotron@2x.png b/site/static/docs/5.0/assets/img/examples/jumbotron@2x.png index 4d83dffa6f1a354b9e3ea95809448169c68e0230..229b6300761db086b38b13e807d767e175f91df4 100644 GIT binary patch literal 23316 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 literal 38408 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 S^M9YV0CLjGQq>a1f&T+5D?0lC literal 20148 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

QXYGi04;&9Dr9W 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 wK0NxOqfr(0PQLIF#rGn literal 25033 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

8MZMLU1?OMa1K|*(ry|#G?V<`$_ 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 diff --git a/site/static/docs/5.0/assets/img/examples/product.png b/site/static/docs/5.0/assets/img/examples/product.png index a8d3dcb8d49913723ad6e9588301303ea9f179ab..a95eff622120ce0d9c84ef964540b1e605c9b5fb 100644 GIT binary patch literal 12906 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 literal 24977 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 diff --git a/site/static/docs/5.0/assets/img/examples/sidebars.png b/site/static/docs/5.0/assets/img/examples/sidebars.png new file mode 100644 index 0000000000000000000000000000000000000000..00efb311e73f984c71810c22c33f63589c505c44 GIT binary patch literal 12287 zcmZX)1yCG8xAwm*ZUKTzaCcAe;1B`?cemgWG=ab_?(P!YVX@%0NFcboE$;5N`FL;L zd%wSQovE3gs-CIp`JLxH-8JD~ROGQS$S?o^0Jfrnj5+{-0DC>y(GXwnuv5o<1pt7L zUp{Nf(lD^JwRdzuyL)>3?jIg6E-yPe|I-^99=W}}`}gl(-=F@So!vkE1A~J@1Ahm{ z$H&LU#_#U#cK7yr`~FN#O^=R^kBp37US3U1PTk+%@9!T>OiaGE>FJrdxw-lI`PtdI zgTupxg@u`!nX9Yo`}>E6#^y>$_0iGMIt;e3xb)rEZ)s^sLt9T=QdUVteQ|NIw(fUn zdByD9d|*h}_V&(C|A6Gww3iq7^78V^%8HY#`~1Sfubey`eIr^%w)y#m2EjKZ@(la!fUsyCWF^6qz-rU@-t;4`U zA)LH|4$j|JSJ$7PU(V0ZH#WC&^6~|R#F$ywSU7mr*4F+EjuaM`mQ_^FFD?&`jPnWz znOoW9f&d@e5*iSY72aIXS5(?_qN<(G(Rcz)N* z#QIBCJG^P^rMmw)whj&|gQqmU49q`;hliJxl+12EaT@;h$hti_IXykUDyx9}ZfHzN z%h)-FuWcSc`vxwrZkAV8Gt$!wORJjOp$a0ra-8Ji+{{hI*@>?DARC=DdjV-Cd{ar5 z@9MliKGAn2IJy~r4lxv($oy36qv$9`SsDx4ne9yRb3IsJ&=MrqRaf0yUf`pnpyyW) z`r)N+;1rrv@!igvmV{(^YLwxFne1m>8?V&FoTk$1&cg|nqSsu2D#}P|dLxWX215e5 z2|#8m@7|0okFDOkm>f5*M&s{9oy(G!!Z8H3@ZAwpZEZ8E^i)>g4@^10M{isnQbtp? zI*5={`t`t}3fa`XQHk1$r?lrr@f+*jl3MB_tT%Iw8-aYKNP={kVh~KXCUS}ZEro5o| zb@tVrjaMV~9=oJ!( zyEtalxp=G(j8(7s{xSsCoXp#XP;nG3j4eivfh;ye2XGMgQWu4k9t1qxfeYRh__-R{ zMhrw_##z4w&87^CzP`|z?wsP zoL<1Ped4KYRIY%pjRpWF;GW47pNNeVVWPS{+fAoNF(G(!CC{$gGAzeYygd| zncByIi=xuJOY_ItKZA$g-x_vAW6;y2gy2oHMeux;Yd33N%$Dymf3xRwvoeRgK#P_# z3~-XpB9Zl^tY!sV(yyqcq{u27*Fw%Y*`T>-N`V>RU@gc!)(13LgA^ka_ucgF%%A(? zUkx|pZ~<$&=@IVHdD8V_YtzSCSq&^l`%GYBwlTm;1DSJII~awqc@|~UsTw;3Yk_XV z7`tm-#Tp;yO_X%O^9VeTPES;rdN4B2f&*%GZ859~+hRD+%3_6*(L%kv{>l_o;LRJ* zPn%L-5-OZ>2-mp-IGZXV`a?IUyL&7(qHl|rfw_Ib4x;Icwh4%rB+i@Us5nH5IRY4_ zdCggQt6u7`G`1H2%sdTs>Yz7TUWBn?JbQcbyr1HawuB$;?pGwvnrD=D90G6NX9B>Z z1cF~9V!r(XrX}UxchRx(v$(-y!g22g!iTwwTsooa&x}VjXAS!xpOEg}Ry5H8J{VBd z#(+bG@+{NP?V61iihjU#4QQ-}EO8+$=oPJX$MWHRZ#7-mr;VmoR9zYfL*jCHI*QQ< zqihbcbMasV>I6TLe1)6C-J~@ONf|=@^qKRaYX5p5)eE z_p!nbvTyhckk=eUSLMLVZWl8r9g0oy3!duAi zy14V6w=GM3I-1wt^#%T7HLI6$rIaD$yCFdN)y2tu0cbGfI^RO2IDf`NU3pwvwPC-% z-$TZ{d%C`*lS4J08EiRwgYZ{{ssBET@uIYU3BgHWbJpxb(3Ipl<^S8-#tZB z9)Cmx$lf(W<}uqh^kGr6aR{JzVH&OQg1YL!Nien=3F1c@rQjjqe5>^>HLwL;kzym2 z3sFybrI8@Pgv^{M_u|e!X~|>V~w^1UPu{3FOHHg z06OnInN}!j%L$Jq0d*7)YQvMu#BS*YWpj&wT2@7+mR;!+W(X_EVYZkJgYLL(GRb;b zr9*DYrY{Y|dLphd3a6CE!RTZ-gj8v6`q~4W zBXR>G_7^>Dw_jg>8nEE(I=@+WUbmq)JxVTn>*P(3bQSz2x?wHtlih}D<%d60)#EC7_{ymNbDkz&wyc5X)7cTTmnfsf|B?s(5K0C z*N-X1Za!SUyuYa~cWP+YWq7~QTg`v(KlU^ISG|h4sinuIU+nkJJxSFUz}Zy_(^Z!Z z&cfqy?cLFwjfQ37?n;HpSP`~ws*Eb3_=Cex??#C6%eVbi@BLHay^Rq6v*xlQ)PoJz z*#_gIleNjUqsY3fHA;JB701|0RwGlfdYN?dq+QM_#a;B_w?`H0sW9OL>B798yv(Ia zgaTD}Ece((9O|m!GTZk8!O9hG!d}W+K9wD=om?v&X`I}7-70Ts-}R%D*Pw8jxk{18 z#D@3KkNV{mQ~N-fYsNk-u_$|FHx-XNsmJVU3V8(n{4@%iC97t4gc$?@Xaas0TWGCz zsTdluPE~WDichkK%vxg87{N})CD!47Q0DWSqrW&)b4&I@4f9n^RYKbKs$(lRN7~yv z`u43*>F>>jLbLf8Syo}G6g}9kEgvEu&f?EbM4d7QVC&+G%gawEO#lrc2fw(n&7sjg zQ8(OJU{1Bxb>eDYAXBW@-5M4}-ciAAP0iFtH+BUcadHgbU!a%pamv$|%R!s)_lRuo z2=2Nc6SO0Zv@!fCic4^wL)mv@na}GNZ8CkrPna@uI!H-ay%PbWxIxssOJnn=QUuNB zPaAV{PMfIpKM6V#f`J9E6QNczJ=^iqv`Uw~(-#i52{=zZ2uR)Nj!at~W9C+t;)tdd zYhvyQn>jZCo}MJ%KxiF>a7&88#{iM=b6V_lL^l-BQ0)R)3&=U`fm<%vhfz4q23tJoQt&@n|}^A@7?Cca6H>@^brh zAe#UX{MHsbhUhC4-n~cHFyfi zt36D3Ke_Rbb$6e()(B{r-j(ZS0%JCq51+_ZE<=nBWpqUxO{EhfNa`x(rBO&M7Wq&p zZK^!k?~EJ+J*zFw<<+OV;mvsV0Vim?>t@&Q{re(E`{#I7TmNPTMS=o5ZmB6tMzmJZD9xvtjB&sl*(q~-o=smToLp>htVDyfqNtOkrtOS zME4_Kl2X2ZHCH6JfL&)Em|C>vt5W*M?lrW}_GkRG_+S~t$}n-}*iFeWj&9$iY6#;# z<|QIB4FVrj8r+4y(Dl-!TA$5fN^US~=Q{pnpisHS$!!OcQgc3QQ;0$SpX8`wUxD1Wd}-}s686QoU2P-B1B^p=V9OYKcF-G=c`-I z;{I(Dk9da6a?-EzOZr|fiTX&bC%a!3*9gK7-c>^VDMVJcVAw|%gVB997nrOh`&F;UZ` zXu7J3=-Jt*rgcHc&6u9@YPpbwBO`Rv-~owo%1n{u>EdsPUZt~V0%zLX>Yuo2WQYR2 zC#3}3b`u*qS_M$Xg=bo+A3bG!+cYnf`1U2A(RVU0x(Gc>6a5yO&gyjK@Zjm2^1^BD zR$|r5Q;7Lap^;L=JgVk3=~HE=#BT)3raTkwFOBRHKG24`Ul+d!u4~4Y>BzD7f{2$4 zmfGGsDJ}CMaE@dbVbOFPR+ zSAzQ%CUITqRP^TAWohLN+xU%4doD99Wd7i?S8wF4$GGCQB?ONNpyny!ya0!Ws=^*3 zv`0Mc8bIh6{#~%OaSkCLDEVqD1?g04R+hk#xyEoiFOhvtIaw)blJzy=sO9D_zW~?f zBE=FN23$(^ge)MJz*_}!Z@0Y?5s88AvUOG)H9q8sP?)bBZ&dnnEY~$e=WM{XmtwV-~BX>lkwh)I}u&gnR}a=wWTSgROLyRT0wG zOt=PFxzA&%_k#C!&54W)etF+Fr; z&DW7o4m)zS+ab99^;j31M0vh;O4aB|P)5^Ml;$z>1cZMH4&+l+_Y%!|t&T2{q28U2+D`*UxMvGlt4$dphQYw(zhw|m-z!TSc3 zt=9Mpr9T^!53-gvz4)Iyq8kA`J{s z1mc$~@s!(kvNw1ze8DdgUvGU|Q7bZMS+{9ppfkgS4F7Ry?>Wij6;_Q{07YLJd&6sq zxxhf6KBzX#Pu|Chg^#2Q30!3P3hE&Z`1&(Muk>%IRC^dT3_U&chMs6tl|b+TX36rr zWMO8~>3ij2N^n0p=4rlH;*U<@-jR&7-W*}=i!^QlcE)TH4WkU?1N3XPZ;0NX0NxkO z=lh#_C2oK4PPTrukL?=+0b>R;qt3he(4v4_??^aKhdixot?WTg!?4l+yiW3_;7aqQ;@Yi1U@MDcd@{jx%CNR12u# z$6C@~^y%wP-#UI2p&xUD$S}osPY$=DT7f?B2c20W$Nku1#xy)!k@cszw%Fh}Q2qhV zW6uSi$rmc){DX&}dekW3m6qKI$6LPul5ymwOm(|lmRj=>zf7B!get@S4+@fBj(D2r z-R(5&dbEMoUBl0G(g+UwH>mVu>h4`U63v!zF@(7WI-P{g*WEmWrw#kk_u^)vXR!+F z9hWE{!POL~>_Q%<67U9(#G{_!RP}g1n3nfA+%0>PmFy+rmsyD%uP@ywDFPF*Fmq76 z9*qG%9c`$Eeh4^cCP^JFACBT!NIyoqZ*<8_r_bVos7i%Ruuo!+jPcB0;?djnjZXLT zPL#{=)rItqC9U3%G(7HE@gfRa<$b<#;7 z!u5^DZCLCNyH`CiL3W{Mw>3xmo1*I)-cQ1n}7G64WZ8kg$ChX1SH5RqR^K^p40BOR{?Z}AEy4h?ekH}>*lt1*kx=+gqTGBv|yy~9o^X8pJ`Fm-Z z`@yYJjOt&We&FfbZU1NEf154XU?20rspTmbN{(ms&c7EEKapIzyRb;Wu90%42%J|} zHOMF1-2f^@GI2^m;2mv^kQRODAd_7`KiWu|$8Ba6vMPTj8F-SzPEa-`UYpux(9AEw zt0{DOm!5)0nmP)x&wQI+=;tntJo&Wt)^W47Xf(6~m7RdCll+23HfRe^MSOMiDeoOBG%Nog}(+-+hb#a<>&!mE)b`urXZo1%HkqpY0r zPKP0&?U6fwR0*%SDV3e!nS(Uoin(_p1|pxzj--w7k$}_ux!xmOFJL$>8}nzAES*b% zb;F@_QxZ0vVuFB5_i(VBnEfnyQDK07oOlO^>YkO-=CKRK#0>Gl$Wly2K;QErvoD9CWoE82yL? zIyx@fe_k}VjGYMC)ienueoyOo-(?>KmwsNffEc9}CynQ32qQyE| zvkH{>d2zhDqUr3O=rTCuI-=Uu%@r)nE#>uq&5v@Q*^coFD!eTKiWUV$@v)5DCZF%l z3TYo`-9V6oVdJ4hQO5{2L9XaaH4O?Q@PH>~gVf*_enc2TSUHyHI3JWx)c2ZsSp&$-g#G z2Fo_^x?r}0=$%2ne#7J^9^f5iO~hIgJ*%26{b}e6bTFKOBEFD4v_OVghQO0eFdUQD zPl>i~B7N**OSj(#%M8p2=%V=@Gh$mNs{nXaL|N@S#w*w)jX_s+rPKf#0NOd6{3F>% zP-Lj-(dE;)*fe?11HM$sm{<9gX)JInq3F?jU_K5W`B;sSTG@%{^d+!Rz;Z5u^%p%y zC$c0Cc8`qyAl(LvRW>EP{B+L;2apVsq*ErCwt4!OC0ZT`GVZNXD2s)~Lf2>d zw{>x8>WnX1a1=bsJ7RtAB~e!$jfl%dAkbeJ_1)0JhABLO65TcZ{hvS2< zl3=Mlr~SEYX@dyOIaH>&Bu!tD{tH!h83&hiNw#(z?34YENK}?c!s$VH_ulT`Unw;0 z6v)CN4i6|Ak}4+6!mxkCF!n)ba#ESq?~6UMJ9H_*49{rA5$A0WDiOr`HYn6og24*i zv1n?k$(AjA^oL&IN7x!-jNKMG?b~EIm0{Sl+;fA1MmJt)!Dya2wVJtG66WUoTcpv6 zr)==2j%vu?6Ix~tx6GvOmH|rs;5iog(3;k%NT?}2vIm(0p>%)*$^psXxpe{(34uaC z9mzC+RqhL7+~n9txx6dtQbpYOZ4N$?tDPEBlKS<1;N?126tvlr#zp#o3?>WgE$N0T z*;$|e=0ZpGUBZgG?_B)T#f6xO%!gc~+1Y7@h!4CYJg@Va$GaS6y_~RlDCCnZ3?Xm1 zE!sddhbWe;IAq1j0cE|~F}_(vmwrnKAOSz2FEowoOA!vAq$7fQXc&quqBo@H5*F$B zCG~%OO1^K&{rOzu2~Z!zIsTQ1*2zoj@(*Cr9$bI4IiKU_20r%-h}(I-v{GF_2EOJ` z@PBmUzvHzac>bBMDOgi9X9l*dlP|2S$?o-VsOYw+^(N=y<7m z8@5|%^ou<0NkTza+ugoSWyKq{u8%W;4wl0vU4UZWp;Ycej)8+mmH z+u?kjywg7%+AK?VzE1pFM%sX!(-@mG|KZ!-V%Vq~ z(11aI+`0jRNYUFpH4GMJm8(v;hLaqp?A8@aeON-|D3dBB(&1QS%-c?3+#ZT6TBA*J zZ`RNKYK!w9DTo`6vJ{>r#8`=z$)zB676FD92qub=tVl3qa4MAX(J6))pJEZbbhgqK z$<|QBxFxX~m(OMZhqa1iDGN1Q1GB4;0yG-AUkpD z7~M}`su}=k-{xm$+^MP$@B2T@%Vce$&Df3)N zl1&dnPoW<9<`vQADPgpblw^#7UzjO4Ww{c|5C{cQHY(E+BZq1&YWvDs86@eWkh*>L zBYk5f8Tbj6WM*Du7RDY&4`Ol#umN&(c*>dk6cVV*rLy69SImP~w5{r+t{~sm2 z6X({}!6iBSf7E+9m@!cBV^nBY%p1Qk`sXA)+yAJjBwn&|wQ~1xf#je0Ry8^yAwNgl zfHE{XqQZ<8$@9Z|ysF$0PDRFN6V~FAlE%CW?xW&gfd0czE+P6I$X-W-&ch}CqO0eS zuSDIMY!G2u`^ZsLm!`B9HyhT@I_ck;*fTn8f>iFw*KHo$V*Y%;!T%w(>Ywh&k1nzR z5x&7c3rDlfZXOK0IL3OmOnDupkeaKu?!boZk*C9PZZrW` zqeyYVV?Py!jefK!yUWPUy{{k2@Ro!dVbGg8Wt6WlKIna?GP-+e>T`V>96mzBywjgk`5n46$@2AERpz8O;wMi%BcQ#H zYuQ(g_0;1_S2NMX+xQmuX}*-U;#!j}wBXiPOxL=_d=eR*mygVB-_j-*cvis{8%Udr zC=~PQNh$mrzTd*l=+1v>EOkptGQZ~Z(UMu%aJomZA_e(;OuSm{AoE-!)mu}^_~ba& zf_y#_4{i~;OKe-B&8f2SHIOyu7mYyOdN%7uCmI)LEMU|i$y)|$hGucj#_R7a zrXfpq(Pu}$$eB^&HLHUDJ)kC{Mad`sUlq=Rzwf`cMWn0217GBP{T~|(Ga+@+1a*x8 zpDFO43H*q_PuL4CI0PZlRit!r(~}0#lB({*{AsH|f1y6r0H$JF!C_M zEg9R*-plRvgL^GFfn}@LM$yNOJ7r;PNGfc}T*yK~UxUg6mrxE;pC{6EKJ_flE#&fd zy?p3;gGuk^BO}0@GOMDh(qdg>Lz%ey*fg;rc&pH=%Cu zilUz-ik+2{Yy^^Ub`HR{c+5SDh{5Uk=1-Opjah^qxlvK7T5CZALu6ylF`qS3=Hy&7 z5x-5|4o<@+Kl|jCe3(e?4JeTckmZ;1rMps9-=J9>{1QKxm4@4V2Wq+&zmsDu*Y*66 z*O~m*V8v}0@owWQy%Ac(QH68wJFu14`Y^#ryr~!~x6;q4;{_*9y$Xp#R=QLzZg=%*Ya$S3Ia4rD*BUihdtX51Z z15@3jS88wKFN6k8!Vq;t&!mgS=`Y3!_9Ca|SwUBV>mD9^M&R zCoqgt*+XD&RpSN?n*ww-CB?B3sne``Y!QFwp!jPvLP$s|*playC78`l%r0@_B_P_% zv&j~y-bzLCIAs#Po!>DkaHJ}(dW+;md`_%;e_8A-pc(~t{oBeU=J{e`TaN&qpYi!| zH$qES$;m{VbH7^=(U4uM;<2->BI~MVRJIn*qI&y8XkWfrwOt|7>J1{-e~E3EV@o zZV{E9MCNrTdO`(}%F&Mm0nL&Jx6z+&lxkR`z9pIm+T--<5fvM=&~R;;Svq|Aaa1el zV*v51tRLDT;|ToEZbMjhr(To1np+J_a0W6tykrpLZO1Nzi(~i3W}EA4pAd!VarR3DAU;a8e3N;i0mud4Z-CSQjO z4Uwh2Ns+e`X3e_QoJn4GNBO)lG&q6SkbS@clX$t4VDNv$guM^^mvpX!QyJ!5N8?qH zz7_RlEQup!BjnU2u}H-&`|#5!=Vra&lTFz-TxPUo!L6OF{G8L*wbBf8%fF=`VvhI- z+wQ6}u3OMbmD5x!^LX-Bp6}_(ne3MyM$CxOt@*lzM2B2sFlQWKEc{HK_s0&C-r}-% zLa==DKdDy>0{izUaeI>f)0r9oxZn8>XBCAml9`c#)+_Z95yHAx^h7fs$pPJ$R&%&_Q@{NUqrOp+%v*zMd{+1@UmRWt8V#Hr>BHe@6hl$uDBH>y`JD1)HA{&_km$W(wW@ z!KRZNB{1)idY@eu59fJM0p9%XUo%<8g++2wol{wbL{!&S#(1Od zWv_fbKAn+5YSc?;X}3ns;*>*?K49hCdwdpO%-1cd&ZN$i&nWzZ)wQvZB-vG~1b8O^ zrqfmNI+w4>4QQxH7QLa%{RXuwgQ$DvrJ&+(#?n5;m+ zks&^-5I)F2X94SY;dNVH>aFww8Gd3F)IjI0P}oZAl-pv^@C(XxH1Ag=gEq1u>{B!% z9e#dI?f61ZB+Mbi=;Xu!MjP4^hp)_B3MXhpT55ut+61V?laukavIh<;U_*gK#1d=O zF+Qa(n5$%h{bBl`Z*hx8bk`0~BRdWFS(e0sjXad(&9} literal 0 HcmV?d00001 diff --git a/site/static/docs/5.0/assets/img/examples/sidebars@2x.png b/site/static/docs/5.0/assets/img/examples/sidebars@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cb167e5351f6333e4c8ebc049e78d4cd089e489b GIT binary patch literal 33499 zcmaI6by!qi^f!8DhVBk&kVZg}?iQq5a%hkm8k877Km)@Sc1Ee&OSoF_N{0N|^qXwzYS(w6_2G z+qb#7g+#9G?eF*X5A<|*cmMAB)z#fUFu3yX-@w4Y;NZ~k@bJ#=-pJ^G$MDG5(D2CG z`uf<|*y!lk`1r)*addP%IXO8sHMPF6F+Dv!Gc&WXu{l05d3<~_IzBNwJG;Ms@Ycoc z)oTp}<<~F|Z&h`zteo8P$|_TH%elF^tE+2E8+&+YxTBMcwXMV1`8f*pu)V$WLP+%T z@@js5zM-l4DF@HV>A8rwG!OsF=-4>UXV2vnU!9zs1i?cW78WKZr<~o~r)Op_E-u9+ zWo_&oZ*Fd9X6Fu%PXt9JzZVo{=jIm_mDJWZo}8TC-`{)tzN@URJ-@gpDkCmW>D+X)3b}q>#yIE(lfI%9=n?V!`{((X=!P4 zYG!_ZVRLg+Qbs{sTHe?U8WtXzl#=G<>m*HA>!k=q~z4}%=(6=*|~WSFW;qQ zq>jGP^xS+(T86KG!12jRb6e-m-r)<^`)0)G^46_W{EjO8Uep`aKmXvCiOTPK2>5<4 zABf88L`nIhVrx;%f~M>;{>*&phv#=4lMfZ$x0QV;vp7^r3raH_HM9Bf(*0gH3Kdm_ zvPnRB=b#)@P~)p8%de==Qq=F6`}!eN^C+sg=V9jrwRV8|+K4iWLGfA5UfetkEE?tbiXPJKA4E>zMzz6 zBeGC>Ss(9jCCL!wX{RprvO2`LCq~~>UuL8_(Nl>r#YQSMBDl_1dLd7#BIVnkKTBcS z9A+AdM_u|?llE1OebnR(EaZgr>@w`quEGiyuT6ZdeY2ja1oLUdyj>gQ0f68P6$M#6 zKhQ$rtj~8wGDTfE3>9(}j*=%X&S4`&QgnV6gKMaJn${S+Kg{+*IoMHFTXTK`scI>|raUs#o4==%b#AldfO$eH>H}i}~ zF2eIYLYVhZirsTe6DH@Gwr3|U(_Iyz7)!|OBO=p~+;L@j4X!H=D*50LNcX0T_Q(x7 ziaf^dxs<|@1#~%yXD-4lJpXqpOZN&69$hylX}mK3i@;V$tcs&BC=q3cF72Uo?T`BWp#*d-7kX32cE$nMxas|9-5aOu;F(doGKLs2U|> z@ALDb5TN%-eBL#?r#8@YgdTxI9Mv#n?cGP_6~Z~BHaqnsd|P9FhT!)OH-;IsYwV3l zCN_x=InP>vpAPg2EdOJnp+B10myPsE6T;->q|k8mLZkZZcNgbh8_!FvG0c!=@l?Vt zrOZ!!68$m;BMW;t1445DCBpnyjy;K6N6_uY);e575B7r5%)8qz-!nNof8VPsA8+ac zTiX_PdEUl<;N}kqiRC7c2p^9}=RIP2t!7?-4vtna+s|K3c+y*F;vJ%BS85b*f^80s ztRF12=u1-Cl`3@KEi> zVD4!19_S5@SolLo5+h1APP*8%tq9U)#3c~xXKdi0BEtQI_m;wlNuA$kK|+{IX|Sg} zc&AlY0ft*?G<=+{nk_yQ>4{m1mmaITGP<>tI6pR}gP8UJiKovxS0q^zresYy6Q1^+ zTZ67>7R z+}oFLW)6Ii0Uk^nOYgkAqrC_h#t$rRjhE)wy?({bVw?hmxkiaCWW-?=x_%2KZ5QYF zO71CVfhGTpfCCvObw(ns#(6CVss_&wUJ?K$#`6e}XbRAYPTayJx+egrI(R!m=QR_wecU%}X>e@~Dy6t(p@`iY|O zut5NJVc_4);NZ4KYUlUyV^&BbN5Mq#XMCh8juHLFF~D

f5HVxz4V|fvw}*7c_}7 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 literal 0 HcmV?d00001 diff --git a/site/static/docs/5.0/assets/img/examples/sign-in.png b/site/static/docs/5.0/assets/img/examples/sign-in.png index e5a88b60248f4cb3cc0df2aeb189e65b48d9eddb..8d57f561ca21ea6cb94e59d68c981810018de3e7 100644 GIT binary patch delta 2131 zcmV-Z2(0(T6PFQ?B!Bu)OjJen_4V-W^}?L?u6_5aefFn(^}wd}r)&6!HTi`!_=7a~ zfi(AjH1~cq_IxzBi^>sA$b2IdnY4nRe_;EAzbvpBLGxKmW^L0G)^7HkE zN$uj)`rgj^#jNyzNA7Ji^YHQY-_rH|{{OU<>z;P$rGM<^*njzPH0^6M^5WX`!k+g1 z`~Hz(>2)&kax(Am=lpg)>$95k`}h8uaOZzU>xWeA*2DE|GVN(I@o_)#;MVnmN$dIZ z{_W!X>D~C1Z{}$;@@F#fWis&3w)TTL_m5-baX96PTP7-u0bu^p0cm zievJJWAT@I@#f<6ySu%#wYI&!zvt)Y+1lFU+ft*?)flYxVVPEu8jj*xqPfnQ=|(9qH0;o@9h zVuy;0@bK`&#m401m^rEDtuduRnb$6ekqL`YT z^78ZU?tkuyi;bkFr>m^4=jiCaz`@SW(8$Tk?C$UJ@$&!w|LySc@$>YRmzbTOps}*E z-QC^6!o#(-x2LG8mzkT`+1t?4)bH@~`uh9$`ugGGFLzf*3i+?_xJa$ zudt1ek;2;cxYhQ!*7o%D^+TEX0CxEwhWSF8`+tGF{9LE|1bF$J%Kc%g`!$mK3VZoJ zm-9v!vbVdny1lr(!NbSN z#w5zjz{JOgQD+4J00me{L_t(|0qnp50RRvT05CY{Ul=vm(yx<210|DC0|b9^saHg_ zqv!M%#$1~ndoYp!2E#C%8?SBKwr$(q{%g2@4^3pgr-Zz*P$&{hq%yfesZyyK@I~|A zSEf)ZRazb64FXeNsf_y40@fRhj4NQG1uQmOEEcQHuF~rb4kzOYxM+ixnB5+)&uZOo2|BsaRWMC3M{Ksd;Pw*HV77rt>I|Q_yH4%R4%JbXL>`wHZL|?!v*6Bls`Wl zm8my3Sk?x`)v�Jb^DM{a|JNe!nHZ*{)jcos)3|_Vj}lKOD(V-xGi14FW4wDlPqR z1nB_YaTgfQ%Fh=x^)0Tb@9x6*0@vI5e7@iB5AuAz-WU-800000008)A-!2vtM*uL6 zfA6u^z3yWbPm4pnXeNOw9tKHpC&gjh`&8?0w@R4r7rp=EVjMdrGb~p8E1Mm^a|j?K z+TC-y+#dWZuMfZT2Vj3h6a@C&9^v5d$aj2lYCAp)IZnb6KsY#w#;oyU@tO4OL;YoD&=YrWV}PP47Vq! zs+y@*FTixr2scy}XqJvkMLCGpbt#AR&w-;zgN!B!!0k~)Q>K6IR0?}Z=|C!a!$7^$ z6^qZ0BS{7}wh(}x1$%oDB9d@Cr``1HZWk zw;&#(iGhiMiGjBq12gb)`C9)QD+6y);3+z4xjcWXhN^$3!{s`q%I{1JyhVX44O{$u zH{x~*jZMArq4QDvPGjIL3asia&*iGq*N&2(hA}0#=$6b3%!@1rX5jxq3``763{1EB zJs9DspzIU-0i1}4h+3^NwikWC=W(moKDPs?Rso<2bbnj z%`e4w^Y(w;Y~{Jzm=q);cbV=N31sxZiA>!a5xw@=`>xjNtn1m!ur^O2j(DRe4Pji= z0-9sHut=GrpWcp-mgZE`Dp(^?`CZR}D1?u`c^>rD`+@zsAYd4Xp)h<}=HJLLxiT|@ zhOvWk`#uZ*K>`2(0B}gB%XM_OyMVQL&;%X=)`EX&0xST50fAwbz*1qA{?y$CMqo`R z!?X;WO^3*2*WOoP1SZe7{UB7LI7-M*Gk;%!5!gyd_r1J`+)Ta$Tfx2pBQTYPtnw<( z%sin=YAyoraEcBKW9BIuuqFWlLroK?#ackqcH`?`?Z~x3MNt$0u(K{w--z z-R6J0`?CRPk)%uj00000006(;-AVjm)Eke@cxbgd-PG$h26qv|(dGCppLQqs{l?vg zNkp0sk0$+kbS~?cF>BV_`J8lu-*3A1HHpjd-EjG_UvI6hzHZI>>2Z`#bb>#i**uEW ztY7ZM%1NqXWA7uMSPcLG0000000000005Is0~wQ00|pm>Z)E#zB5wL{h0y>2002ov JPDHLkV1h`BPmhZ6gD0QlC<_1Vt%iva!4 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 diff --git a/site/static/docs/5.0/assets/img/examples/sign-in@2x.png b/site/static/docs/5.0/assets/img/examples/sign-in@2x.png index f876ed3dd06baf6d375dcf617de006a1cf8d224a..477335984d853dca8f1d1b99d9ea3e7e62d11363 100644 GIT binary patch literal 4568 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 diff --git a/site/static/docs/5.0/assets/img/examples/starter-template.png b/site/static/docs/5.0/assets/img/examples/starter-template.png index 0cbcaa1eb01a818eaf1813141bc723f5bc90fd25..d4b20217acc650226c4128ffcad6f485e4848ed0 100644 GIT binary patch literal 7753 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 UQaQe@*ZxCutV?UuMpWWB>pF literal 9761 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 diff --git a/site/static/docs/5.0/assets/img/examples/starter-template@2x.png b/site/static/docs/5.0/assets/img/examples/starter-template@2x.png index 436c452de1aaa732d146cb002c05ac64acf0f2c6..9323837caae20a82cec3bde12b082f0be990e1a4 100644 GIT binary patch literal 20134 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 aP`FE>48c<=veRFYGdZFpxI`o92Xp{K(D diff --git a/site/static/docs/5.0/assets/img/examples/sticky-footer-navbar.png b/site/static/docs/5.0/assets/img/examples/sticky-footer-navbar.png index f64d666387e52cee3d89941f87a7f57fdf8656c4..cc88cfb2db0ccc2ee9a52e8bdf9efc143ae06220 100644 GIT binary patch literal 6979 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 literal 14167 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 H9Q?lk6!&1_ From d9da43f3cc9daaa6050685687416f3abd3ee25eb Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Mon, 22 Mar 2021 23:02:10 +0200 Subject: [PATCH 26/38] .browserslistrc: remove Android and make Safari/iOS 12 the minimum (#33399) --- .browserslistrc | 5 ++--- .bundlewatch.config.json | 12 ++++++------ js/tests/browsers.js | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.browserslistrc b/.browserslistrc index cc24a06a0505..c71c8b9c717b 100644 --- a/.browserslistrc +++ b/.browserslistrc @@ -6,7 +6,6 @@ not dead Chrome >= 60 Firefox >= 60 Firefox ESR -iOS >= 10 -Safari >= 10 -Android >= 6 +iOS >= 12 +Safari >= 12 not Explorer <= 11 diff --git a/.bundlewatch.config.json b/.bundlewatch.config.json index 58de657940b2..32826198c3bb 100644 --- a/.bundlewatch.config.json +++ b/.bundlewatch.config.json @@ -34,27 +34,27 @@ }, { "path": "./dist/js/bootstrap.bundle.js", - "maxSize": "43 kB" + "maxSize": "41 kB" }, { "path": "./dist/js/bootstrap.bundle.min.js", - "maxSize": "22.75 kB" + "maxSize": "22 kB" }, { "path": "./dist/js/bootstrap.esm.js", - "maxSize": "28.5 kB" + "maxSize": "27 kB" }, { "path": "./dist/js/bootstrap.esm.min.js", - "maxSize": "19 kB" + "maxSize": "18 kB" }, { "path": "./dist/js/bootstrap.js", - "maxSize": "29 kB" + "maxSize": "27 kB" }, { "path": "./dist/js/bootstrap.min.js", - "maxSize": "16.5 kB" + "maxSize": "15.75 kB" } ], "ci": { diff --git a/js/tests/browsers.js b/js/tests/browsers.js index 00ad77ad7411..b8e47a364f01 100644 --- a/js/tests/browsers.js +++ b/js/tests/browsers.js @@ -40,7 +40,7 @@ const browsers = { iphone7: { base: 'BrowserStack', os: 'ios', - os_version: '10.0', + os_version: '12.0', device: 'iPhone 7', real_mobile: true }, From 1c02ef4f971afe5df75d4e1889435f3edd9f2bbd Mon Sep 17 00:00:00 2001 From: GeoSot Date: Tue, 23 Mar 2021 08:22:59 +0200 Subject: [PATCH 27/38] Allow offcanvas to be initialized in open state (#33382) * Update docs to use new .show behavior and clarify some copy for first example Co-authored-by: Mark Otto Co-authored-by: XhmikosR --- js/src/offcanvas.js | 10 +- js/tests/unit/offcanvas.spec.js | 138 +++++++++++++++++- site/assets/scss/_component-examples.scss | 3 - site/content/docs/5.0/components/offcanvas.md | 6 +- 4 files changed, 142 insertions(+), 15 deletions(-) diff --git a/js/src/offcanvas.js b/js/src/offcanvas.js index 4b98565e2ce0..1824b3e3b49c 100644 --- a/js/src/offcanvas.js +++ b/js/src/offcanvas.js @@ -31,6 +31,7 @@ const NAME = 'offcanvas' const DATA_KEY = 'bs.offcanvas' const EVENT_KEY = `.${DATA_KEY}` const DATA_API_KEY = '.data-api' +const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}` const ESCAPE_KEY = 'Escape' const Default = { @@ -48,7 +49,8 @@ const DefaultType = { const CLASS_NAME_BACKDROP_BODY = 'offcanvas-backdrop' const CLASS_NAME_SHOW = 'show' const CLASS_NAME_TOGGLING = 'offcanvas-toggling' -const ACTIVE_SELECTOR = `.offcanvas.show, .${CLASS_NAME_TOGGLING}` +const OPEN_SELECTOR = '.offcanvas.show' +const ACTIVE_SELECTOR = `${OPEN_SELECTOR}, .${CLASS_NAME_TOGGLING}` const EVENT_SHOW = `show${EVENT_KEY}` const EVENT_SHOWN = `shown${EVENT_KEY}` @@ -72,7 +74,7 @@ class Offcanvas extends BaseComponent { super(element) this._config = this._getConfig(config) - this._isShown = element.classList.contains(CLASS_NAME_SHOW) + this._isShown = false this._addEventListeners() } @@ -262,6 +264,10 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function ( data.toggle(this) }) +EventHandler.on(window, EVENT_LOAD_DATA_API, () => { + SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY) || new Offcanvas(el)).show()) +}) + /** * ------------------------------------------------------------------------ * jQuery diff --git a/js/tests/unit/offcanvas.spec.js b/js/tests/unit/offcanvas.spec.js index 4fb6c17ecb9c..0122d4dff33c 100644 --- a/js/tests/unit/offcanvas.spec.js +++ b/js/tests/unit/offcanvas.spec.js @@ -145,6 +145,44 @@ describe('Offcanvas', () => { expect(offCanvas._config.scroll).toEqual(false) }) }) + describe('options', () => { + it('if scroll is enabled, should allow body to scroll while offcanvas is open', done => { + fixtureEl.innerHTML = '

' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { scroll: true }) + const initialOverFlow = document.body.style.overflow + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(document.body.style.overflow).toEqual(initialOverFlow) + + offCanvas.hide() + }) + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(document.body.style.overflow).toEqual(initialOverFlow) + done() + }) + offCanvas.show() + }) + + it('if scroll is disabled, should not allow body to scroll while offcanvas is open', done => { + fixtureEl.innerHTML = '
' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { scroll: false }) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(document.body.style.overflow).toEqual('hidden') + + offCanvas.hide() + }) + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(document.body.style.overflow).toEqual('auto') + done() + }) + offCanvas.show() + }) + }) describe('toggle', () => { it('should call show method if show class is not present', () => { @@ -161,10 +199,12 @@ describe('Offcanvas', () => { }) it('should call hide method if show class is present', () => { - fixtureEl.innerHTML = '
' + fixtureEl.innerHTML = '
' - const offCanvasEl = fixtureEl.querySelector('.show') + const offCanvasEl = fixtureEl.querySelector('.offcanvas') const offCanvas = new Offcanvas(offCanvasEl) + offCanvas.show() + expect(offCanvasEl.classList.contains('show')).toBe(true) spyOn(offCanvas, 'hide') @@ -178,11 +218,13 @@ describe('Offcanvas', () => { it('should do nothing if already shown', () => { fixtureEl.innerHTML = '
' - spyOn(EventHandler, 'trigger') - const offCanvasEl = fixtureEl.querySelector('div') const offCanvas = new Offcanvas(offCanvasEl) + offCanvas.show() + expect(offCanvasEl.classList.contains('show')).toBe(true) + + spyOn(EventHandler, 'trigger').and.callThrough() offCanvas.show() expect(EventHandler.trigger).not.toHaveBeenCalled() @@ -226,13 +268,30 @@ describe('Offcanvas', () => { offCanvas.show() }) + + it('on window load, should make visible an offcanvas element, if its markup contains class "show"', done => { + fixtureEl.innerHTML = '
' + + const offCanvasEl = fixtureEl.querySelector('div') + spyOn(Offcanvas.prototype, 'show').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + done() + }) + + window.dispatchEvent(createEvent('load')) + + const instance = Offcanvas.getInstance(offCanvasEl) + expect(instance).not.toBeNull() + expect(Offcanvas.prototype.show).toHaveBeenCalled() + }) }) describe('hide', () => { it('should do nothing if already shown', () => { fixtureEl.innerHTML = '
' - spyOn(EventHandler, 'trigger') + spyOn(EventHandler, 'trigger').and.callThrough() const offCanvasEl = fixtureEl.querySelector('div') const offCanvas = new Offcanvas(offCanvasEl) @@ -243,10 +302,11 @@ describe('Offcanvas', () => { }) it('should hide a shown element', done => { - fixtureEl.innerHTML = '
' + fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('div') const offCanvas = new Offcanvas(offCanvasEl) + offCanvas.show() offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { expect(offCanvasEl.classList.contains('show')).toEqual(false) @@ -257,10 +317,11 @@ describe('Offcanvas', () => { }) it('should not fire hidden when hide is prevented', done => { - fixtureEl.innerHTML = '
' + fixtureEl.innerHTML = '
' const offCanvasEl = fixtureEl.querySelector('div') const offCanvas = new Offcanvas(offCanvasEl) + offCanvas.show() const expectEnd = () => { setTimeout(() => { @@ -315,6 +376,52 @@ describe('Offcanvas', () => { expect(Offcanvas.prototype.toggle).not.toHaveBeenCalled() }) + + it('should not call toggle if another offcanvas is open', done => { + fixtureEl.innerHTML = [ + '', + '
', + '
' + ].join('') + + const trigger2 = fixtureEl.querySelector('#btn2') + const offcanvasEl1 = document.querySelector('#offcanvas1') + const offcanvasEl2 = document.querySelector('#offcanvas2') + const offcanvas1 = new Offcanvas(offcanvasEl1) + + offcanvasEl1.addEventListener('shown.bs.offcanvas', () => { + trigger2.click() + }) + offcanvasEl1.addEventListener('hidden.bs.offcanvas', () => { + expect(Offcanvas.getInstance(offcanvasEl2)).toEqual(null) + done() + }) + offcanvas1.show() + }) + + it('should focus on trigger element after closing offcanvas', done => { + fixtureEl.innerHTML = [ + '', + '
' + ].join('') + + const trigger = fixtureEl.querySelector('#btn') + const offcanvasEl = fixtureEl.querySelector('#offcanvas') + const offcanvas = new Offcanvas(offcanvasEl) + spyOn(trigger, 'focus') + + offcanvasEl.addEventListener('shown.bs.offcanvas', () => { + offcanvas.hide() + }) + offcanvasEl.addEventListener('hidden.bs.offcanvas', () => { + setTimeout(() => { + expect(trigger.focus).toHaveBeenCalled() + done() + }, 5) + }) + + trigger.click() + }) }) describe('jQueryInterface', () => { @@ -432,6 +539,23 @@ describe('Offcanvas', () => { jQueryMock.fn.offcanvas.call(jQueryMock, 'show') expect(Offcanvas.prototype.show).toHaveBeenCalled() }) + + it('should create a offcanvas with given config', () => { + fixtureEl.innerHTML = '
' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.offcanvas.call(jQueryMock, { scroll: true }) + spyOn(Offcanvas.prototype, 'constructor') + expect(Offcanvas.prototype.constructor).not.toHaveBeenCalledWith(div, { scroll: true }) + + const offcanvas = Offcanvas.getInstance(div) + expect(offcanvas).toBeDefined() + expect(offcanvas._config.scroll).toBe(true) + }) }) describe('getInstance', () => { diff --git a/site/assets/scss/_component-examples.scss b/site/assets/scss/_component-examples.scss index 91b5bbfd3e9a..534f2307d15c 100644 --- a/site/assets/scss/_component-examples.scss +++ b/site/assets/scss/_component-examples.scss @@ -206,10 +206,7 @@ .offcanvas { position: static; - display: block; height: 200px; - visibility: visible; - transform: translateX(0); } } diff --git a/site/content/docs/5.0/components/offcanvas.md b/site/content/docs/5.0/components/offcanvas.md index 347242bb9351..0e4aa1aa03a9 100644 --- a/site/content/docs/5.0/components/offcanvas.md +++ b/site/content/docs/5.0/components/offcanvas.md @@ -25,10 +25,10 @@ Offcanvas is a sidebar component that can be toggled via JavaScript to appear fr ### Offcanvas components -Below is a _static_ offcanvas example (meaning its `position`, `display`, and `visibility` have been overridden). Offcanvas includes support for a header with a close button and an optional body class for some initial `padding`. We suggest that you include offcanvas headers with dismiss actions whenever possible, or provide an explicit dismiss action. +Below is an offcanvas example that is shown by default (via `.show` on `.offcanvas`). Offcanvas includes support for a header with a close button and an optional body class for some initial `padding`. We suggest that you include offcanvas headers with dismiss actions whenever possible, or provide an explicit dismiss action. -{{< example class="bd-example-offcanvas p-0 bg-light" >}} -
+{{< example class="bd-example-offcanvas p-0 bg-light overflow-hidden" >}} +
Offcanvas
From b2deaa997e8062974ccbaacc4479831f1ce982a7 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Mon, 22 Mar 2021 23:27:15 -0700 Subject: [PATCH 28/38] Add link to new Parcel guide in starter template (#33430) Co-authored-by: XhmikosR --- site/content/docs/5.0/examples/starter-template/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/site/content/docs/5.0/examples/starter-template/index.html b/site/content/docs/5.0/examples/starter-template/index.html index 7dca38523245..fdd233b7c3a7 100644 --- a/site/content/docs/5.0/examples/starter-template/index.html +++ b/site/content/docs/5.0/examples/starter-template/index.html @@ -38,6 +38,7 @@

Guides

From 7c67a9a64d8a970f3894a7a272887c17426cf2f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 14:53:26 +0200 Subject: [PATCH 29/38] Bump clean-css-cli from 5.2.1 to 5.2.2 (#33433) Bumps [clean-css-cli](https://github.com/jakubpawlowicz/clean-css-cli) from 5.2.1 to 5.2.2. - [Release notes](https://github.com/jakubpawlowicz/clean-css-cli/releases) - [Changelog](https://github.com/jakubpawlowicz/clean-css-cli/blob/master/History.md) - [Commits](https://github.com/jakubpawlowicz/clean-css-cli/compare/v5.2.1...v5.2.2) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index d34b996741b5..7ff2786a111c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2646,9 +2646,9 @@ } }, "clean-css": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.1.tgz", - "integrity": "sha512-GQ6HdEyJN0543mRTA/TkZ7RPoMXGWKq1shs9H86F2kLuixR0RI+xd4JfhJxWUW08FGKQXTKAKpVjKQXu5zkFNA==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.2.tgz", + "integrity": "sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -2663,20 +2663,20 @@ } }, "clean-css-cli": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.2.1.tgz", - "integrity": "sha512-y+nSP8lcBWXWHqBVK1o1UQjUR/s1Xu3H7rSXtp4R03orU8gGCkmYZjwhALMww6E6JChjoshpLodV+VfjAufaHw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-5.2.2.tgz", + "integrity": "sha512-XlgBVTpEAsU/aT7gxAZ/g5Q8P9glHZeg6yfNvE7hYuvoozMdw5Wd46b12QtzuDVs8/7UZ/GCulS0VR9TI5NWRg==", "dev": true, "requires": { - "clean-css": "^5.1.1", + "clean-css": "^5.1.2", "commander": "7.x", "glob": "^7.1.6" }, "dependencies": { "commander": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", - "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true } } diff --git a/package.json b/package.json index a343828e0987..019115d3ea5b 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "@rollup/plugin-replace": "^2.4.1", "autoprefixer": "^10.2.5", "bundlewatch": "^0.3.2", - "clean-css-cli": "^5.2.1", + "clean-css-cli": "^5.2.2", "cross-env": "^7.0.3", "eslint": "^7.22.0", "eslint-config-xo": "^0.35.0", From a8276024b919b8ecff388c93289dae69adf0679b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 14:59:23 +0200 Subject: [PATCH 30/38] Bump rollup from 2.41.3 to 2.42.3 (#33432) Bumps [rollup](https://github.com/rollup/rollup) from 2.41.3 to 2.42.3. - [Release notes](https://github.com/rollup/rollup/releases) - [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md) - [Commits](https://github.com/rollup/rollup/compare/v2.41.3...v2.42.3) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ff2786a111c..a9f4fc69205d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8849,9 +8849,9 @@ } }, "rollup": { - "version": "2.41.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.41.3.tgz", - "integrity": "sha512-swrSUfX3UK7LGd5exBJNUC7kykdxemUTRuyO9hUFJsmQUsUovHcki9vl5MAWFbB6oI47HpeZHtbmuzdm1SRUZw==", + "version": "2.42.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.42.3.tgz", + "integrity": "sha512-JjaT9WaUS5vmjy6xUrnPOskjkQg2cN4WSACNCwbOvBz8VDmbiKVdmTFUoMPRqTud0tsex8Xy9/boLbDW9HKD1w==", "dev": true, "requires": { "fsevents": "~2.3.1" diff --git a/package.json b/package.json index 019115d3ea5b..90efde5bba59 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "npm-run-all": "^4.1.5", "postcss": "^8.2.8", "postcss-cli": "^8.3.1", - "rollup": "^2.41.3", + "rollup": "^2.42.3", "rollup-plugin-istanbul": "^3.0.0", "rtlcss": "^3.1.2", "sass": "^1.32.8", From 19fa62d51f7d62973955e46d5cca4be17071191e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 15:03:45 +0200 Subject: [PATCH 31/38] Bump globby from 11.0.2 to 11.0.3 (#33434) Bumps [globby](https://github.com/sindresorhus/globby) from 11.0.2 to 11.0.3. - [Release notes](https://github.com/sindresorhus/globby/releases) - [Commits](https://github.com/sindresorhus/globby/compare/v11.0.2...v11.0.3) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index a9f4fc69205d..492d6b74969e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4936,9 +4936,9 @@ "dev": true }, "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "dev": true, "requires": { "array-union": "^2.1.0", diff --git a/package.json b/package.json index 90efde5bba59..3ce684d60cf7 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "eslint-plugin-unicorn": "^28.0.2", "find-unused-sass-variables": "^3.1.0", "glob": "^7.1.6", - "globby": "^11.0.2", + "globby": "^11.0.3", "hammer-simulator": "0.0.1", "hugo-bin": "^0.69.0", "ip": "^1.1.5", From 296c3136aa369a22ff647af189fa47d00f25c760 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 15:08:42 +0200 Subject: [PATCH 32/38] Bump hugo-bin from 0.69.0 to 0.70.0 (#33436) Bumps [hugo-bin](https://github.com/fenneclab/hugo-bin) from 0.69.0 to 0.70.0. - [Release notes](https://github.com/fenneclab/hugo-bin/releases) - [Commits](https://github.com/fenneclab/hugo-bin/compare/v0.69.0...v0.70.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 492d6b74969e..a7a8de0cb7a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5218,9 +5218,9 @@ } }, "hugo-bin": { - "version": "0.69.0", - "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.69.0.tgz", - "integrity": "sha512-ufl89sX/PrNKo7gSkAoxlKynbELNt3OVYEEbTdhnsKpddec41a4MqRXv6KZnsQM82ApBzRHfdN0pVb07X6m/Wg==", + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/hugo-bin/-/hugo-bin-0.70.0.tgz", + "integrity": "sha512-6tioRXXugsdERwCcCwvBkdVI5ROClUG5/FVFzTIXzvgfu105ToZtmolnB3CTEvSy7cjKF/BpVGQ3hzLWyw0BaA==", "dev": true, "requires": { "bin-wrapper": "^4.1.0", diff --git a/package.json b/package.json index 3ce684d60cf7..235a91623075 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "glob": "^7.1.6", "globby": "^11.0.3", "hammer-simulator": "0.0.1", - "hugo-bin": "^0.69.0", + "hugo-bin": "^0.70.0", "ip": "^1.1.5", "jquery": "^3.6.0", "karma": "^6.2.0", From b455390f475c206bb0c9ae3fb05b1d4374cdabdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 13:18:36 +0000 Subject: [PATCH 33/38] Bump @babel/preset-env from 7.13.10 to 7.13.12 (#33438) --- package-lock.json | 59 +++++++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index a7a8de0cb7a2..5b9ff1446234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -188,9 +188,9 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.10.tgz", - "integrity": "sha512-YV7r2YxdTUaw84EwNkyrRke/TJHR/UXGiyvACRqvdVJ2/syV2rQuJNnaRLSuYiop8cMRXOgseTGoJCWX0q2fFg==", + "version": "7.13.11", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", "dev": true, "requires": { "@babel/helper-function-name": "^7.12.13", @@ -440,6 +440,17 @@ "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==", "dev": true }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, "@babel/plugin-proposal-async-generator-functions": { "version": "7.13.8", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", @@ -545,9 +556,9 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", - "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.13.0", @@ -996,15 +1007,16 @@ } }, "@babel/preset-env": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", - "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", + "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", + "@babel/compat-data": "^7.13.12", "@babel/helper-compilation-targets": "^7.13.10", "@babel/helper-plugin-utils": "^7.13.0", "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", "@babel/plugin-proposal-async-generator-functions": "^7.13.8", "@babel/plugin-proposal-class-properties": "^7.13.0", "@babel/plugin-proposal-dynamic-import": "^7.13.8", @@ -1015,7 +1027,7 @@ "@babel/plugin-proposal-numeric-separator": "^7.12.13", "@babel/plugin-proposal-object-rest-spread": "^7.13.8", "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", "@babel/plugin-proposal-private-methods": "^7.13.0", "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", "@babel/plugin-syntax-async-generators": "^7.8.4", @@ -1063,7 +1075,7 @@ "@babel/plugin-transform-unicode-escapes": "^7.12.13", "@babel/plugin-transform-unicode-regex": "^7.12.13", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.0", + "@babel/types": "^7.13.12", "babel-plugin-polyfill-corejs2": "^0.1.4", "babel-plugin-polyfill-corejs3": "^0.1.3", "babel-plugin-polyfill-regenerator": "^0.1.2", @@ -1071,6 +1083,23 @@ "semver": "^6.3.0" }, "dependencies": { + "@babel/compat-data": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "dev": true + }, + "@babel/types": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -8699,9 +8728,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.8.tgz", + "integrity": "sha512-3weFrFQREJhJ2PW+iCGaG6TenyzNSZgsBKZ/oEf6Trme31COSeIWhHw9O6FPkuXktfx+b6Hf/5e6dKPHaROq2g==", "dev": true, "requires": { "jsesc": "~0.5.0" diff --git a/package.json b/package.json index 235a91623075..4f2ef20c2aba 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "devDependencies": { "@babel/cli": "^7.13.10", "@babel/core": "^7.13.10", - "@babel/preset-env": "^7.13.10", + "@babel/preset-env": "^7.13.12", "@popperjs/core": "^2.9.1", "@rollup/plugin-babel": "^5.3.0", "@rollup/plugin-commonjs": "^17.1.0", From 9667438c1e8544b829b08c68d4ce1f36305297c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Mar 2021 15:27:46 +0200 Subject: [PATCH 34/38] Bump eslint-plugin-unicorn from 28.0.2 to 29.0.0 (#33435) * Bump eslint-plugin-unicorn from 28.0.2 to 29.0.0 Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 28.0.2 to 29.0.0. - [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases) - [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v28.0.2...v29.0.0) Signed-off-by: dependabot[bot] * Fix lint failure Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: XhmikosR --- js/src/carousel.js | 8 +++----- package-lock.json | 30 ++++++++++++++++++------------ package.json | 2 +- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/js/src/carousel.js b/js/src/carousel.js index b14cbd1a23fd..fe53d583a97e 100644 --- a/js/src/carousel.js +++ b/js/src/carousel.js @@ -284,11 +284,9 @@ class Carousel extends BaseComponent { const move = event => { // ensure swiping with one touch and not pinching - if (event.touches && event.touches.length > 1) { - this.touchDeltaX = 0 - } else { - this.touchDeltaX = event.touches[0].clientX - this.touchStartX - } + this.touchDeltaX = event.touches && event.touches.length > 1 ? + 0 : + event.touches[0].clientX - this.touchStartX } const end = event => { diff --git a/package-lock.json b/package-lock.json index 5b9ff1446234..982df76160b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,9 +103,9 @@ } }, "@babel/eslint-parser": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.13.8.tgz", - "integrity": "sha512-XewKkiyukrGzMeqToXJQk6hjg2veI9SNQElGzAoAjKxYCLbgcVX4KA2WhoyqMon9N4RMdCZhNTJNOBcp9spsiw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.13.10.tgz", + "integrity": "sha512-/I1HQ3jGPhIpeBFeI3wO9WwWOnBYpuR0pX0KlkdGcRQAVX9prB/FCS2HBpL7BiFbzhny1YCiBH8MTZD2jJa7Hg==", "dev": true, "requires": { "eslint-scope": "5.1.0", @@ -3928,26 +3928,32 @@ } }, "eslint-plugin-unicorn": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-28.0.2.tgz", - "integrity": "sha512-k4AoFP7n8/oq6lBXkdc9Flid6vw2B8j7aXFCxgzJCyKvmaKrCUFb1TFPhG9eSJQFZowqmymMPRtl8oo9NKLUbw==", + "version": "29.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-29.0.0.tgz", + "integrity": "sha512-R9jGLKb2p6LuOixviByGlH2mkfY72EBELXAPeUufveebN0M2Woa7B7dUO3gN2xPn/+eGjrIm4I2u7dDtr9G4iA==", "dev": true, "requires": { - "ci-info": "^2.0.0", + "ci-info": "^3.1.1", "clean-regexp": "^1.0.0", - "eslint-template-visitor": "^2.2.2", + "eslint-template-visitor": "^2.3.2", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "import-modules": "^2.1.0", "lodash": "^4.17.20", "pluralize": "^8.0.0", "read-pkg-up": "^7.0.1", - "regexp-tree": "^0.1.22", + "regexp-tree": "^0.1.23", "reserved-words": "^0.1.2", "safe-regex": "^2.1.1", "semver": "^7.3.4" }, "dependencies": { + "ci-info": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.1.1.tgz", + "integrity": "sha512-kdRWLBIJwdsYJWYJFtAFFYxybguqeF91qpZaggjG5Nf8QKdizFG2hjqvaTXbxFIcYbSaD74KpAXv6BSm17DHEQ==", + "dev": true + }, "safe-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", @@ -3958,9 +3964,9 @@ } }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" diff --git a/package.json b/package.json index 4f2ef20c2aba..c1cdc87278a7 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "eslint": "^7.22.0", "eslint-config-xo": "^0.35.0", "eslint-plugin-import": "^2.22.1", - "eslint-plugin-unicorn": "^28.0.2", + "eslint-plugin-unicorn": "^29.0.0", "find-unused-sass-variables": "^3.1.0", "glob": "^7.1.6", "globby": "^11.0.3", From 16bc47da3c5296ee7d39b112831d557732fdda95 Mon Sep 17 00:00:00 2001 From: Casey Holzer Date: Wed, 6 Jan 2021 03:07:43 +0200 Subject: [PATCH 35/38] Allow data-toggle="dropdown" and form click events to bubble * remove stopPropagation from button click event * test for delegated click events * ensure button children can open menu * test to ensure clicking button opens the menu * check current element and parents * allow dropdown form click events to bubble --- js/src/dropdown.js | 31 +++++++++++++-------- js/tests/unit/dropdown.spec.js | 51 ++++++++++++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/js/src/dropdown.js b/js/src/dropdown.js index eeec9076d52a..ae1aacb6bf42 100644 --- a/js/src/dropdown.js +++ b/js/src/dropdown.js @@ -59,7 +59,6 @@ const CLASS_NAME_DROPSTART = 'dropstart' const CLASS_NAME_NAVBAR = 'navbar' const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]' -const SELECTOR_FORM_CHILD = '.dropdown form' const SELECTOR_MENU = '.dropdown-menu' const SELECTOR_NAVBAR_NAV = '.navbar-nav' const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' @@ -253,7 +252,6 @@ class Dropdown extends BaseComponent { _addEventListeners() { EventHandler.on(this._element, EVENT_CLICK, event => { event.preventDefault() - event.stopPropagation() this.toggle() }) } @@ -377,8 +375,14 @@ class Dropdown extends BaseComponent { } static clearMenus(event) { - if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) { - return + if (event) { + if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) { + return + } + + if (/input|select|textarea|form/i.test(event.target.tagName)) { + return + } } const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE) @@ -402,11 +406,16 @@ class Dropdown extends BaseComponent { continue } - if (event && ((event.type === 'click' && - /input|textarea/i.test(event.target.tagName)) || - (event.type === 'keyup' && event.key === TAB_KEY)) && - dropdownMenu.contains(event.target)) { - continue + if (event) { + // Don't close the menu if the clicked element or one of its parents is the dropdown button + if ([context._element].some(element => event.composedPath().includes(element))) { + continue + } + + // Tab navigation through the dropdown menu shouldn't close the menu + if (event.type === 'keyup' && event.key === TAB_KEY && dropdownMenu.contains(event.target)) { + continue + } } const hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE, relatedTarget) @@ -519,10 +528,8 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus) EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus) EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { event.preventDefault() - event.stopPropagation() - Dropdown.dropdownInterface(this, 'toggle') + Dropdown.dropdownInterface(this) }) -EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation()) /** * ------------------------------------------------------------------------ diff --git a/js/tests/unit/dropdown.spec.js b/js/tests/unit/dropdown.spec.js index d6fdaca5efbb..ad51d487bf12 100644 --- a/js/tests/unit/dropdown.spec.js +++ b/js/tests/unit/dropdown.spec.js @@ -1020,13 +1020,13 @@ describe('Dropdown', () => { showEventTriggered = true }) - btnDropdown.addEventListener('shown.bs.dropdown', e => { + btnDropdown.addEventListener('shown.bs.dropdown', e => setTimeout(() => { expect(btnDropdown.classList.contains('show')).toEqual(true) expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') expect(showEventTriggered).toEqual(true) expect(e.relatedTarget).toEqual(btnDropdown) document.body.click() - }) + })) btnDropdown.addEventListener('hide.bs.dropdown', () => { hideEventTriggered = true @@ -1783,4 +1783,51 @@ describe('Dropdown', () => { triggerDropdown.dispatchEvent(keydown) }) + + it('should allow `data-bs-toggle="dropdown"` click events to bubble up', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const clickListener = jasmine.createSpy('clickListener') + const delegatedClickListener = jasmine.createSpy('delegatedClickListener') + + btnDropdown.addEventListener('click', clickListener) + document.addEventListener('click', delegatedClickListener) + + btnDropdown.click() + + expect(clickListener).toHaveBeenCalled() + expect(delegatedClickListener).toHaveBeenCalled() + }) + + it('should open the dropdown when clicking the child element inside `data-bs-toggle="dropdown"`', done => { + fixtureEl.innerHTML = [ + '
', + ' ', + '
' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const childElement = fixtureEl.querySelector('#childElement') + + btnDropdown.addEventListener('shown.bs.dropdown', () => setTimeout(() => { + expect(btnDropdown.classList.contains('show')).toEqual(true) + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + done() + })) + + childElement.click() + }) }) From 69b9d638f814d152a24d312d0dc901866b4dc6a9 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 23 Mar 2021 18:18:54 +0200 Subject: [PATCH 36/38] offcanvas-navbar: add missing redirect (#33443) --- site/content/docs/5.0/examples/offcanvas-navbar/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/site/content/docs/5.0/examples/offcanvas-navbar/index.html b/site/content/docs/5.0/examples/offcanvas-navbar/index.html index 12bb91e07930..5d6b2f3d3ccf 100644 --- a/site/content/docs/5.0/examples/offcanvas-navbar/index.html +++ b/site/content/docs/5.0/examples/offcanvas-navbar/index.html @@ -6,6 +6,7 @@ extra_js: - src: "offcanvas.js" body_class: "bg-light" +aliases: "/docs/5.0/examples/offcanvas/" ---
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ce={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Se=function(t){function o(e,n){var i;if(void 0===ae)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(i=t.call(this,e)||this)._isEnabled=!0,i._timeout=0,i._hoverState="",i._activeTrigger={},i._popper=null,i.config=i._getConfig(n),i.tip=null,i._setListeners(),i}i(o,t);var r=o.prototype;return r.enable=function(){this._isEnabled=!0},r.disable=function(){this._isEnabled=!1},r.toggleEnabled=function(){this._isEnabled=!this._isEnabled},r.toggle=function(t){if(this._isEnabled)if(t){var e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},r.dispose=function(){clearTimeout(this._timeout),B.off(this._element,this.constructor.EVENT_KEY),B.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,t.prototype.dispose.call(this)},r.show=function(){var t=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var e=B.trigger(this._element,this.constructor.Event.SHOW),n=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this._element),i=null===n?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(!e.defaultPrevented&&i){var o=this.getTipElement(),r=s(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add("fade");var a="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);var c=this._getContainer();E(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||c.appendChild(o),B.trigger(this._element,this.constructor.Event.INSERTED),this._popper=se(this._element,o,this._getPopperConfig(l)),o.classList.add("show");var f,d,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;p&&(f=o.classList).add.apply(f,p.split(" ")),"ontouchstart"in document.documentElement&&(d=[]).concat.apply(d,document.body.children).forEach((function(t){B.on(t,"mouseover",(function(){}))}));var g=function(){var e=t._hoverState;t._hoverState=null,B.trigger(t._element,t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(this.tip.classList.contains("fade")){var m=u(this.tip);B.one(this.tip,"transitionend",g),h(this.tip,m)}else g()}}},r.hide=function(){var t=this;if(this._popper){var e=this.getTipElement(),n=function(){"show"!==t._hoverState&&e.parentNode&&e.parentNode.removeChild(e),t._cleanTipClass(),t._element.removeAttribute("aria-describedby"),B.trigger(t._element,t.constructor.Event.HIDDEN),t._popper&&(t._popper.destroy(),t._popper=null)};if(!B.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(e.classList.remove("show"),"ontouchstart"in document.documentElement&&(i=[]).concat.apply(i,document.body.children).forEach((function(t){return B.off(t,"mouseover",m)})),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var o=u(e);B.one(e,"transitionend",n),h(e,o)}else n();this._hoverState=""}}},r.update=function(){null!==this._popper&&this._popper.update()},r.isWithContent=function(){return Boolean(this.getTitle())},r.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},r.setContent=function(){var t=this.getTipElement();this.setElementContent(Y(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")},r.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&d(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=ke(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)},r.getTitle=function(){var t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t},r.updateAttachment=function(t){return"right"===t?"end":"left"===t?"start":t},r._initializeOnDelegatedTarget=function(t,e){var n=this.constructor.DATA_KEY;return(e=e||T(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),E(t.delegateTarget,n,e)),e},r._getOffset=function(){var t=this,e=this.config.offset;return"string"==typeof e?e.split(",").map((function(t){return Number.parseInt(t,10)})):"function"==typeof e?function(n){return e(n,t._element)}:e},r._getPopperConfig=function(t){var e=this,i={placement:t,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(t){return e._handlePopperPlacementChange(t)}}],onFirstUpdate:function(t){t.options.placement!==t.placement&&e._handlePopperPlacementChange(t)}};return n({},i,"function"==typeof this.config.popperConfig?this.config.popperConfig(i):this.config.popperConfig)},r._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))},r._getContainer=function(){return!1===this.config.container?document.body:d(this.config.container)?this.config.container:Y(this.config.container)},r._getAttachment=function(t){return De[t.toUpperCase()]},r._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)B.on(t._element,t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;B.on(t._element,n,t.config.selector,(function(e){return t._enter(e)})),B.on(t._element,i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t._element&&t.hide()},B.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=n({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},r._fixTitle=function(){var t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))},r._enter=function(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},r._leave=function(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},r._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},r._getConfig=function(t){var e=z.getDataAttributes(this._element);return Object.keys(e).forEach((function(t){Le.has(t)&&delete e[t]})),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=n({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),p("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=ke(t.template,t.allowList,t.sanitizeFn)),t},r._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},r._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Ae);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},r._handlePopperPlacementChange=function(t){var e=t.state;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))},o.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.tooltip"),n="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new o(this,n)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},e(o,null,[{key:"Default",get:function(){return xe}},{key:"NAME",get:function(){return"tooltip"}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return Ce}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Oe}}]),o}(H);y("tooltip",Se);var je=new RegExp("(^|\\s)bs-popover\\S+","g"),Ne=n({},Se.Default,{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),Pe=n({},Se.DefaultType,{content:"(string|element|function)"}),Ie={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Me=function(t){function n(){return t.apply(this,arguments)||this}i(n,t);var o=n.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.setContent=function(){var t=this.getTipElement();this.setElementContent(Y(".popover-header",t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(Y(".popover-body",t),e),t.classList.remove("fade","show")},o._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))},o._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},o._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(je);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},n.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.popover"),i="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new n(this,i),E(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},e(n,null,[{key:"Default",get:function(){return Ne}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Ie}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Pe}}]),n}(Se);y("popover",Me);var Be={offset:10,method:"auto",target:""},He={offset:"number",method:"string",target:"(string|element)"},Re=function(t){function o(e,n){var i;return(i=t.call(this,e)||this)._scrollElement="BODY"===e.tagName?window:e,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,B.on(i._scrollElement,"scroll.bs.scrollspy",(function(){return i._process()})),i.refresh(),i._process(),i}i(o,t);var r=o.prototype;return r.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),F(this._selector).map((function(t){var e=l(t),o=e?Y(e):null;if(o){var r=o.getBoundingClientRect();if(r.width||r.height)return[z[n](o).top+i,e]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},r.dispose=function(){t.prototype.dispose.call(this),B.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},r._getConfig=function(t){if("string"!=typeof(t=n({},Be,"object"==typeof t&&t?t:{})).target&&d(t.target)){var e=t.target.id;e||(e=s("scrollspy"),t.target.id=e),t.target="#"+e}return p("scrollspy",t,He),t},r._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},r._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},r._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},r._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";e=(e=F(o,i))[e.length-1]}var r=e?B.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(!(B.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==r&&r.defaultPrevented)){this._activate(this._element,i);var s=function(){B.trigger(e,"hidden.bs.tab",{relatedTarget:t._element}),B.trigger(t._element,"shown.bs.tab",{relatedTarget:e})};n?this._activate(n,n.parentNode,s):s()}}},o._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?q(e,".active"):F(":scope > li > .active",e))[0],r=n&&o&&o.classList.contains("fade"),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=u(o);o.classList.remove("show"),B.one(o,"transitionend",s),h(o,a)}else s()},o._transitionComplete=function(t,e,n){if(e){e.classList.remove("active");var i=Y(":scope > .dropdown-menu .active",e.parentNode);i&&i.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),v(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu")&&(t.closest(".dropdown")&&F(".dropdown-toggle").forEach((function(t){return t.classList.add("active")})),t.setAttribute("aria-expanded",!0)),n&&n()},n.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.tab")||new n(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},e(n,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),n}(H);B.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(T(this,"bs.tab")||new We(this)).show()})),y("tab",We);var Ke={animation:"boolean",autohide:"boolean",delay:"number"},Ue={animation:!0,autohide:!0,delay:5e3},ze=function(t){function o(e,n){var i;return(i=t.call(this,e)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}i(o,t);var r=o.prototype;return r.show=function(){var t=this;if(!B.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var e=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),B.trigger(t._element,"shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),v(this._element),this._element.classList.add("showing"),this._config.animation){var n=u(this._element);B.one(this._element,"transitionend",e),h(this._element,n)}else e()}},r.hide=function(){var t=this;if(this._element.classList.contains("show")&&!B.trigger(this._element,"hide.bs.toast").defaultPrevented){var e=function(){t._element.classList.add("hide"),B.trigger(t._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=u(this._element);B.one(this._element,"transitionend",e),h(this._element,n)}else e()}},r.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),B.off(this._element,"click.dismiss.bs.toast"),t.prototype.dispose.call(this),this._config=null},r._getConfig=function(t){return t=n({},Ue,z.getDataAttributes(this._element),"object"==typeof t&&t?t:{}),p("toast",t,this.constructor.DefaultType),t},r._setListeners=function(){var t=this;B.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',(function(){return t.hide()}))},r._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},o.jQueryInterface=function(t){return this.each((function(){var e=T(this,"bs.toast");if(e||(e=new o(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t](this)}}))},e(o,null,[{key:"DefaultType",get:function(){return Ke}},{key:"Default",get:function(){return Ue}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),o}(H);return y("toast",ze),{Alert:R,Button:W,Carousel:$,Collapse:J,Dropdown:ve,Modal:ye,Popover:Me,ScrollSpy:Re,Tab:We,Toast:ze,Tooltip:Se}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},e=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i="#"+i.split("#")[1]),e=i&&"#"!==i?i.trim():null}return e},i=t=>{const i=e(t);return i&&document.querySelector(i)?i:null},s=t=>{const i=e(t);return i?document.querySelector(i):null},n=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const s=Number.parseFloat(e),n=Number.parseFloat(i);return s||n?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0},o=t=>{t.dispatchEvent(new Event("transitionend"))},r=t=>(t[0]||t).nodeType,a=(t,e)=>{let i=!1;const s=e+5;t.addEventListener("transitionend",(function e(){i=!0,t.removeEventListener("transitionend",e)})),setTimeout(()=>{i||o(t)},s)},l=(t,e,i)=>{Object.keys(i).forEach(s=>{const n=i[s],o=e[s],a=o&&r(o)?"element":null==(l=o)?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();var l;if(!new RegExp(n).test(a))throw new TypeError(t.toUpperCase()+": "+`Option "${s}" provided type "${a}" `+`but expected type "${n}".`)})},c=t=>{if(!t)return!1;if(t.style&&t.parentNode&&t.parentNode.style){const e=getComputedStyle(t),i=getComputedStyle(t.parentNode);return"none"!==e.display&&"none"!==i.display&&"hidden"!==e.visibility}return!1},d=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),h=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?h(t.parentNode):null},f=()=>function(){},u=t=>t.offsetHeight,p=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},g=()=>"rtl"===document.documentElement.dir,m=(t,e)=>{var i;i=()=>{const i=p();if(i){const s=i.fn[t];i.fn[t]=e.jQueryInterface,i.fn[t].Constructor=e,i.fn[t].noConflict=()=>(i.fn[t]=s,e.jQueryInterface)}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",i):i()},_=new Map;var b={set(t,e,i){_.has(t)||_.set(t,new Map);const s=_.get(t);s.has(e)||0===s.size?s.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(t,e)=>_.has(t)&&_.get(t).get(e)||null,remove(t,e){if(!_.has(t))return;const i=_.get(t);i.delete(e),0===i.size&&_.delete(t)}};const v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,E={};let T=1;const A={mouseenter:"mouseover",mouseleave:"mouseout"},L=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${T++}`||t.uidEvent||T++}function k(t){const e=O(t);return t.uidEvent=e,E[e]=E[e]||{},E[e]}function D(t,e,i=null){const s=Object.keys(t);for(let n=0,o=s.length;n{!function(t,e,i,s){const n=e[i]||{};Object.keys(n).forEach(o=>{if(o.includes(s)){const s=n[o];S(t,e,i,s.originalHandler,s.delegationSelector)}})}(t,l,i,e.slice(1))});const d=l[r]||{};Object.keys(d).forEach(i=>{const s=i.replace(w,"");if(!a||e.includes(s)){const e=d[i];S(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,i){if("string"!=typeof e||!t)return null;const s=p(),n=e.replace(y,""),o=e!==n,r=L.has(n);let a,l=!0,c=!0,d=!1,h=null;return o&&s&&(a=s.Event(e,i),s(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),d=a.isDefaultPrevented()),r?(h=document.createEvent("HTMLEvents"),h.initEvent(n,l,!0)):h=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach(t=>{Object.defineProperty(h,t,{get:()=>i[t]})}),d&&h.preventDefault(),c&&t.dispatchEvent(h),h.defaultPrevented&&void 0!==a&&a.preventDefault(),h}};class j{constructor(t){(t="string"==typeof t?document.querySelector(t):t)&&(this._element=t,b.set(this._element,this.constructor.DATA_KEY,this))}dispose(){b.remove(this._element,this.constructor.DATA_KEY),this._element=null}static getInstance(t){return b.get(t,this.DATA_KEY)}static get VERSION(){return"5.0.0-beta3"}}class P extends j{static get DATA_KEY(){return"bs.alert"}close(t){const e=t?this._getRootElement(t):this._element,i=this._triggerCloseEvent(e);null===i||i.defaultPrevented||this._removeElement(e)}_getRootElement(t){return s(t)||t.closest(".alert")}_triggerCloseEvent(t){return N.trigger(t,"close.bs.alert")}_removeElement(t){if(t.classList.remove("show"),!t.classList.contains("fade"))return void this._destroyElement(t);const e=n(t);N.one(t,"transitionend",()=>this._destroyElement(t)),a(t,e)}_destroyElement(t){t.parentNode&&t.parentNode.removeChild(t),N.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.alert");e||(e=new P(this)),"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}N.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',P.handleDismiss(new P)),m("alert",P);class I extends j{static get DATA_KEY(){return"bs.button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.button");e||(e=new I(this)),"toggle"===t&&e[t]()}))}}function M(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function R(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}N.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');let i=b.get(e,"bs.button");i||(i=new I(e)),i.toggle()}),m("button",I);const B={setDataAttribute(t,e,i){t.setAttribute("data-bs-"+R(e),i)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+R(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(i=>{let s=i.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),e[s]=M(t.dataset[i])}),e},getDataAttribute:(t,e)=>M(t.getAttribute("data-bs-"+R(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},H={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const i=[];let s=t.parentNode;for(;s&&s.nodeType===Node.ELEMENT_NODE&&3!==s.nodeType;)s.matches(e)&&i.push(s),s=s.parentNode;return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]}},W={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},$="next",F="prev",z="left",K="right";class Y extends j{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=H.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return W}static get DATA_KEY(){return"bs.carousel"}next(){this._isSliding||this._slide($)}nextWhenVisible(){!document.hidden&&c(this._element)&&this.next()}prev(){this._isSliding||this._slide(F)}pause(t){t||(this._isPaused=!0),H.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(o(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=H.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const i=t>e?$:F;this._slide(i,this._items[t])}dispose(){N.off(this._element,".bs.carousel"),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null,super.dispose()}_getConfig(t){return t={...W,...t},l("carousel",t,U),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?K:z)}_addEventListeners(){this._config.keyboard&&N.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(N.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),N.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},i=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};H.find(".carousel-item img",this._element).forEach(t=>{N.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(N.on(this._element,"pointerdown.bs.carousel",e=>t(e)),N.on(this._element,"pointerup.bs.carousel",t=>i(t)),this._element.classList.add("pointer-event")):(N.on(this._element,"touchstart.bs.carousel",e=>t(e)),N.on(this._element,"touchmove.bs.carousel",t=>e(t)),N.on(this._element,"touchend.bs.carousel",t=>i(t)))}_keydown(t){/input|textarea/i.test(t.target.tagName)||("ArrowLeft"===t.key?(t.preventDefault(),this._slide(z)):"ArrowRight"===t.key&&(t.preventDefault(),this._slide(K)))}_getItemIndex(t){return this._items=t&&t.parentNode?H.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const i=t===$,s=t===F,n=this._getItemIndex(e),o=this._items.length-1;if((s&&0===n||i&&n===o)&&!this._config.wrap)return e;const r=(n+(s?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]}_triggerSlideEvent(t,e){const i=this._getItemIndex(t),s=this._getItemIndex(H.findOne(".active.carousel-item",this._element));return N.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:s,to:i})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=H.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const i=H.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{r.classList.remove(h,f),r.classList.add("active"),s.classList.remove("active",f,h),this._isSliding=!1,setTimeout(()=>{N.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:p,from:o,to:l})},0)}),a(s,t)}else s.classList.remove("active"),r.classList.add("active"),this._isSliding=!1,N.trigger(this._element,"slid.bs.carousel",{relatedTarget:r,direction:p,from:o,to:l});c&&this.cycle()}}_directionToOrder(t){return[K,z].includes(t)?g()?t===K?F:$:t===K?$:F:t}_orderToDirection(t){return[$,F].includes(t)?g()?t===$?z:K:t===$?K:z:t}static carouselInterface(t,e){let i=b.get(t,"bs.carousel"),s={...W,...B.getDataAttributes(t)};"object"==typeof e&&(s={...s,...e});const n="string"==typeof e?e:s.slide;if(i||(i=new Y(t,s)),"number"==typeof e)i.to(e);else if("string"==typeof n){if(void 0===i[n])throw new TypeError(`No method named "${n}"`);i[n]()}else s.interval&&s.ride&&(i.pause(),i.cycle())}static jQueryInterface(t){return this.each((function(){Y.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=s(this);if(!e||!e.classList.contains("carousel"))return;const i={...B.getDataAttributes(e),...B.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),Y.carouselInterface(e,i),n&&b.get(e,"bs.carousel").to(n),t.preventDefault()}}N.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",Y.dataApiClickHandler),N.on(window,"load.bs.carousel.data-api",()=>{const t=H.find('[data-bs-ride="carousel"]');for(let e=0,i=t.length;et===this._element);null!==n&&o.length&&(this._selector=n,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return q}static get DATA_KEY(){return"bs.collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=H.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const i=H.findOne(this._selector);if(t){const s=t.find(t=>i!==t);if(e=s?b.get(s,"bs.collapse"):null,e&&e._isTransitioning)return}if(N.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{i!==t&&X.collapseInterface(t,"hide"),e||b.set(t,"bs.collapse",null)});const s=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[s]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const o="scroll"+(s[0].toUpperCase()+s.slice(1)),r=n(this._element);N.one(this._element,"transitionend",()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[s]="",this.setTransitioning(!1),N.trigger(this._element,"shown.bs.collapse")}),a(this._element,r),this._element.style[s]=this._element[o]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(N.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",u(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),N.trigger(this._element,"hidden.bs.collapse")}),a(this._element,i)}setTransitioning(t){this._isTransitioning=t}dispose(){super.dispose(),this._config=null,this._parent=null,this._triggerArray=null,this._isTransitioning=null}_getConfig(t){return(t={...q,...t}).toggle=Boolean(t.toggle),l("collapse",t,V),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;r(t)?void 0===t.jquery&&void 0===t[0]||(t=t[0]):t=H.findOne(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return H.find(e,t).forEach(t=>{const e=s(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const i=t.classList.contains("show");e.forEach(t=>{i?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",i)})}static collapseInterface(t,e){let i=b.get(t,"bs.collapse");const s={...q,...B.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!i&&s.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(s.toggle=!1),i||(i=new X(t,s)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){X.collapseInterface(this,t)}))}}N.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=B.getDataAttributes(this),s=i(this);H.find(s).forEach(t=>{const i=b.get(t,"bs.collapse");let s;i?(null===i._parent&&"string"==typeof e.parent&&(i._config.parent=e.parent,i._parent=i._getParent()),s="toggle"):s=e,X.collapseInterface(t,s)})})),m("collapse",X);var Q="top",G="bottom",Z="right",J="left",tt=[Q,G,Z,J],et=tt.reduce((function(t,e){return t.concat([e+"-start",e+"-end"])}),[]),it=[].concat(tt,["auto"]).reduce((function(t,e){return t.concat([e,e+"-start",e+"-end"])}),[]),st=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function nt(t){return t?(t.nodeName||"").toLowerCase():null}function ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function rt(t){return t instanceof ot(t).Element||t instanceof Element}function at(t){return t instanceof ot(t).HTMLElement||t instanceof HTMLElement}function lt(t){return"undefined"!=typeof ShadowRoot&&(t instanceof ot(t).ShadowRoot||t instanceof ShadowRoot)}var ct={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},s=e.attributes[t]||{},n=e.elements[t];at(n)&&nt(n)&&(Object.assign(n.style,i),Object.keys(s).forEach((function(t){var e=s[t];!1===e?n.removeAttribute(t):n.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var s=e.elements[t],n=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});at(s)&&nt(s)&&(Object.assign(s.style,o),Object.keys(n).forEach((function(t){s.removeAttribute(t)})))}))}},requires:["computeStyles"]};function dt(t){return t.split("-")[0]}function ht(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function ft(t){var e=ht(t),i=t.offsetWidth,s=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-s)<=1&&(s=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:s}}function ut(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&<(i)){var s=e;do{if(s&&t.isSameNode(s))return!0;s=s.parentNode||s.host}while(s)}return!1}function pt(t){return ot(t).getComputedStyle(t)}function gt(t){return["table","td","th"].indexOf(nt(t))>=0}function mt(t){return((rt(t)?t.ownerDocument:t.document)||window.document).documentElement}function _t(t){return"html"===nt(t)?t:t.assignedSlot||t.parentNode||(lt(t)?t.host:null)||mt(t)}function bt(t){return at(t)&&"fixed"!==pt(t).position?t.offsetParent:null}function vt(t){for(var e=ot(t),i=bt(t);i&>(i)&&"static"===pt(i).position;)i=bt(i);return i&&("html"===nt(i)||"body"===nt(i)&&"static"===pt(i).position)?e:i||function(t){for(var e=-1!==navigator.userAgent.toLowerCase().indexOf("firefox"),i=_t(t);at(i)&&["html","body"].indexOf(nt(i))<0;){var s=pt(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||e&&"filter"===s.willChange||e&&s.filter&&"none"!==s.filter)return i;i=i.parentNode}return null}(t)||e}function yt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var wt=Math.max,Et=Math.min,Tt=Math.round;function At(t,e,i){return wt(t,Et(e,i))}function Lt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ot(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var kt={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,s=t.name,n=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=dt(i.placement),l=yt(a),c=[J,Z].indexOf(a)>=0?"height":"width";if(o&&r){var d=function(t,e){return Lt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ot(t,tt))}(n.padding,i),h=ft(o),f="y"===l?Q:J,u="y"===l?G:Z,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],m=vt(o),_=m?"y"===l?m.clientHeight||0:m.clientWidth||0:0,b=p/2-g/2,v=d[f],y=_-h[c]-d[u],w=_/2-h[c]/2+b,E=At(v,w,y),T=l;i.modifiersData[s]=((e={})[T]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,i=t.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=e.elements.popper.querySelector(s)))&&ut(e.elements.popper,s)&&(e.elements.arrow=s)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},Dt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function xt(t){var e,i=t.popper,s=t.popperRect,n=t.placement,o=t.offsets,r=t.position,a=t.gpuAcceleration,l=t.adaptive,c=t.roundOffsets,d=!0===c?function(t){var e=t.x,i=t.y,s=window.devicePixelRatio||1;return{x:Tt(Tt(e*s)/s)||0,y:Tt(Tt(i*s)/s)||0}}(o):"function"==typeof c?c(o):o,h=d.x,f=void 0===h?0:h,u=d.y,p=void 0===u?0:u,g=o.hasOwnProperty("x"),m=o.hasOwnProperty("y"),_=J,b=Q,v=window;if(l){var y=vt(i),w="clientHeight",E="clientWidth";y===ot(i)&&"static"!==pt(y=mt(i)).position&&(w="scrollHeight",E="scrollWidth"),y=y,n===Q&&(b=G,p-=y[w]-s.height,p*=a?1:-1),n===J&&(_=Z,f-=y[E]-s.width,f*=a?1:-1)}var T,A=Object.assign({position:r},l&&Dt);return a?Object.assign({},A,((T={})[b]=m?"0":"",T[_]=g?"0":"",T.transform=(v.devicePixelRatio||1)<2?"translate("+f+"px, "+p+"px)":"translate3d("+f+"px, "+p+"px, 0)",T)):Object.assign({},A,((e={})[b]=m?p+"px":"",e[_]=g?f+"px":"",e.transform="",e))}var Ct={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,s=i.gpuAcceleration,n=void 0===s||s,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:dt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:n};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},St={passive:!0},Nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,s=t.options,n=s.scroll,o=void 0===n||n,r=s.resize,a=void 0===r||r,l=ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,St)})),a&&l.addEventListener("resize",i.update,St),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,St)})),a&&l.removeEventListener("resize",i.update,St)}},data:{}},jt={left:"right",right:"left",bottom:"top",top:"bottom"};function Pt(t){return t.replace(/left|right|bottom|top/g,(function(t){return jt[t]}))}var It={start:"end",end:"start"};function Mt(t){return t.replace(/start|end/g,(function(t){return It[t]}))}function Rt(t){var e=ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Bt(t){return ht(mt(t)).left+Rt(t).scrollLeft}function Ht(t){var e=pt(t),i=e.overflow,s=e.overflowX,n=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+n+s)}function Wt(t,e){var i;void 0===e&&(e=[]);var s=function t(e){return["html","body","#document"].indexOf(nt(e))>=0?e.ownerDocument.body:at(e)&&Ht(e)?e:t(_t(e))}(t),n=s===(null==(i=t.ownerDocument)?void 0:i.body),o=ot(s),r=n?[o].concat(o.visualViewport||[],Ht(s)?s:[]):s,a=e.concat(r);return n?a:a.concat(Wt(_t(r)))}function Ut(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function $t(t,e){return"viewport"===e?Ut(function(t){var e=ot(t),i=mt(t),s=e.visualViewport,n=i.clientWidth,o=i.clientHeight,r=0,a=0;return s&&(n=s.width,o=s.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(r=s.offsetLeft,a=s.offsetTop)),{width:n,height:o,x:r+Bt(t),y:a}}(t)):at(e)?function(t){var e=ht(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}(e):Ut(function(t){var e,i=mt(t),s=Rt(t),n=null==(e=t.ownerDocument)?void 0:e.body,o=wt(i.scrollWidth,i.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),r=wt(i.scrollHeight,i.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),a=-s.scrollLeft+Bt(t),l=-s.scrollTop;return"rtl"===pt(n||i).direction&&(a+=wt(i.clientWidth,n?n.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(mt(t)))}function Ft(t){return t.split("-")[1]}function zt(t){var e,i=t.reference,s=t.element,n=t.placement,o=n?dt(n):null,r=n?Ft(n):null,a=i.x+i.width/2-s.width/2,l=i.y+i.height/2-s.height/2;switch(o){case Q:e={x:a,y:i.y-s.height};break;case G:e={x:a,y:i.y+i.height};break;case Z:e={x:i.x+i.width,y:l};break;case J:e={x:i.x-s.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?yt(o):null;if(null!=c){var d="y"===c?"height":"width";switch(r){case"start":e[c]=e[c]-(i[d]/2-s[d]/2);break;case"end":e[c]=e[c]+(i[d]/2-s[d]/2)}}return e}function Kt(t,e){void 0===e&&(e={});var i=e,s=i.placement,n=void 0===s?t.placement:s,o=i.boundary,r=void 0===o?"clippingParents":o,a=i.rootBoundary,l=void 0===a?"viewport":a,c=i.elementContext,d=void 0===c?"popper":c,h=i.altBoundary,f=void 0!==h&&h,u=i.padding,p=void 0===u?0:u,g=Lt("number"!=typeof p?p:Ot(p,tt)),m="popper"===d?"reference":"popper",_=t.elements.reference,b=t.rects.popper,v=t.elements[f?m:d],y=function(t,e,i){var s="clippingParents"===e?function(t){var e=Wt(_t(t)),i=["absolute","fixed"].indexOf(pt(t).position)>=0&&at(t)?vt(t):t;return rt(i)?e.filter((function(t){return rt(t)&&ut(t,i)&&"body"!==nt(t)})):[]}(t):[].concat(e),n=[].concat(s,[i]),o=n[0],r=n.reduce((function(e,i){var s=$t(t,i);return e.top=wt(s.top,e.top),e.right=Et(s.right,e.right),e.bottom=Et(s.bottom,e.bottom),e.left=wt(s.left,e.left),e}),$t(t,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}(rt(v)?v:v.contextElement||mt(t.elements.popper),r,l),w=ht(_),E=zt({reference:w,element:b,strategy:"absolute",placement:n}),T=Ut(Object.assign({},b,E)),A="popper"===d?T:w,L={top:y.top-A.top+g.top,bottom:A.bottom-y.bottom+g.bottom,left:y.left-A.left+g.left,right:A.right-y.right+g.right},O=t.modifiersData.offset;if("popper"===d&&O){var k=O[n];Object.keys(L).forEach((function(t){var e=[Z,G].indexOf(t)>=0?1:-1,i=[Q,G].indexOf(t)>=0?"y":"x";L[t]+=k[i]*e}))}return L}function Yt(t,e){void 0===e&&(e={});var i=e,s=i.placement,n=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?it:l,d=Ft(s),h=d?a?et:et.filter((function(t){return Ft(t)===d})):tt,f=h.filter((function(t){return c.indexOf(t)>=0}));0===f.length&&(f=h);var u=f.reduce((function(e,i){return e[i]=Kt(t,{placement:i,boundary:n,rootBoundary:o,padding:r})[dt(i)],e}),{});return Object.keys(u).sort((function(t,e){return u[t]-u[e]}))}var qt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,s=t.name;if(!e.modifiersData[s]._skip){for(var n=i.mainAxis,o=void 0===n||n,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,d=i.boundary,h=i.rootBoundary,f=i.altBoundary,u=i.flipVariations,p=void 0===u||u,g=i.allowedAutoPlacements,m=e.options.placement,_=dt(m),b=l||(_!==m&&p?function(t){if("auto"===dt(t))return[];var e=Pt(t);return[Mt(t),e,Mt(e)]}(m):[Pt(m)]),v=[m].concat(b).reduce((function(t,i){return t.concat("auto"===dt(i)?Yt(e,{placement:i,boundary:d,rootBoundary:h,padding:c,flipVariations:p,allowedAutoPlacements:g}):i)}),[]),y=e.rects.reference,w=e.rects.popper,E=new Map,T=!0,A=v[0],L=0;L=0,C=x?"width":"height",S=Kt(e,{placement:O,boundary:d,rootBoundary:h,altBoundary:f,padding:c}),N=x?D?Z:J:D?G:Q;y[C]>w[C]&&(N=Pt(N));var j=Pt(N),P=[];if(o&&P.push(S[k]<=0),a&&P.push(S[N]<=0,S[j]<=0),P.every((function(t){return t}))){A=O,T=!1;break}E.set(O,P)}if(T)for(var I=function(t){var e=v.find((function(e){var i=E.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return A=e,"break"},M=p?3:1;M>0&&"break"!==I(M);M--);e.placement!==A&&(e.modifiersData[s]._skip=!0,e.placement=A,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function Vt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Xt(t){return[Q,Z,G,J].some((function(e){return t[e]>=0}))}var Qt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,s=e.rects.reference,n=e.rects.popper,o=e.modifiersData.preventOverflow,r=Kt(e,{elementContext:"reference"}),a=Kt(e,{altBoundary:!0}),l=Vt(r,s),c=Vt(a,n,o),d=Xt(l),h=Xt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":h})}},Gt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,s=t.name,n=i.offset,o=void 0===n?[0,0]:n,r=it.reduce((function(t,i){return t[i]=function(t,e,i){var s=dt(t),n=[J,Q].indexOf(s)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*n,[J,Z].indexOf(s)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[s]=r}},Zt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=zt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Jt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,s=t.name,n=i.mainAxis,o=void 0===n||n,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,d=i.altBoundary,h=i.padding,f=i.tether,u=void 0===f||f,p=i.tetherOffset,g=void 0===p?0:p,m=Kt(e,{boundary:l,rootBoundary:c,padding:h,altBoundary:d}),_=dt(e.placement),b=Ft(e.placement),v=!b,y=yt(_),w="x"===y?"y":"x",E=e.modifiersData.popperOffsets,T=e.rects.reference,A=e.rects.popper,L="function"==typeof g?g(Object.assign({},e.rects,{placement:e.placement})):g,O={x:0,y:0};if(E){if(o||a){var k="y"===y?Q:J,D="y"===y?G:Z,x="y"===y?"height":"width",C=E[y],S=E[y]+m[k],N=E[y]-m[D],j=u?-A[x]/2:0,P="start"===b?T[x]:A[x],I="start"===b?-A[x]:-T[x],M=e.elements.arrow,R=u&&M?ft(M):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},H=B[k],W=B[D],U=At(0,T[x],R[x]),$=v?T[x]/2-j-U-H-L:P-U-H-L,F=v?-T[x]/2+j+U+W+L:I+U+W+L,z=e.elements.arrow&&vt(e.elements.arrow),K=z?"y"===y?z.clientTop||0:z.clientLeft||0:0,Y=e.modifiersData.offset?e.modifiersData.offset[e.placement][y]:0,q=E[y]+$-Y-K,V=E[y]+F-Y;if(o){var X=At(u?Et(S,q):S,C,u?wt(N,V):N);E[y]=X,O[y]=X-C}if(a){var tt="x"===y?Q:J,et="x"===y?G:Z,it=E[w],st=it+m[tt],nt=it-m[et],ot=At(u?Et(st,q):st,it,u?wt(nt,V):nt);E[w]=ot,O[w]=ot-it}}e.modifiersData[s]=O}},requiresIfExists:["offset"]};function te(t,e,i){void 0===i&&(i=!1);var s,n,o=mt(e),r=ht(t),a=at(e),l={scrollLeft:0,scrollTop:0},c={x:0,y:0};return(a||!a&&!i)&&(("body"!==nt(e)||Ht(o))&&(l=(s=e)!==ot(s)&&at(s)?{scrollLeft:(n=s).scrollLeft,scrollTop:n.scrollTop}:Rt(s)),at(e)?((c=ht(e)).x+=e.clientLeft,c.y+=e.clientTop):o&&(c.x=Bt(o))),{x:r.left+l.scrollLeft-c.x,y:r.top+l.scrollTop-c.y,width:r.width,height:r.height}}var ee={placement:"bottom",modifiers:[],strategy:"absolute"};function ie(){for(var t=arguments.length,e=new Array(t),i=0;i"applyStyles"===t.name&&!1===t.enabled);this._popper=re(e,this._menu,i),s&&B.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>N.on(t,"mouseover",null,(function(){}))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),N.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(this._element.disabled||this._element.classList.contains("disabled")||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};N.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||(this._popper&&this._popper.destroy(),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),B.removeDataAttribute(this._menu,"popper"),N.trigger(this._element,"hidden.bs.dropdown",t))}dispose(){N.off(this._element,".bs.dropdown"),this._menu=null,this._popper&&(this._popper.destroy(),this._popper=null),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){N.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_getConfig(t){if(t={...this.constructor.Default,...B.getDataAttributes(this._element),...t},l("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!r(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return H.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return ue;if(t.classList.contains("dropstart"))return pe;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?de:ce:e?fe:he}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}static dropdownInterface(t,e){let i=b.get(t,"bs.dropdown");if(i||(i=new _e(t,"object"==typeof e?e:null)),"string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}static jQueryInterface(t){return this.each((function(){_e.dropdownInterface(this,t)}))}static clearMenus(t){if(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;if(/input|select|textarea|form/i.test(t.target.tagName))return}const e=H.find('[data-bs-toggle="dropdown"]');for(let i=0,s=e.length;it.composedPath().includes(e)))continue;if("keyup"===t.type&&"Tab"===t.key&&o.contains(t.target))continue}N.trigger(e[i],"hide.bs.dropdown",n).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>N.off(t,"mouseover",null,(function(){}))),e[i].setAttribute("aria-expanded","false"),s._popper&&s._popper.destroy(),o.classList.remove("show"),e[i].classList.remove("show"),B.removeDataAttribute(o,"popper"),N.trigger(e[i],"hidden.bs.dropdown",n))}}}static getParentFromElement(t){return s(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!le.test(t.key))return;if(t.preventDefault(),t.stopPropagation(),this.disabled||this.classList.contains("disabled"))return;const e=_e.getParentFromElement(this),i=this.classList.contains("show");if("Escape"===t.key)return(this.matches('[data-bs-toggle="dropdown"]')?this:H.prev(this,'[data-bs-toggle="dropdown"]')[0]).focus(),void _e.clearMenus();if(!i&&("ArrowUp"===t.key||"ArrowDown"===t.key))return void(this.matches('[data-bs-toggle="dropdown"]')?this:H.prev(this,'[data-bs-toggle="dropdown"]')[0]).click();if(!i||"Space"===t.key)return void _e.clearMenus();const s=H.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",e).filter(c);if(!s.length)return;let n=s.indexOf(t.target);"ArrowUp"===t.key&&n>0&&n--,"ArrowDown"===t.key&&nthis.hide(t)),N.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{N.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(N.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();if(e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),N.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),N.off(this._element,"click.dismiss.bs.modal"),N.off(this._dialog,"mousedown.dismiss.bs.modal"),e){const t=n(this._element);N.one(this._element,"transitionend",t=>this._hideModal(t)),a(this._element,t)}else this._hideModal()}dispose(){[window,this._element,this._dialog].forEach(t=>N.off(t,".bs.modal")),super.dispose(),N.off(document,"focusin.bs.modal"),this._config=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null}handleUpdate(){this._adjustDialog()}_getConfig(t){return t={...be,...t},l("modal",t,ve),t}_showElement(t){const e=this._isAnimated(),i=H.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),e&&u(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus();const s=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,N.trigger(this._element,"shown.bs.modal",{relatedTarget:t})};if(e){const t=n(this._dialog);N.one(this._dialog,"transitionend",s),a(this._dialog,t)}else s()}_enforceFocus(){N.off(document,"focusin.bs.modal"),N.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?N.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):N.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?N.on(window,"resize.bs.modal",()=>this._adjustDialog()):N.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._resetScrollbar(),N.trigger(this._element,"hidden.bs.modal")})}_removeBackdrop(){this._backdrop.parentNode.removeChild(this._backdrop),this._backdrop=null}_showBackdrop(t){const e=this._isAnimated();if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",e&&this._backdrop.classList.add("fade"),document.body.appendChild(this._backdrop),N.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===this._config.backdrop?this._triggerBackdropTransition():this.hide())}),e&&u(this._backdrop),this._backdrop.classList.add("show"),!e)return void t();const i=n(this._backdrop);N.one(this._backdrop,"transitionend",t),a(this._backdrop,i)}else if(!this._isShown&&this._backdrop){this._backdrop.classList.remove("show");const i=()=>{this._removeBackdrop(),t()};if(e){const t=n(this._backdrop);N.one(this._backdrop,"transitionend",i),a(this._backdrop,t)}else i()}else t()}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");const e=n(this._dialog);N.off(this._element,"transitionend"),N.one(this._element,"transitionend",()=>{this._element.classList.remove("modal-static"),t||(N.one(this._element,"transitionend",()=>{this._element.style.overflowY=""}),a(this._element,e))}),a(this._element,e),this._element.focus()}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!g()||this._isBodyOverflowing&&!t&&g())&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!g()||!this._isBodyOverflowing&&t&&g())&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_checkScrollbar(){const t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)t+this._scrollbarWidth),this._setElementAttributes(".sticky-top","marginRight",t=>t-this._scrollbarWidth),this._setElementAttributes("body","paddingRight",t=>t+this._scrollbarWidth)),document.body.classList.add("modal-open")}_setElementAttributes(t,e,i){H.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+this._scrollbarWidth)return;const s=t.style[e],n=window.getComputedStyle(t)[e];B.setDataAttribute(t,e,s),t.style[e]=i(Number.parseFloat(n))+"px"})}_resetScrollbar(){this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight"),this._resetElementAttributes("body","paddingRight")}_resetElementAttributes(t,e){H.find(t).forEach(t=>{const i=B.getDataAttribute(t,e);void 0===i&&t===document.body?t.style[e]="":(B.removeDataAttribute(t,e),t.style[e]=i)})}_getScrollbarWidth(){const t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);const e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}static jQueryInterface(t,e){return this.each((function(){let i=b.get(this,"bs.modal");const s={...be,...B.getDataAttributes(this),..."object"==typeof t&&t?t:{}};if(i||(i=new ye(this,s)),"string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=s(this);"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault(),N.one(e,"show.bs.modal",t=>{t.defaultPrevented||N.one(e,"hidden.bs.modal",()=>{c(this)&&this.focus()})});let i=b.get(e,"bs.modal");if(!i){const t={...B.getDataAttributes(e),...B.getDataAttributes(this)};i=new ye(e,t)}i.toggle(this)})),m("modal",ye);const we=()=>{const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)},Ee=(t,e,i)=>{const s=we();H.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+s)return;const n=t.style[e],o=window.getComputedStyle(t)[e];B.setDataAttribute(t,e,n),t.style[e]=i(Number.parseFloat(o))+"px"})},Te=(t,e)=>{H.find(t).forEach(t=>{const i=B.getDataAttribute(t,e);void 0===i&&t===document.body?t.style.removeProperty(e):(B.removeDataAttribute(t,e),t.style[e]=i)})},Ae={backdrop:!0,keyboard:!0,scroll:!1},Le={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class Oe extends j{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._addEventListeners()}static get Default(){return Ae}static get DATA_KEY(){return"bs.offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._config.backdrop&&document.body.classList.add("offcanvas-backdrop"),this._config.scroll||((t=we())=>{document.body.style.overflow="hidden",Ee(".fixed-top, .fixed-bottom, .is-fixed","paddingRight",e=>e+t),Ee(".sticky-top","marginRight",e=>e-t),Ee("body","paddingRight",e=>e+t)})(),this._element.classList.add("offcanvas-toggling"),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),setTimeout(()=>{this._element.classList.remove("offcanvas-toggling"),N.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t}),this._enforceFocusOnElement(this._element)},n(this._element)))}hide(){this._isShown&&(N.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._element.classList.add("offcanvas-toggling"),N.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),setTimeout(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.backdrop&&document.body.classList.remove("offcanvas-backdrop"),this._config.scroll||(document.body.style.overflow="auto",Te(".fixed-top, .fixed-bottom, .is-fixed","paddingRight"),Te(".sticky-top","marginRight"),Te("body","paddingRight")),N.trigger(this._element,"hidden.bs.offcanvas"),this._element.classList.remove("offcanvas-toggling")},n(this._element))))}_getConfig(t){return t={...Ae,...B.getDataAttributes(this._element),..."object"==typeof t?t:{}},l("offcanvas",t,Le),t}_enforceFocusOnElement(t){N.off(document,"focusin.bs.offcanvas"),N.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){N.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),N.on(document,"keydown",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}),N.on(document,"click.bs.offcanvas.data-api",t=>{const e=H.findOne(i(t.target));this._element.contains(t.target)||e===this._element||this.hide()})}static jQueryInterface(t){return this.each((function(){const e=b.get(this,"bs.offcanvas")||new Oe(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=s(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),d(this))return;N.one(e,"hidden.bs.offcanvas",()=>{c(this)&&this.focus()});const i=H.findOne(".offcanvas.show, .offcanvas-toggling");i&&i!==e||(b.get(e,"bs.offcanvas")||new Oe(e)).toggle(this)})),N.on(window,"load.bs.offcanvas.data-api",()=>{H.find(".offcanvas.show").forEach(t=>(b.get(t,"bs.offcanvas")||new Oe(t)).show())}),m("offcanvas",Oe);const ke=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),De=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,xe=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Ce=(t,e)=>{const i=t.nodeName.toLowerCase();if(e.includes(i))return!ke.has(i)||Boolean(De.test(t.nodeValue)||xe.test(t.nodeValue));const s=e.filter(t=>t instanceof RegExp);for(let t=0,e=s.length;t{Ce(t,a)||i.removeAttribute(t.nodeName)})}return s.body.innerHTML}const Ne=new RegExp("(^|\\s)bs-tooltip\\S+","g"),je=new Set(["sanitize","allowList","sanitizeFn"]),Pe={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},Ie={AUTO:"auto",TOP:"top",RIGHT:g()?"left":"right",BOTTOM:"bottom",LEFT:g()?"right":"left"},Me={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Re={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class Be extends j{constructor(t,e){if(void 0===ae)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Me}static get NAME(){return"tooltip"}static get DATA_KEY(){return"bs.tooltip"}static get Event(){return Re}static get EVENT_KEY(){return".bs.tooltip"}static get DefaultType(){return Pe}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),N.off(this._element,this.constructor.EVENT_KEY),N.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const e=N.trigger(this._element,this.constructor.Event.SHOW),i=h(this._element),s=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(e.defaultPrevented||!s)return;const o=this.getTipElement(),r=t(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add("fade");const l="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,c=this._getAttachment(l);this._addAttachmentClass(c);const d=this._getContainer();b.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(d.appendChild(o),N.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=re(this._element,o,this._getPopperConfig(c)),o.classList.add("show");const f="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;f&&o.classList.add(...f.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{N.on(t,"mouseover",(function(){}))});const u=()=>{const t=this._hoverState;this._hoverState=null,N.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)};if(this.tip.classList.contains("fade")){const t=n(this.tip);N.one(this.tip,"transitionend",u),a(this.tip,t)}else u()}hide(){if(!this._popper)return;const t=this.getTipElement(),e=()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.parentNode&&t.parentNode.removeChild(t),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(!N.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){if(t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>N.off(t,"mouseover",f)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){const i=n(t);N.one(t,"transitionend",e),a(t,i)}else e();this._hoverState=""}}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(H.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return"object"==typeof e&&r(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Se(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const i=this.constructor.DATA_KEY;return(e=e||b.get(t.delegateTarget,i))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),b.set(t.delegateTarget,i,e)),e}_getOffset(){const{offset:t}=this.config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this.config.popperConfig?this.config.popperConfig(e):this.config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getContainer(){return!1===this.config.container?document.body:r(this.config.container)?this.config.container:H.findOne(this.config.container)}_getAttachment(t){return Ie[t.toUpperCase()]}_setListeners(){this.config.trigger.split(" ").forEach(t=>{if("click"===t)N.on(this._element,this.constructor.Event.CLICK,this.config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;N.on(this._element,e,this.config.selector,t=>this._enter(t)),N.on(this._element,i,this.config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config={...this.config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e.config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e.config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=B.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{je.has(t)&&delete e[t]}),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),l("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this.config)for(const e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Ne);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.tooltip");const i="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new Be(this,i)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m("tooltip",Be);const He=new RegExp("(^|\\s)bs-popover\\S+","g"),We={...Be.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},Ue={...Be.DefaultType,content:"(string|element|function)"},$e={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Fe extends Be{static get Default(){return We}static get NAME(){return"popover"}static get DATA_KEY(){return"bs.popover"}static get Event(){return $e}static get EVENT_KEY(){return".bs.popover"}static get DefaultType(){return Ue}isWithContent(){return this.getTitle()||this._getContent()}setContent(){const t=this.getTipElement();this.setElementContent(H.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(H.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this.config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(He);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.popover");const i="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new Fe(this,i),b.set(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m("popover",Fe);const ze={offset:10,method:"auto",target:""},Ke={offset:"number",method:"string",target:"(string|element)"};class Ye extends j{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,N.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return ze}static get DATA_KEY(){return"bs.scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),H.find(this._selector).map(t=>{const n=i(t),o=n?H.findOne(n):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[B[e](o).top+s,n]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){super.dispose(),N.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}_getConfig(e){if("string"!=typeof(e={...ze,..."object"==typeof e&&e?e:{}}).target&&r(e.target)){let{id:i}=e.target;i||(i=t("scrollspy"),e.target.id=i),e.target="#"+i}return l("scrollspy",e,Ke),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),i=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=i){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),i=H.findOne(e.join(","));i.classList.contains("dropdown-item")?(H.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add("active"),i.classList.add("active")):(i.classList.add("active"),H.parents(i,".nav, .list-group").forEach(t=>{H.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),H.prev(t,".nav-item").forEach(t=>{H.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),N.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){H.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.scrollspy");if(e||(e=new Ye(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,"load.bs.scrollspy.data-api",()=>{H.find('[data-bs-spy="scroll"]').forEach(t=>new Ye(t,B.getDataAttributes(t)))}),m("scrollspy",Ye);class qe extends j{static get DATA_KEY(){return"bs.tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active")||d(this._element))return;let t;const e=s(this._element),i=this._element.closest(".nav, .list-group");if(i){const e="UL"===i.nodeName||"OL"===i.nodeName?":scope > li > .active":".active";t=H.find(e,i),t=t[t.length-1]}const n=t?N.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(N.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,i);const o=()=>{N.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),N.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,i){const s=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?H.children(e,".active"):H.find(":scope > li > .active",e))[0],o=i&&s&&s.classList.contains("fade"),r=()=>this._transitionComplete(t,s,i);if(s&&o){const t=n(s);s.classList.remove("show"),N.one(s,"transitionend",r),a(s,t)}else r()}_transitionComplete(t,e,i){if(e){e.classList.remove("active");const t=H.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),u(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu")&&(t.closest(".dropdown")&&H.find(".dropdown-toggle").forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)),i&&i()}static jQueryInterface(t){return this.each((function(){const e=b.get(this,"bs.tab")||new qe(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(b.get(this,"bs.tab")||new qe(this)).show()})),m("tab",qe);const Ve={animation:"boolean",autohide:"boolean",delay:"number"},Xe={animation:!0,autohide:!0,delay:5e3};class Qe extends j{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._setListeners()}static get DefaultType(){return Ve}static get Default(){return Xe}static get DATA_KEY(){return"bs.toast"}show(){if(N.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");const t=()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),N.trigger(this._element,"shown.bs.toast"),this._config.autohide&&(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))};if(this._element.classList.remove("hide"),u(this._element),this._element.classList.add("showing"),this._config.animation){const e=n(this._element);N.one(this._element,"transitionend",t),a(this._element,e)}else t()}hide(){if(!this._element.classList.contains("show"))return;if(N.trigger(this._element,"hide.bs.toast").defaultPrevented)return;const t=()=>{this._element.classList.add("hide"),N.trigger(this._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){const e=n(this._element);N.one(this._element,"transitionend",t),a(this._element,e)}else t()}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),N.off(this._element,"click.dismiss.bs.toast"),super.dispose(),this._config=null}_getConfig(t){return t={...Xe,...B.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},l("toast",t,this.constructor.DefaultType),t}_setListeners(){N.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide())}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){let e=b.get(this,"bs.toast");if(e||(e=new Qe(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return m("toast",Qe),{Alert:P,Button:I,Carousel:Y,Collapse:X,Dropdown:_e,Modal:ye,Offcanvas:Oe,Popover:Fe,ScrollSpy:Ye,Tab:qe,Toast:Qe,Tooltip:Be}})); //# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/dist/js/bootstrap.bundle.min.js.map b/dist/js/bootstrap.bundle.min.js.map index 4a4e9312d8f3..6e1031c294f3 100644 --- a/dist/js/bootstrap.bundle.min.js.map +++ b/dist/js/bootstrap.bundle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["storeData","id","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","isRTL","documentElement","dir","defineJQueryPlugin","name","plugin","callback","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","mapData","set","key","data","bsKey","get","keyProperties","delete","Data","instance","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","has","addHandler","oneOff","_normalizeParams","handlers","previousFn","domElements","querySelectorAll","target","this","delegateTarget","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","_normalizeParams2","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","jQueryEvent","isNative","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_this","classList","remove","contains","_destroyElement","removeChild","each","handleDismiss","alertInstance","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","SelectorEngine","_ref","concat","Element","prototype","_ref2","children","child","matches","previous","previousElementSibling","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Carousel","_BaseComponent","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","_this2","activeIndex","_getItemIndex","direction","_extends","_handleSwipe","absDeltax","abs","_this3","_keydown","_addTouchEventListeners","_this4","start","pointerType","touches","clientX","end","clearTimeout","itemImg","e","add","move","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","_this5","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","parent","Collapse","_isTransitioning","_triggerArray","SELECTOR_DATA_TOGGLE","toggleList","elem","filterElement","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","find","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","bottom","right","basePlacements","variationPlacements","reduce","acc","placement","placements","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","applyStyles$1","enabled","phase","state","elements","styles","assign","effect","initialStyles","popper","options","strategy","margin","arrow","reference","hasOwnProperty","attribute","requires","getBasePlacement","getLayoutRect","x","y","width","offsetWidth","height","rootNode","getRootNode","ShadowRoot","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","html","getOffsetParent","currentNode","css","transform","perspective","willChange","getContainingBlock","getMainAxisFromPlacement","within","min","max","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","padding","arrowRect","minProp","maxProp","endDiff","rects","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","axisProp","centerOffset","_options$element","_options$padding","requiresIfExists","unsetSides","mapToStyles","_Object$assign2","popperRect","offsets","gpuAcceleration","adaptive","_ref3","roundOffsets","dpr","devicePixelRatio","round","roundOffsetsByDPR","_ref3$x","_ref3$y","hasX","hasY","sideX","sideY","win","_Object$assign","commonStyles","computeStyles$1","_ref4","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data-popper-placement","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","listScrollParents","list","getScrollParent","isBody","visualViewport","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","userAgent","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getVariation","computeOffsets","variation","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","altContext","referenceElement","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","data-popper-reference-hidden","data-popper-escaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_mainSide","_altSide","_offset","_preventedOffset","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","DEFAULT_OPTIONS","modifiers","areValidElements","_len","arguments","Array","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","cleanupModifierEffects","merged","map","visited","result","modifier","dep","depModifier","order","orderModifiers","current","existing","m","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","REGEXP_KEYDOWN","ARROW_UP_KEY","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","_getPopperConfig","isDisplayStatic","focus","stopPropagation","nextElementSibling","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","popperData","defaultBsPopperConfig","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","click","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","Node","ELEMENT_NODE","appendChild","_enforceFocus","transitionComplete","_this6","_triggerBackdropTransition","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","_this10","isModalOverflowing","modalTransitionDuration","paddingLeft","paddingRight","innerWidth","_getScrollbarWidth","_this11","_setElementAttributes","calculatedValue","styleProp","actualValue","_resetElementAttributes","scrollDiv","scrollbarWidth","_this12","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","el","elName","attributeList","allowedAttributes","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","Error","isWithContent","shadowRoot","findShadowRoot","attachShadow","root","isInTheDom","tipId","NAME","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","_tip$classList","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","_handlePopperPlacementChange","CLASS_PREFIX","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","item","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","parents","ancestor","listGroup","SELECTOR_NAV_LINKS","navItem","spy","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta2'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n if (!element.classList.contains(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, 'transitionend', () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n if (isRTL) {\n this.next()\n } else {\n this.prev()\n }\n }\n\n // swipe right\n if (direction < 0) {\n if (isRTL) {\n this.prev()\n } else {\n this.next()\n }\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault()\n if (isRTL) {\n this.next()\n } else {\n this.prev()\n }\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault()\n if (isRTL) {\n this.prev()\n } else {\n this.next()\n }\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const directionalClassName = direction === DIRECTION_NEXT ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = direction === DIRECTION_NEXT ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = direction === DIRECTION_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, 'transitionend', () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nexport default function getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n/*:: declare function isShadowRoot(node: mixed): boolean %checks(node instanceof\n ShadowRoot); */\n\n\nfunction isShadowRoot(node) {\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nexport default function getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe[incompatible-return]: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function within(min, value, max) {\n return Math.max(min, Math.min(value, max));\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign(Object.assign({}, getFreshSideObject()), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = state.modifiersData[name + \"#persistent\"].padding;\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element,\n _options$padding = options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n state.modifiersData[name + \"#persistent\"] = {\n padding: mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements))\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets ? roundOffsetsByDPR(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign(Object.assign({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign(Object.assign({}, state.styles.popper), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign(Object.assign({}, state.styles.arrow), mapToStyles(Object.assign(Object.assign({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export default function getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","export default function rectToClientRect(rect) {\n return Object.assign(Object.assign({}, rect), {}, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = Math.max(rect.top, accRect.top);\n accRect.right = Math.min(rect.right, accRect.right);\n accRect.bottom = Math.min(rect.bottom, accRect.bottom);\n accRect.left = Math.max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = element.ownerDocument.body;\n var width = Math.max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = Math.max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += Math.max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign(Object.assign({}, popperRect), popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\n\n/*:: type OverflowsMap = { [ComputedPlacement]: number }; */\n\n/*;; type OverflowsMap = { [key in ComputedPlacement]: number }; */\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign(Object.assign({}, state.attributes.popper), {}, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign(Object.assign({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign(Object.assign({}, state.rects), {}, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? Math.min(min, tetherMin) : min, offset, tether ? Math.max(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(_min, _offset, _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\"; // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign(Object.assign({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign(Object.assign(Object.assign({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign(Object.assign(Object.assign({}, existing), current), {}, {\n options: Object.assign(Object.assign({}, existing.options), current.options),\n data: Object.assign(Object.assign({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(dropdownMenu, 'popper')\n EventHandler.trigger(toggles[i], EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.click()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, 'transitionend', transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, 'transitionend', callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, 'transitionend', callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - this._scrollbarWidth)\n this._setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n SelectorEngine.find(selector)\n .forEach(element => {\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'\n })\n }\n\n _resetScrollbar() {\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n this._resetElementAttributes('body', 'paddingRight')\n }\n\n _resetElementAttributes(selector, styleProp) {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined' && element === document.body) {\n element.style[styleProp] = ''\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\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 */\nconst 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 */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\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', 'srcset', '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\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip && this.tip.parentNode) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, 'transitionend', complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, 'transitionend', complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this.config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n altBoundary: true,\n fallbackPlacements: this.config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:DefaultAllowlist,popperConfig:null},Event$1={HIDE:"hide"+EVENT_KEY$6,HIDDEN:"hidden"+EVENT_KEY$6,SHOW:"show"+EVENT_KEY$6,SHOWN:"shown"+EVENT_KEY$6,INSERTED:"inserted"+EVENT_KEY$6,CLICK:"click"+EVENT_KEY$6,FOCUSIN:"focusin"+EVENT_KEY$6,FOCUSOUT:"focusout"+EVENT_KEY$6,MOUSEENTER:"mouseenter"+EVENT_KEY$6,MOUSELEAVE:"mouseleave"+EVENT_KEY$6},CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$4="show",HOVER_STATE_SHOW="show",HOVER_STATE_OUT="out",SELECTOR_TOOLTIP_INNER=".tooltip-inner",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",Tooltip=function(e){function t(t,n){var i;if(void 0===Popper)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(i=e.call(this,t)||this)._isEnabled=!0,i._timeout=0,i._hoverState="",i._activeTrigger={},i._popper=null,i.config=i._getConfig(n),i.tip=null,i._setListeners(),i}_inheritsLoose(t,e);var n=t.prototype;return n.enable=function(){this._isEnabled=!0},n.disable=function(){this._isEnabled=!1},n.toggleEnabled=function(){this._isEnabled=!this._isEnabled},n.toggle=function(e){if(this._isEnabled)if(e){var t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter(null,t):t._leave(null,t)}else{if(this.getTipElement().classList.contains(CLASS_NAME_SHOW$4))return void this._leave(null,this);this._enter(null,this)}},n.dispose=function(){clearTimeout(this._timeout),EventHandler.off(this._element,this.constructor.EVENT_KEY),EventHandler.off(this._element.closest("."+CLASS_NAME_MODAL),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,e.prototype.dispose.call(this)},n.show=function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var t=EventHandler.trigger(this._element,this.constructor.Event.SHOW),n=findShadowRoot(this._element),i=null===n?this._element.ownerDocument.documentElement.contains(this._element):n.contains(this._element);if(!t.defaultPrevented&&i){var o=this.getTipElement(),r=getUID(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add(CLASS_NAME_FADE$2);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,a=this._getAttachment(s);this._addAttachmentClass(a);var l=this._getContainer();Data.setData(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||l.appendChild(o),EventHandler.trigger(this._element,this.constructor.Event.INSERTED),this._popper=createPopper(this._element,o,this._getPopperConfig(a)),o.classList.add(CLASS_NAME_SHOW$4);var E,_,c="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;c&&(E=o.classList).add.apply(E,c.split(" ")),"ontouchstart"in document.documentElement&&(_=[]).concat.apply(_,document.body.children).forEach((function(e){EventHandler.on(e,"mouseover",noop())}));var u=function(){var t=e._hoverState;e._hoverState=null,EventHandler.trigger(e._element,e.constructor.Event.SHOWN),t===HOVER_STATE_OUT&&e._leave(null,e)};if(this.tip.classList.contains(CLASS_NAME_FADE$2)){var d=getTransitionDurationFromElement(this.tip);EventHandler.one(this.tip,"transitionend",u),emulateTransitionEnd(this.tip,d)}else u()}}},n.hide=function(){var e=this;if(this._popper){var t=this.getTipElement(),n=function(){e._hoverState!==HOVER_STATE_SHOW&&t.parentNode&&t.parentNode.removeChild(t),e._cleanTipClass(),e._element.removeAttribute("aria-describedby"),EventHandler.trigger(e._element,e.constructor.Event.HIDDEN),e._popper&&(e._popper.destroy(),e._popper=null)};if(!EventHandler.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(t.classList.remove(CLASS_NAME_SHOW$4),"ontouchstart"in document.documentElement&&(i=[]).concat.apply(i,document.body.children).forEach((function(e){return EventHandler.off(e,"mouseover",noop)})),this._activeTrigger[TRIGGER_CLICK]=!1,this._activeTrigger[TRIGGER_FOCUS]=!1,this._activeTrigger[TRIGGER_HOVER]=!1,this.tip.classList.contains(CLASS_NAME_FADE$2)){var o=getTransitionDurationFromElement(t);EventHandler.one(t,"transitionend",n),emulateTransitionEnd(t,o)}else n();this._hoverState=""}}},n.update=function(){null!==this._popper&&this._popper.update()},n.isWithContent=function(){return Boolean(this.getTitle())},n.getTipElement=function(){if(this.tip)return this.tip;var e=document.createElement("div");return e.innerHTML=this.config.template,this.tip=e.children[0],this.tip},n.setContent=function(){var e=this.getTipElement();this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER,e),this.getTitle()),e.classList.remove(CLASS_NAME_FADE$2,CLASS_NAME_SHOW$4)},n.setElementContent=function(e,t){if(null!==e)return"object"==typeof t&&isElement(t)?(t.jquery&&(t=t[0]),void(this.config.html?t.parentNode!==e&&(e.innerHTML="",e.appendChild(t)):e.textContent=t.textContent)):void(this.config.html?(this.config.sanitize&&(t=sanitizeHtml(t,this.config.allowList,this.config.sanitizeFn)),e.innerHTML=t):e.textContent=t)},n.getTitle=function(){var e=this._element.getAttribute("data-bs-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),e},n.updateAttachment=function(e){return"right"===e?"end":"left"===e?"start":e},n._initializeOnDelegatedTarget=function(e,t){var n=this.constructor.DATA_KEY;return(t=t||Data.getData(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Data.setData(e.delegateTarget,n,t)),t},n._getOffset=function(){var e=this,t=this.config.offset;return"string"==typeof t?t.split(",").map((function(e){return Number.parseInt(e,10)})):"function"==typeof t?function(n){return t(n,e._element)}:t},n._getPopperConfig=function(e){var t=this,n={placement:e,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(e){return t._handlePopperPlacementChange(e)}}],onFirstUpdate:function(e){e.options.placement!==e.placement&&t._handlePopperPlacementChange(e)}};return _extends({},n,"function"==typeof this.config.popperConfig?this.config.popperConfig(n):this.config.popperConfig)},n._addAttachmentClass=function(e){this.getTipElement().classList.add(CLASS_PREFIX+"-"+this.updateAttachment(e))},n._getContainer=function(){return!1===this.config.container?document.body:isElement(this.config.container)?this.config.container:SelectorEngine.findOne(this.config.container)},n._getAttachment=function(e){return AttachmentMap[e.toUpperCase()]},n._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach((function(t){if("click"===t)EventHandler.on(e._element,e.constructor.Event.CLICK,e.config.selector,(function(t){return e.toggle(t)}));else if(t!==TRIGGER_MANUAL){var n=t===TRIGGER_HOVER?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,i=t===TRIGGER_HOVER?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;EventHandler.on(e._element,n,e.config.selector,(function(t){return e._enter(t)})),EventHandler.on(e._element,i,e.config.selector,(function(t){return e._leave(t)}))}})),this._hideModalHandler=function(){e._element&&e.hide()},EventHandler.on(this._element.closest("."+CLASS_NAME_MODAL),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=_extends({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},n._fixTitle=function(){var e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))},n._enter=function(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusin"===e.type?TRIGGER_FOCUS:TRIGGER_HOVER]=!0),t.getTipElement().classList.contains(CLASS_NAME_SHOW$4)||t._hoverState===HOVER_STATE_SHOW?t._hoverState=HOVER_STATE_SHOW:(clearTimeout(t._timeout),t._hoverState=HOVER_STATE_SHOW,t.config.delay&&t.config.delay.show?t._timeout=setTimeout((function(){t._hoverState===HOVER_STATE_SHOW&&t.show()}),t.config.delay.show):t.show())},n._leave=function(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusout"===e.type?TRIGGER_FOCUS:TRIGGER_HOVER]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=HOVER_STATE_OUT,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout((function(){t._hoverState===HOVER_STATE_OUT&&t.hide()}),t.config.delay.hide):t.hide())},n._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},n._getConfig=function(e){var t=Manipulator.getDataAttributes(this._element);return Object.keys(t).forEach((function(e){DISALLOWED_ATTRIBUTES.has(e)&&delete t[e]})),e&&"object"==typeof e.container&&e.container.jquery&&(e.container=e.container[0]),"number"==typeof(e=_extends({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),typeCheckConfig(NAME$6,e,this.constructor.DefaultType),e.sanitize&&(e.template=sanitizeHtml(e.template,e.allowList,e.sanitizeFn)),e},n._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},n._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(BSCLS_PREFIX_REGEX);null!==t&&t.length>0&&t.map((function(e){return e.trim()})).forEach((function(t){return e.classList.remove(t)}))},n._handlePopperPlacementChange=function(e){var t=e.state;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))},t.jQueryInterface=function(e){return this.each((function(){var n=Data.getData(this,DATA_KEY$6),i="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},_createClass(t,null,[{key:"Default",get:function(){return Default$4}},{key:"NAME",get:function(){return NAME$6}},{key:"DATA_KEY",get:function(){return DATA_KEY$6}},{key:"Event",get:function(){return Event$1}},{key:"EVENT_KEY",get:function(){return EVENT_KEY$6}},{key:"DefaultType",get:function(){return DefaultType$4}}]),t}(BaseComponent);defineJQueryPlugin(NAME$6,Tooltip);var NAME$7="popover",DATA_KEY$7="bs.popover",EVENT_KEY$7="."+DATA_KEY$7,CLASS_PREFIX$1="bs-popover",BSCLS_PREFIX_REGEX$1=new RegExp("(^|\\s)"+CLASS_PREFIX$1+"\\S+","g"),Default$5=_extends({},Tooltip.Default,{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),DefaultType$5=_extends({},Tooltip.DefaultType,{content:"(string|element|function)"}),Event$2={HIDE:"hide"+EVENT_KEY$7,HIDDEN:"hidden"+EVENT_KEY$7,SHOW:"show"+EVENT_KEY$7,SHOWN:"shown"+EVENT_KEY$7,INSERTED:"inserted"+EVENT_KEY$7,CLICK:"click"+EVENT_KEY$7,FOCUSIN:"focusin"+EVENT_KEY$7,FOCUSOUT:"focusout"+EVENT_KEY$7,MOUSEENTER:"mouseenter"+EVENT_KEY$7,MOUSELEAVE:"mouseleave"+EVENT_KEY$7},CLASS_NAME_FADE$3="fade",CLASS_NAME_SHOW$5="show",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",Popover=function(e){function t(){return e.apply(this,arguments)||this}_inheritsLoose(t,e);var n=t.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var e=this.getTipElement();this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE,e),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this._element)),this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT,e),t),e.classList.remove(CLASS_NAME_FADE$3,CLASS_NAME_SHOW$5)},n._addAttachmentClass=function(e){this.getTipElement().classList.add(CLASS_PREFIX$1+"-"+this.updateAttachment(e))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var e=this.getTipElement(),t=e.getAttribute("class").match(BSCLS_PREFIX_REGEX$1);null!==t&&t.length>0&&t.map((function(e){return e.trim()})).forEach((function(t){return e.classList.remove(t)}))},t.jQueryInterface=function(e){return this.each((function(){var n=Data.getData(this,DATA_KEY$7),i="object"==typeof e?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,i),Data.setData(this,DATA_KEY$7,n)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},_createClass(t,null,[{key:"Default",get:function(){return Default$5}},{key:"NAME",get:function(){return NAME$7}},{key:"DATA_KEY",get:function(){return DATA_KEY$7}},{key:"Event",get:function(){return Event$2}},{key:"EVENT_KEY",get:function(){return EVENT_KEY$7}},{key:"DefaultType",get:function(){return DefaultType$5}}]),t}(Tooltip);defineJQueryPlugin(NAME$7,Popover);var NAME$8="scrollspy",DATA_KEY$8="bs.scrollspy",EVENT_KEY$8="."+DATA_KEY$8,DATA_API_KEY$6=".data-api",Default$6={offset:10,method:"auto",target:""},DefaultType$6={offset:"number",method:"string",target:"(string|element)"},EVENT_ACTIVATE="activate"+EVENT_KEY$8,EVENT_SCROLL="scroll"+EVENT_KEY$8,EVENT_LOAD_DATA_API$1="load"+EVENT_KEY$8+DATA_API_KEY$6,CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$2="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_DROPDOWN=".dropdown",SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",METHOD_OFFSET="offset",METHOD_POSITION="position",ScrollSpy=function(e){function t(t,n){var i;return(i=e.call(this,t)||this)._scrollElement="BODY"===t.tagName?window:t,i._config=i._getConfig(n),i._selector=i._config.target+" "+SELECTOR_NAV_LINKS+", "+i._config.target+" "+SELECTOR_LIST_ITEMS+", "+i._config.target+" ."+CLASS_NAME_DROPDOWN_ITEM,i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,EventHandler.on(i._scrollElement,EVENT_SCROLL,(function(){return i._process()})),i.refresh(),i._process(),i}_inheritsLoose(t,e);var n=t.prototype;return n.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?METHOD_OFFSET:METHOD_POSITION,n="auto"===this._config.method?t:this._config.method,i=n===METHOD_POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),SelectorEngine.find(this._selector).map((function(e){var t=getSelectorFromElement(e),o=t?SelectorEngine.findOne(t):null;if(o){var r=o.getBoundingClientRect();if(r.width||r.height)return[Manipulator[n](o).top+i,t]}return null})).filter((function(e){return e})).sort((function(e,t){return e[0]-t[0]})).forEach((function(t){e._offsets.push(t[0]),e._targets.push(t[1])}))},n.dispose=function(){e.prototype.dispose.call(this),EventHandler.off(this._scrollElement,EVENT_KEY$8),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(e){if("string"!=typeof(e=_extends({},Default$6,"object"==typeof e&&e?e:{})).target&&isElement(e.target)){var t=e.target.id;t||(t=getUID(NAME$8),e.target.id=t),e.target="#"+t}return typeCheckConfig(NAME$8,e,DefaultType$6),e},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&e>=this._offsets[o]&&(void 0===this._offsets[o+1]||enull==e?""+e:{}.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n="#"+n.split("#")[1]),t=n&&"#"!==n?n.trim():null}return t},getSelectorFromElement=e=>{const t=getSelector(e);return t&&document.querySelector(t)?t:null},getElementFromSelector=e=>{const t=getSelector(e);return t?document.querySelector(t):null},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),s=Number.parseFloat(n);return i||s?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>(e[0]||e).nodeType,emulateTransitionEnd=(e,t)=>{let n=!1;const i=t+5;e.addEventListener(TRANSITION_END,(function t(){n=!0,e.removeEventListener(TRANSITION_END,t)})),setTimeout(()=>{n||triggerTransitionEnd(e)},i)},typeCheckConfig=(e,t,n)=>{Object.keys(n).forEach(i=>{const s=n[i],o=t[i],r=o&&isElement(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(s).test(r))throw new TypeError(e.toUpperCase()+": "+`Option "${i}" provided type "${r}" `+`but expected type "${s}".`)})},isVisible=e=>{if(!e)return!1;if(e.style&&e.parentNode&&e.parentNode.style){const t=getComputedStyle(e),n=getComputedStyle(e.parentNode);return"none"!==t.display&&"none"!==n.display&&"hidden"!==t.visibility}return!1},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>function(){},reflow=e=>e.offsetHeight,getjQuery=()=>{const{jQuery:e}=window;return e&&!document.body.hasAttribute("data-bs-no-jquery")?e:null},onDOMContentLoaded=e=>{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()},isRTL=()=>"rtl"===document.documentElement.dir,defineJQueryPlugin=(e,t)=>{var n;n=()=>{const n=getjQuery();if(n){const i=n.fn[e];n.fn[e]=t.jQueryInterface,n.fn[e].Constructor=t,n.fn[e].noConflict=()=>(n.fn[e]=i,t.jQueryInterface)}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n()},elementMap=new Map;var Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const i=elementMap.get(e);i.has(t)||0===i.size?i.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}};const namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function getUidEvent(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getEvent(e){const t=getUidEvent(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(i){return i.delegateTarget=e,n.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,n){return function i(s){const o=e.querySelectorAll(t);for(let{target:t}=s;t&&t!==this;t=t.parentNode)for(let r=o.length;r--;)if(o[r]===t)return s.delegateTarget=t,i.oneOff&&EventHandler.off(e,s.type,n),n.apply(t,[s]);return null}}function findHandler(e,t,n=null){const i=Object.keys(e);for(let s=0,o=i.length;s{if(o.includes(i)){const i=s[o];removeHandler(e,t,n,i.originalHandler,i.delegationSelector)}})}const EventHandler={on(e,t,n,i){addHandler(e,t,n,i,!1)},one(e,t,n,i){addHandler(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[s,o,r]=normalizeParams(t,n,i),a=r!==t,l=getEvent(e),c=t.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void removeHandler(e,l,r,o,s?n:null)}c&&Object.keys(l).forEach(n=>{removeNamespacedHandlers(e,l,n,t.slice(1))});const E=l[r]||{};Object.keys(E).forEach(n=>{const i=n.replace(stripUidRegex,"");if(!a||t.includes(i)){const t=E[n];removeHandler(e,l,r,t.originalHandler,t.delegationSelector)}})},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=getjQuery(),s=t.replace(stripNameRegex,""),o=t!==s,r=nativeEvents.has(s);let a,l=!0,c=!0,E=!1,d=null;return o&&i&&(a=i.Event(t,n),i(e).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),E=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(t,{bubbles:l,cancelable:!0}),void 0!==n&&Object.keys(n).forEach(e=>{Object.defineProperty(d,e,{get:()=>n[e]})}),E&&d.preventDefault(),c&&e.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},VERSION="5.0.0-beta3";class BaseComponent{constructor(e){(e="string"==typeof e?document.querySelector(e):e)&&(this._element=e,Data.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),this._element=null}static getInstance(e){return Data.get(e,this.DATA_KEY)}static get VERSION(){return VERSION}}const NAME$b="alert",DATA_KEY$b="bs.alert",EVENT_KEY$b=".bs.alert",DATA_API_KEY$8=".data-api",SELECTOR_DISMISS='[data-bs-dismiss="alert"]',EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",EVENT_CLICK_DATA_API$7="click.bs.alert.data-api",CLASS_NAME_ALERT="alert",CLASS_NAME_FADE$5="fade",CLASS_NAME_SHOW$8="show";class Alert extends BaseComponent{static get DATA_KEY(){return"bs.alert"}close(e){const t=e?this._getRootElement(e):this._element,n=this._triggerCloseEvent(t);null===n||n.defaultPrevented||this._removeElement(t)}_getRootElement(e){return getElementFromSelector(e)||e.closest(".alert")}_triggerCloseEvent(e){return EventHandler.trigger(e,EVENT_CLOSE)}_removeElement(e){if(e.classList.remove("show"),!e.classList.contains("fade"))return void this._destroyElement(e);const t=getTransitionDurationFromElement(e);EventHandler.one(e,"transitionend",()=>this._destroyElement(e)),emulateTransitionEnd(e,t)}_destroyElement(e){e.parentNode&&e.parentNode.removeChild(e),EventHandler.trigger(e,EVENT_CLOSED)}static jQueryInterface(e){return this.each((function(){let t=Data.get(this,"bs.alert");t||(t=new Alert(this)),"close"===e&&t[e](this)}))}static handleDismiss(e){return function(t){t&&t.preventDefault(),e.close(this)}}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DISMISS,Alert.handleDismiss(new Alert)),defineJQueryPlugin(NAME$b,Alert);const NAME$a="button",DATA_KEY$a="bs.button",EVENT_KEY$a=".bs.button",DATA_API_KEY$7=".data-api",CLASS_NAME_ACTIVE$3="active",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$6="click.bs.button.data-api";class Button extends BaseComponent{static get DATA_KEY(){return DATA_KEY$a}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each((function(){let t=Data.get(this,DATA_KEY$a);t||(t=new Button(this)),"toggle"===e&&t[e]()}))}}function normalizeData(e){return"true"===e||"false"!==e&&(e===Number(e).toString()?Number(e):""===e||"null"===e?null:e)}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$5,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$5);let n=Data.get(t,DATA_KEY$a);n||(n=new Button(t)),n.toggle()}),defineJQueryPlugin(NAME$a,Button);const Manipulator={setDataAttribute(e,t,n){e.setAttribute("data-bs-"+normalizeDataKey(t),n)},removeDataAttribute(e,t){e.removeAttribute("data-bs-"+normalizeDataKey(t))},getDataAttributes(e){if(!e)return{};const t={};return Object.keys(e.dataset).filter(e=>e.startsWith("bs")).forEach(n=>{let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),t[i]=normalizeData(e.dataset[n])}),t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute("data-bs-"+normalizeDataKey(t))),offset(e){const t=e.getBoundingClientRect();return{top:t.top+document.body.scrollTop,left:t.left+document.body.scrollLeft}},position:e=>({top:e.offsetTop,left:e.offsetLeft})},NODE_TEXT=3,SelectorEngine={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const n=[];let i=e.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(t)&&n.push(i),i=i.parentNode;return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]}},NAME$9="carousel",DATA_KEY$9="bs.carousel",EVENT_KEY$9=".bs.carousel",DATA_API_KEY$6=".data-api",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",TOUCHEVENT_COMPAT_WAIT=500,SWIPE_THRESHOLD=40,Default$8={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},DefaultType$8={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},ORDER_NEXT="next",ORDER_PREV="prev",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE="slide.bs.carousel",EVENT_SLID="slid.bs.carousel",EVENT_KEYDOWN="keydown.bs.carousel",EVENT_MOUSEENTER="mouseenter.bs.carousel",EVENT_MOUSELEAVE="mouseleave.bs.carousel",EVENT_TOUCHSTART="touchstart.bs.carousel",EVENT_TOUCHMOVE="touchmove.bs.carousel",EVENT_TOUCHEND="touchend.bs.carousel",EVENT_POINTERDOWN="pointerdown.bs.carousel",EVENT_POINTERUP="pointerup.bs.carousel",EVENT_DRAG_START="dragstart.bs.carousel",EVENT_LOAD_DATA_API$2="load.bs.carousel.data-api",EVENT_CLICK_DATA_API$5="click.bs.carousel.data-api",CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$2="active",CLASS_NAME_SLIDE="slide",CLASS_NAME_END="carousel-item-end",CLASS_NAME_START="carousel-item-start",CLASS_NAME_NEXT="carousel-item-next",CLASS_NAME_PREV="carousel-item-prev",CLASS_NAME_POINTER_EVENT="pointer-event",SELECTOR_ACTIVE$1=".active",SELECTOR_ACTIVE_ITEM=".active.carousel-item",SELECTOR_ITEM=".carousel-item",SELECTOR_ITEM_IMG=".carousel-item img",SELECTOR_NEXT_PREV=".carousel-item-next, .carousel-item-prev",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_INDICATOR="[data-bs-target]",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_RIDE='[data-bs-ride="carousel"]',POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen";class Carousel extends BaseComponent{constructor(e,t){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return Default$8}static get DATA_KEY(){return DATA_KEY$9}next(){this._isSliding||this._slide(ORDER_NEXT)}nextWhenVisible(){!document.hidden&&isVisible(this._element)&&this.next()}prev(){this._isSliding||this._slide(ORDER_PREV)}pause(e){e||(this._isPaused=!0),SelectorEngine.findOne(SELECTOR_NEXT_PREV,this._element)&&(triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element);const t=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void EventHandler.one(this._element,EVENT_SLID,()=>this.to(e));if(t===e)return this.pause(),void this.cycle();const n=e>t?ORDER_NEXT:ORDER_PREV;this._slide(n,this._items[e])}dispose(){EventHandler.off(this._element,EVENT_KEY$9),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null,super.dispose()}_getConfig(e){return e={...Default$8,...e},typeCheckConfig(NAME$9,e,DefaultType$8),e}_handleSwipe(){const e=Math.abs(this.touchDeltaX);if(e<=40)return;const t=e/this.touchDeltaX;this.touchDeltaX=0,t&&this._slide(t>0?DIRECTION_RIGHT:DIRECTION_LEFT)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER,e=>this.pause(e)),EventHandler.on(this._element,EVENT_MOUSELEAVE,e=>this.cycle(e))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=e=>{!this._pointerEvent||"pen"!==e.pointerType&&"touch"!==e.pointerType?this._pointerEvent||(this.touchStartX=e.touches[0].clientX):this.touchStartX=e.clientX},t=e=>{this.touchDeltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this.touchStartX},n=e=>{!this._pointerEvent||"pen"!==e.pointerType&&"touch"!==e.pointerType||(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(e=>this.cycle(e),500+this._config.interval))};SelectorEngine.find(SELECTOR_ITEM_IMG,this._element).forEach(e=>{EventHandler.on(e,EVENT_DRAG_START,e=>e.preventDefault())}),this._pointerEvent?(EventHandler.on(this._element,EVENT_POINTERDOWN,t=>e(t)),EventHandler.on(this._element,EVENT_POINTERUP,e=>n(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,t=>e(t)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>t(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>n(e)))}_keydown(e){/input|textarea/i.test(e.target.tagName)||("ArrowLeft"===e.key?(e.preventDefault(),this._slide(DIRECTION_LEFT)):"ArrowRight"===e.key&&(e.preventDefault(),this._slide(DIRECTION_RIGHT)))}_getItemIndex(e){return this._items=e&&e.parentNode?SelectorEngine.find(SELECTOR_ITEM,e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(e,t){const n=e===ORDER_NEXT,i=e===ORDER_PREV,s=this._getItemIndex(t),o=this._items.length-1;if((i&&0===s||n&&s===o)&&!this._config.wrap)return t;const r=(s+(i?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]}_triggerSlideEvent(e,t){const n=this._getItemIndex(e),i=this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element));return EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:e,direction:t,from:i,to:n})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const t=SelectorEngine.findOne(".active",this._indicatorsElement);t.classList.remove("active"),t.removeAttribute("aria-current");const n=SelectorEngine.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t{o.classList.remove(c,E),o.classList.add("active"),i.classList.remove("active",E,c),this._isSliding=!1,setTimeout(()=>{EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:o,direction:d,from:s,to:r})},0)}),emulateTransitionEnd(i,e)}else i.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:o,direction:d,from:s,to:r});a&&this.cycle()}}_directionToOrder(e){return[DIRECTION_RIGHT,DIRECTION_LEFT].includes(e)?isRTL()?e===DIRECTION_RIGHT?ORDER_PREV:ORDER_NEXT:e===DIRECTION_RIGHT?ORDER_NEXT:ORDER_PREV:e}_orderToDirection(e){return[ORDER_NEXT,ORDER_PREV].includes(e)?isRTL()?e===ORDER_NEXT?DIRECTION_LEFT:DIRECTION_RIGHT:e===ORDER_NEXT?DIRECTION_RIGHT:DIRECTION_LEFT:e}static carouselInterface(e,t){let n=Data.get(e,DATA_KEY$9),i={...Default$8,...Manipulator.getDataAttributes(e)};"object"==typeof t&&(i={...i,...t});const s="string"==typeof t?t:i.slide;if(n||(n=new Carousel(e,i)),"number"==typeof t)n.to(t);else if("string"==typeof s){if(void 0===n[s])throw new TypeError(`No method named "${s}"`);n[s]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}static jQueryInterface(e){return this.each((function(){Carousel.carouselInterface(this,e)}))}static dataApiClickHandler(e){const t=getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;const n={...Manipulator.getDataAttributes(t),...Manipulator.getDataAttributes(this)},i=this.getAttribute("data-bs-slide-to");i&&(n.interval=!1),Carousel.carouselInterface(t,n),i&&Data.get(t,DATA_KEY$9).to(i),e.preventDefault()}}EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_SLIDE,Carousel.dataApiClickHandler),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{const e=SelectorEngine.find(SELECTOR_DATA_RIDE);for(let t=0,n=e.length;te===this._element);null!==i&&s.length&&(this._selector=i,this._triggerArray.push(t))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return Default$7}static get DATA_KEY(){return DATA_KEY$8}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let e,t;this._parent&&(e=SelectorEngine.find(SELECTOR_ACTIVES,this._parent).filter(e=>"string"==typeof this._config.parent?e.getAttribute("data-bs-parent")===this._config.parent:e.classList.contains("collapse")),0===e.length&&(e=null));const n=SelectorEngine.findOne(this._selector);if(e){const i=e.find(e=>n!==e);if(t=i?Data.get(i,DATA_KEY$8):null,t&&t._isTransitioning)return}if(EventHandler.trigger(this._element,EVENT_SHOW$5).defaultPrevented)return;e&&e.forEach(e=>{n!==e&&Collapse.collapseInterface(e,"hide"),t||Data.set(e,DATA_KEY$8,null)});const i=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[i]=0,this._triggerArray.length&&this._triggerArray.forEach(e=>{e.classList.remove("collapsed"),e.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const s="scroll"+(i[0].toUpperCase()+i.slice(1)),o=getTransitionDurationFromElement(this._element);EventHandler.one(this._element,"transitionend",()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[i]="",this.setTransitioning(!1),EventHandler.trigger(this._element,EVENT_SHOWN$5)}),emulateTransitionEnd(this._element,o),this._element.style[i]=this._element[s]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(EventHandler.trigger(this._element,EVENT_HIDE$5).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=this._element.getBoundingClientRect()[e]+"px",reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const t=this._triggerArray.length;if(t>0)for(let e=0;e{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$5)}),emulateTransitionEnd(this._element,n)}setTransitioning(e){this._isTransitioning=e}dispose(){super.dispose(),this._config=null,this._parent=null,this._triggerArray=null,this._isTransitioning=null}_getConfig(e){return(e={...Default$7,...e}).toggle=Boolean(e.toggle),typeCheckConfig(NAME$8,e,DefaultType$7),e}_getDimension(){return this._element.classList.contains(WIDTH)?WIDTH:HEIGHT}_getParent(){let{parent:e}=this._config;isElement(e)?void 0===e.jquery&&void 0===e[0]||(e=e[0]):e=SelectorEngine.findOne(e);const t=`${SELECTOR_DATA_TOGGLE$4}[data-bs-parent="${e}"]`;return SelectorEngine.find(t,e).forEach(e=>{const t=getElementFromSelector(e);this._addAriaAndCollapsedClass(t,[e])}),e}_addAriaAndCollapsedClass(e,t){if(!e||!t.length)return;const n=e.classList.contains("show");t.forEach(e=>{n?e.classList.remove("collapsed"):e.classList.add("collapsed"),e.setAttribute("aria-expanded",n)})}static collapseInterface(e,t){let n=Data.get(e,DATA_KEY$8);const i={...Default$7,...Manipulator.getDataAttributes(e),..."object"==typeof t&&t?t:{}};if(!n&&i.toggle&&"string"==typeof t&&/show|hide/.test(t)&&(i.toggle=!1),n||(n=new Collapse(e,i)),"string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}static jQueryInterface(e){return this.each((function(){Collapse.collapseInterface(this,e)}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$4,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const t=Manipulator.getDataAttributes(this),n=getSelectorFromElement(this);SelectorEngine.find(n).forEach(e=>{const n=Data.get(e,DATA_KEY$8);let i;n?(null===n._parent&&"string"==typeof t.parent&&(n._config.parent=t.parent,n._parent=n._getParent()),i="toggle"):i=t,Collapse.collapseInterface(e,i)})})),defineJQueryPlugin(NAME$8,Collapse);const NAME$7="dropdown",DATA_KEY$7="bs.dropdown",EVENT_KEY$7=".bs.dropdown",DATA_API_KEY$4=".data-api",ESCAPE_KEY$2="Escape",SPACE_KEY="Space",TAB_KEY="Tab",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",RIGHT_MOUSE_BUTTON=2,REGEXP_KEYDOWN=new RegExp("ArrowUp|ArrowDown|Escape"),EVENT_HIDE$4="hide.bs.dropdown",EVENT_HIDDEN$4="hidden.bs.dropdown",EVENT_SHOW$4="show.bs.dropdown",EVENT_SHOWN$4="shown.bs.dropdown",EVENT_CLICK="click.bs.dropdown",EVENT_CLICK_DATA_API$3="click.bs.dropdown.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.dropdown.data-api",EVENT_KEYUP_DATA_API="keyup.bs.dropdown.data-api",CLASS_NAME_DISABLED="disabled",CLASS_NAME_SHOW$6="show",CLASS_NAME_DROPUP="dropup",CLASS_NAME_DROPEND="dropend",CLASS_NAME_DROPSTART="dropstart",CLASS_NAME_NAVBAR="navbar",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="dropdown"]',SELECTOR_MENU=".dropdown-menu",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",PLACEMENT_TOP=isRTL()?"top-end":"top-start",PLACEMENT_TOPEND=isRTL()?"top-start":"top-end",PLACEMENT_BOTTOM=isRTL()?"bottom-end":"bottom-start",PLACEMENT_BOTTOMEND=isRTL()?"bottom-start":"bottom-end",PLACEMENT_RIGHT=isRTL()?"left-start":"right-start",PLACEMENT_LEFT=isRTL()?"right-start":"left-start",Default$6={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null},DefaultType$6={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)"};class Dropdown extends BaseComponent{constructor(e,t){super(e),this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get DATA_KEY(){return DATA_KEY$7}toggle(){if(this._element.disabled||this._element.classList.contains("disabled"))return;const e=this._element.classList.contains("show");Dropdown.clearMenus(),e||this.show()}show(){if(this._element.disabled||this._element.classList.contains("disabled")||this._menu.classList.contains("show"))return;const e=Dropdown.getParentFromElement(this._element),t={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$4,t).defaultPrevented){if(this._inNavbar)Manipulator.setDataAttribute(this._menu,"popper","none");else{if(void 0===Popper)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=e:isElement(this._config.reference)?(t=this._config.reference,void 0!==this._config.reference.jquery&&(t=this._config.reference[0])):"object"==typeof this._config.reference&&(t=this._config.reference);const n=this._getPopperConfig(),i=n.modifiers.find(e=>"applyStyles"===e.name&&!1===e.enabled);this._popper=Popper.createPopper(t,this._menu,n),i&&Manipulator.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!e.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(e=>EventHandler.on(e,"mouseover",null,(function(){}))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),EventHandler.trigger(this._element,EVENT_SHOWN$4,t)}}hide(){if(this._element.disabled||this._element.classList.contains("disabled")||!this._menu.classList.contains("show"))return;const e={relatedTarget:this._element};EventHandler.trigger(this._element,EVENT_HIDE$4,e).defaultPrevented||(this._popper&&this._popper.destroy(),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),Manipulator.removeDataAttribute(this._menu,"popper"),EventHandler.trigger(this._element,EVENT_HIDDEN$4,e))}dispose(){EventHandler.off(this._element,EVENT_KEY$7),this._menu=null,this._popper&&(this._popper.destroy(),this._popper=null),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){EventHandler.on(this._element,EVENT_CLICK,e=>{e.preventDefault(),this.toggle()})}_getConfig(e){if(e={...this.constructor.Default,...Manipulator.getDataAttributes(this._element),...e},typeCheckConfig(NAME$7,e,this.constructor.DefaultType),"object"==typeof e.reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(NAME$7.toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return e}_getMenuElement(){return SelectorEngine.next(this._element,SELECTOR_MENU)[0]}_getPlacement(){const e=this._element.parentNode;if(e.classList.contains("dropend"))return PLACEMENT_RIGHT;if(e.classList.contains("dropstart"))return PLACEMENT_LEFT;const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?PLACEMENT_TOPEND:PLACEMENT_TOP:t?PLACEMENT_BOTTOMEND:PLACEMENT_BOTTOM}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}static dropdownInterface(e,t){let n=Data.get(e,DATA_KEY$7);if(n||(n=new Dropdown(e,"object"==typeof t?t:null)),"string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}static jQueryInterface(e){return this.each((function(){Dropdown.dropdownInterface(this,e)}))}static clearMenus(e){if(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;if(/input|select|textarea|form/i.test(e.target.tagName))return}const t=SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);for(let n=0,i=t.length;ne.composedPath().includes(t)))continue;if("keyup"===e.type&&"Tab"===e.key&&o.contains(e.target))continue}EventHandler.trigger(t[n],EVENT_HIDE$4,s).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(e=>EventHandler.off(e,"mouseover",null,(function(){}))),t[n].setAttribute("aria-expanded","false"),i._popper&&i._popper.destroy(),o.classList.remove("show"),t[n].classList.remove("show"),Manipulator.removeDataAttribute(o,"popper"),EventHandler.trigger(t[n],EVENT_HIDDEN$4,s))}}}static getParentFromElement(e){return getElementFromSelector(e)||e.parentNode}static dataApiKeydownHandler(e){if(/input|textarea/i.test(e.target.tagName)?"Space"===e.key||"Escape"!==e.key&&("ArrowDown"!==e.key&&"ArrowUp"!==e.key||e.target.closest(SELECTOR_MENU)):!REGEXP_KEYDOWN.test(e.key))return;if(e.preventDefault(),e.stopPropagation(),this.disabled||this.classList.contains("disabled"))return;const t=Dropdown.getParentFromElement(this),n=this.classList.contains("show");if("Escape"===e.key)return(this.matches(SELECTOR_DATA_TOGGLE$3)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$3)[0]).focus(),void Dropdown.clearMenus();if(!n&&("ArrowUp"===e.key||"ArrowDown"===e.key))return void(this.matches(SELECTOR_DATA_TOGGLE$3)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$3)[0]).click();if(!n||"Space"===e.key)return void Dropdown.clearMenus();const i=SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,t).filter(isVisible);if(!i.length)return;let s=i.indexOf(e.target);"ArrowUp"===e.key&&s>0&&s--,"ArrowDown"===e.key&&sthis.hide(e)),EventHandler.on(this._dialog,EVENT_MOUSEDOWN_DISMISS,()=>{EventHandler.one(this._element,EVENT_MOUSEUP_DISMISS,e=>{e.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(e)))}hide(e){if(e&&e.preventDefault(),!this._isShown||this._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented)return;this._isShown=!1;const t=this._isAnimated();if(t&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),EventHandler.off(document,EVENT_FOCUSIN$1),this._element.classList.remove("show"),EventHandler.off(this._element,EVENT_CLICK_DISMISS$2),EventHandler.off(this._dialog,EVENT_MOUSEDOWN_DISMISS),t){const e=getTransitionDurationFromElement(this._element);EventHandler.one(this._element,"transitionend",e=>this._hideModal(e)),emulateTransitionEnd(this._element,e)}else this._hideModal()}dispose(){[window,this._element,this._dialog].forEach(e=>EventHandler.off(e,".bs.modal")),super.dispose(),EventHandler.off(document,EVENT_FOCUSIN$1),this._config=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null}handleUpdate(){this._adjustDialog()}_getConfig(e){return e={...Default$5,...e},typeCheckConfig(NAME$6,e,DefaultType$5),e}_showElement(e){const t=this._isAnimated(),n=SelectorEngine.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,n&&(n.scrollTop=0),t&&reflow(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus();const i=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,EventHandler.trigger(this._element,EVENT_SHOWN$3,{relatedTarget:e})};if(t){const e=getTransitionDurationFromElement(this._dialog);EventHandler.one(this._dialog,"transitionend",i),emulateTransitionEnd(this._dialog,e)}else i()}_enforceFocus(){EventHandler.off(document,EVENT_FOCUSIN$1),EventHandler.on(document,EVENT_FOCUSIN$1,e=>{document===e.target||this._element===e.target||this._element.contains(e.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?EventHandler.on(this._element,EVENT_KEYDOWN_DISMISS,e=>{this._config.keyboard&&"Escape"===e.key?(e.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==e.key||this._triggerBackdropTransition()}):EventHandler.off(this._element,EVENT_KEYDOWN_DISMISS)}_setResizeEvent(){this._isShown?EventHandler.on(window,EVENT_RESIZE,()=>this._adjustDialog()):EventHandler.off(window,EVENT_RESIZE)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._resetScrollbar(),EventHandler.trigger(this._element,EVENT_HIDDEN$3)})}_removeBackdrop(){this._backdrop.parentNode.removeChild(this._backdrop),this._backdrop=null}_showBackdrop(e){const t=this._isAnimated();if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",t&&this._backdrop.classList.add("fade"),document.body.appendChild(this._backdrop),EventHandler.on(this._element,EVENT_CLICK_DISMISS$2,e=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:e.target===e.currentTarget&&("static"===this._config.backdrop?this._triggerBackdropTransition():this.hide())}),t&&reflow(this._backdrop),this._backdrop.classList.add("show"),!t)return void e();const n=getTransitionDurationFromElement(this._backdrop);EventHandler.one(this._backdrop,"transitionend",e),emulateTransitionEnd(this._backdrop,n)}else if(!this._isShown&&this._backdrop){this._backdrop.classList.remove("show");const n=()=>{this._removeBackdrop(),e()};if(t){const e=getTransitionDurationFromElement(this._backdrop);EventHandler.one(this._backdrop,"transitionend",n),emulateTransitionEnd(this._backdrop,e)}else n()}else e()}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,EVENT_HIDE_PREVENTED).defaultPrevented)return;const e=this._element.scrollHeight>document.documentElement.clientHeight;e||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");const t=getTransitionDurationFromElement(this._dialog);EventHandler.off(this._element,"transitionend"),EventHandler.one(this._element,"transitionend",()=>{this._element.classList.remove("modal-static"),e||(EventHandler.one(this._element,"transitionend",()=>{this._element.style.overflowY=""}),emulateTransitionEnd(this._element,t))}),emulateTransitionEnd(this._element,t),this._element.focus()}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&e&&!isRTL()||this._isBodyOverflowing&&!e&&isRTL())&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!e&&!isRTL()||!this._isBodyOverflowing&&e&&isRTL())&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_checkScrollbar(){const e=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(e.left+e.right)e+this._scrollbarWidth),this._setElementAttributes(".sticky-top","marginRight",e=>e-this._scrollbarWidth),this._setElementAttributes("body","paddingRight",e=>e+this._scrollbarWidth)),document.body.classList.add("modal-open")}_setElementAttributes(e,t,n){SelectorEngine.find(e).forEach(e=>{if(e!==document.body&&window.innerWidth>e.clientWidth+this._scrollbarWidth)return;const i=e.style[t],s=window.getComputedStyle(e)[t];Manipulator.setDataAttribute(e,t,i),e.style[t]=n(Number.parseFloat(s))+"px"})}_resetScrollbar(){this._resetElementAttributes(SELECTOR_FIXED_CONTENT$1,"paddingRight"),this._resetElementAttributes(".sticky-top","marginRight"),this._resetElementAttributes("body","paddingRight")}_resetElementAttributes(e,t){SelectorEngine.find(e).forEach(e=>{const n=Manipulator.getDataAttribute(e,t);void 0===n&&e===document.body?e.style[t]="":(Manipulator.removeDataAttribute(e,t),e.style[t]=n)})}_getScrollbarWidth(){const e=document.createElement("div");e.className="modal-scrollbar-measure",document.body.appendChild(e);const t=e.getBoundingClientRect().width-e.clientWidth;return document.body.removeChild(e),t}static jQueryInterface(e,t){return this.each((function(){let n=Data.get(this,"bs.modal");const i={...Default$5,...Manipulator.getDataAttributes(this),..."object"==typeof e&&e?e:{}};if(n||(n=new Modal(this,i)),"string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e](t)}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$2,(function(e){const t=getElementFromSelector(this);"A"!==this.tagName&&"AREA"!==this.tagName||e.preventDefault(),EventHandler.one(t,EVENT_SHOW$3,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus()})});let n=Data.get(t,"bs.modal");if(!n){const e={...Manipulator.getDataAttributes(t),...Manipulator.getDataAttributes(this)};n=new Modal(t,e)}n.toggle(this)})),defineJQueryPlugin(NAME$6,Modal);const SELECTOR_FIXED_CONTENT=".fixed-top, .fixed-bottom, .is-fixed",SELECTOR_STICKY_CONTENT=".sticky-top",getWidth=()=>{const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)},hide=(e=getWidth())=>{document.body.style.overflow="hidden",_setElementAttributes(SELECTOR_FIXED_CONTENT,"paddingRight",t=>t+e),_setElementAttributes(".sticky-top","marginRight",t=>t-e),_setElementAttributes("body","paddingRight",t=>t+e)},_setElementAttributes=(e,t,n)=>{const i=getWidth();SelectorEngine.find(e).forEach(e=>{if(e!==document.body&&window.innerWidth>e.clientWidth+i)return;const s=e.style[t],o=window.getComputedStyle(e)[t];Manipulator.setDataAttribute(e,t,s),e.style[t]=n(Number.parseFloat(o))+"px"})},reset=()=>{document.body.style.overflow="auto",_resetElementAttributes(SELECTOR_FIXED_CONTENT,"paddingRight"),_resetElementAttributes(".sticky-top","marginRight"),_resetElementAttributes("body","paddingRight")},_resetElementAttributes=(e,t)=>{SelectorEngine.find(e).forEach(e=>{const n=Manipulator.getDataAttribute(e,t);void 0===n&&e===document.body?e.style.removeProperty(t):(Manipulator.removeDataAttribute(e,t),e.style[t]=n)})},NAME$5="offcanvas",DATA_KEY$5="bs.offcanvas",EVENT_KEY$5=".bs.offcanvas",DATA_API_KEY$2=".data-api",EVENT_LOAD_DATA_API$1="load.bs.offcanvas.data-api",ESCAPE_KEY="Escape",Default$4={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$4={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},CLASS_NAME_BACKDROP_BODY="offcanvas-backdrop",CLASS_NAME_SHOW$4="show",CLASS_NAME_TOGGLING="offcanvas-toggling",OPEN_SELECTOR=".offcanvas.show",ACTIVE_SELECTOR=".offcanvas.show, .offcanvas-toggling",EVENT_SHOW$2="show.bs.offcanvas",EVENT_SHOWN$2="shown.bs.offcanvas",EVENT_HIDE$2="hide.bs.offcanvas",EVENT_HIDDEN$2="hidden.bs.offcanvas",EVENT_FOCUSIN="focusin.bs.offcanvas",EVENT_CLICK_DATA_API$1="click.bs.offcanvas.data-api",EVENT_CLICK_DISMISS$1="click.dismiss.bs.offcanvas",SELECTOR_DATA_DISMISS$1='[data-bs-dismiss="offcanvas"]',SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="offcanvas"]';class Offcanvas extends BaseComponent{constructor(e,t){super(e),this._config=this._getConfig(t),this._isShown=!1,this._addEventListeners()}static get Default(){return Default$4}static get DATA_KEY(){return DATA_KEY$5}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$2,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._config.backdrop&&document.body.classList.add("offcanvas-backdrop"),this._config.scroll||hide(),this._element.classList.add(CLASS_NAME_TOGGLING),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),setTimeout(()=>{this._element.classList.remove(CLASS_NAME_TOGGLING),EventHandler.trigger(this._element,EVENT_SHOWN$2,{relatedTarget:e}),this._enforceFocusOnElement(this._element)},getTransitionDurationFromElement(this._element)))}hide(){this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$2).defaultPrevented||(this._element.classList.add(CLASS_NAME_TOGGLING),EventHandler.off(document,EVENT_FOCUSIN),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),setTimeout(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.backdrop&&document.body.classList.remove("offcanvas-backdrop"),this._config.scroll||(document.body.style.overflow="auto",_resetElementAttributes(SELECTOR_FIXED_CONTENT,"paddingRight"),_resetElementAttributes(".sticky-top","marginRight"),_resetElementAttributes("body","paddingRight")),EventHandler.trigger(this._element,EVENT_HIDDEN$2),this._element.classList.remove(CLASS_NAME_TOGGLING)},getTransitionDurationFromElement(this._element))))}_getConfig(e){return e={...Default$4,...Manipulator.getDataAttributes(this._element),..."object"==typeof e?e:{}},typeCheckConfig(NAME$5,e,DefaultType$4),e}_enforceFocusOnElement(e){EventHandler.off(document,EVENT_FOCUSIN),EventHandler.on(document,EVENT_FOCUSIN,t=>{document===t.target||e===t.target||e.contains(t.target)||e.focus()}),e.focus()}_addEventListeners(){EventHandler.on(this._element,EVENT_CLICK_DISMISS$1,SELECTOR_DATA_DISMISS$1,()=>this.hide()),EventHandler.on(document,"keydown",e=>{this._config.keyboard&&"Escape"===e.key&&this.hide()}),EventHandler.on(document,EVENT_CLICK_DATA_API$1,e=>{const t=SelectorEngine.findOne(getSelectorFromElement(e.target));this._element.contains(e.target)||t===this._element||this.hide()})}static jQueryInterface(e){return this.each((function(){const t=Data.get(this,DATA_KEY$5)||new Offcanvas(this,"object"==typeof e?e:{});if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$1,(function(e){const t=getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$2,()=>{isVisible(this)&&this.focus()});const n=SelectorEngine.findOne(ACTIVE_SELECTOR);n&&n!==t||(Data.get(t,DATA_KEY$5)||new Offcanvas(t)).toggle(this)})),EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{SelectorEngine.find(OPEN_SELECTOR).forEach(e=>(Data.get(e,DATA_KEY$5)||new Offcanvas(e)).show())}),defineJQueryPlugin(NAME$5,Offcanvas);const uriAttrs=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,SAFE_URL_PATTERN=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,DATA_URL_PATTERN=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();if(t.includes(n))return!uriAttrs.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)||DATA_URL_PATTERN.test(e.nodeValue));const i=t.filter(e=>e instanceof RegExp);for(let e=0,t=i.length;e{allowedAttribute(e,a)||n.removeAttribute(e.nodeName)})}return i.body.innerHTML}const NAME$4="tooltip",DATA_KEY$4="bs.tooltip",EVENT_KEY$4=".bs.tooltip",CLASS_PREFIX$1="bs-tooltip",BSCLS_PREFIX_REGEX$1=new RegExp("(^|\\s)bs-tooltip\\S+","g"),DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),DefaultType$3={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$3={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:DefaultAllowlist,popperConfig:null},Event$2={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},CLASS_NAME_FADE$3="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$3="show",HOVER_STATE_SHOW="show",HOVER_STATE_OUT="out",SELECTOR_TOOLTIP_INNER=".tooltip-inner",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual";class Tooltip extends BaseComponent{constructor(e,t){if(void 0===Popper)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.config=this._getConfig(t),this.tip=null,this._setListeners()}static get Default(){return Default$3}static get NAME(){return NAME$4}static get DATA_KEY(){return DATA_KEY$4}static get Event(){return Event$2}static get EVENT_KEY(){return EVENT_KEY$4}static get DefaultType(){return DefaultType$3}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(this._isEnabled)if(e){const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter(null,t):t._leave(null,t)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),EventHandler.off(this._element,this.constructor.EVENT_KEY),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.Event.SHOW),t=findShadowRoot(this._element),n=null===t?this._element.ownerDocument.documentElement.contains(this._element):t.contains(this._element);if(e.defaultPrevented||!n)return;const i=this.getTipElement(),s=getUID(this.constructor.NAME);i.setAttribute("id",s),this._element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&i.classList.add("fade");const o="function"==typeof this.config.placement?this.config.placement.call(this,i,this._element):this.config.placement,r=this._getAttachment(o);this._addAttachmentClass(r);const a=this._getContainer();Data.set(i,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(a.appendChild(i),EventHandler.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=Popper.createPopper(this._element,i,this._getPopperConfig(r)),i.classList.add("show");const l="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;l&&i.classList.add(...l.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(e=>{EventHandler.on(e,"mouseover",(function(){}))});const c=()=>{const e=this._hoverState;this._hoverState=null,EventHandler.trigger(this._element,this.constructor.Event.SHOWN),"out"===e&&this._leave(null,this)};if(this.tip.classList.contains("fade")){const e=getTransitionDurationFromElement(this.tip);EventHandler.one(this.tip,"transitionend",c),emulateTransitionEnd(this.tip,e)}else c()}hide(){if(!this._popper)return;const e=this.getTipElement(),t=()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&e.parentNode&&e.parentNode.removeChild(e),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(!EventHandler.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){if(e.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(e=>EventHandler.off(e,"mouseover",noop)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){const n=getTransitionDurationFromElement(e);EventHandler.one(e,"transitionend",t),emulateTransitionEnd(e,n)}else t();this._hoverState=""}}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const e=document.createElement("div");return e.innerHTML=this.config.template,this.tip=e.children[0],this.tip}setContent(){const e=this.getTipElement();this.setElementContent(SelectorEngine.findOne(".tooltip-inner",e),this.getTitle()),e.classList.remove("fade","show")}setElementContent(e,t){if(null!==e)return"object"==typeof t&&isElement(t)?(t.jquery&&(t=t[0]),void(this.config.html?t.parentNode!==e&&(e.innerHTML="",e.appendChild(t)):e.textContent=t.textContent)):void(this.config.html?(this.config.sanitize&&(t=sanitizeHtml(t,this.config.allowList,this.config.sanitizeFn)),e.innerHTML=t):e.textContent=t)}getTitle(){let e=this._element.getAttribute("data-bs-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),e}updateAttachment(e){return"right"===e?"end":"left"===e?"start":e}_initializeOnDelegatedTarget(e,t){const n=this.constructor.DATA_KEY;return(t=t||Data.get(e.delegateTarget,n))||(t=new this.constructor(e.delegateTarget,this._getDelegateConfig()),Data.set(e.delegateTarget,n,t)),t}_getOffset(){const{offset:e}=this.config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:e=>this._handlePopperPlacementChange(e)}],onFirstUpdate:e=>{e.options.placement!==e.placement&&this._handlePopperPlacementChange(e)}};return{...t,..."function"==typeof this.config.popperConfig?this.config.popperConfig(t):this.config.popperConfig}}_addAttachmentClass(e){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(e))}_getContainer(){return!1===this.config.container?document.body:isElement(this.config.container)?this.config.container:SelectorEngine.findOne(this.config.container)}_getAttachment(e){return AttachmentMap[e.toUpperCase()]}_setListeners(){this.config.trigger.split(" ").forEach(e=>{if("click"===e)EventHandler.on(this._element,this.constructor.Event.CLICK,this.config.selector,e=>this.toggle(e));else if("manual"!==e){const t="hover"===e?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,n="hover"===e?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;EventHandler.on(this._element,t,this.config.selector,e=>this._enter(e)),EventHandler.on(this._element,n,this.config.selector,e=>this._leave(e))}}),this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config={...this.config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))}_enter(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0),t.getTipElement().classList.contains("show")||"show"===t._hoverState?t._hoverState="show":(clearTimeout(t._timeout),t._hoverState="show",t.config.delay&&t.config.delay.show?t._timeout=setTimeout(()=>{"show"===t._hoverState&&t.show()},t.config.delay.show):t.show())}_leave(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget)),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState="out",t.config.delay&&t.config.delay.hide?t._timeout=setTimeout(()=>{"out"===t._hoverState&&t.hide()},t.config.delay.hide):t.hide())}_isWithActiveTrigger(){for(const e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);return Object.keys(t).forEach(e=>{DISALLOWED_ATTRIBUTES.has(e)&&delete t[e]}),e&&"object"==typeof e.container&&e.container.jquery&&(e.container=e.container[0]),"number"==typeof(e={...this.constructor.Default,...t,..."object"==typeof e&&e?e:{}}).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),typeCheckConfig(NAME$4,e,this.constructor.DefaultType),e.sanitize&&(e.template=sanitizeHtml(e.template,e.allowList,e.sanitizeFn)),e}_getDelegateConfig(){const e={};if(this.config)for(const t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e}_cleanTipClass(){const e=this.getTipElement(),t=e.getAttribute("class").match(BSCLS_PREFIX_REGEX$1);null!==t&&t.length>0&&t.map(e=>e.trim()).forEach(t=>e.classList.remove(t))}_handlePopperPlacementChange(e){const{state:t}=e;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))}static jQueryInterface(e){return this.each((function(){let t=Data.get(this,DATA_KEY$4);const n="object"==typeof e&&e;if((t||!/dispose|hide/.test(e))&&(t||(t=new Tooltip(this,n)),"string"==typeof e)){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}defineJQueryPlugin(NAME$4,Tooltip);const NAME$3="popover",DATA_KEY$3="bs.popover",EVENT_KEY$3=".bs.popover",CLASS_PREFIX="bs-popover",BSCLS_PREFIX_REGEX=new RegExp("(^|\\s)bs-popover\\S+","g"),Default$2={...Tooltip.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},DefaultType$2={...Tooltip.DefaultType,content:"(string|element|function)"},Event$1={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},CLASS_NAME_FADE$2="fade",CLASS_NAME_SHOW$2="show",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body";class Popover extends Tooltip{static get Default(){return Default$2}static get NAME(){return NAME$3}static get DATA_KEY(){return DATA_KEY$3}static get Event(){return Event$1}static get EVENT_KEY(){return EVENT_KEY$3}static get DefaultType(){return DefaultType$2}isWithContent(){return this.getTitle()||this._getContent()}setContent(){const e=this.getTipElement();this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE,e),this.getTitle());let t=this._getContent();"function"==typeof t&&(t=t.call(this._element)),this.setElementContent(SelectorEngine.findOne(".popover-body",e),t),e.classList.remove("fade","show")}_addAttachmentClass(e){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(e))}_getContent(){return this._element.getAttribute("data-bs-content")||this.config.content}_cleanTipClass(){const e=this.getTipElement(),t=e.getAttribute("class").match(BSCLS_PREFIX_REGEX);null!==t&&t.length>0&&t.map(e=>e.trim()).forEach(t=>e.classList.remove(t))}static jQueryInterface(e){return this.each((function(){let t=Data.get(this,DATA_KEY$3);const n="object"==typeof e?e:null;if((t||!/dispose|hide/.test(e))&&(t||(t=new Popover(this,n),Data.set(this,DATA_KEY$3,t)),"string"==typeof e)){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}defineJQueryPlugin(NAME$3,Popover);const NAME$2="scrollspy",DATA_KEY$2="bs.scrollspy",EVENT_KEY$2=".bs.scrollspy",DATA_API_KEY$1=".data-api",Default$1={offset:10,method:"auto",target:""},DefaultType$1={offset:"number",method:"string",target:"(string|element)"},EVENT_ACTIVATE="activate.bs.scrollspy",EVENT_SCROLL="scroll.bs.scrollspy",EVENT_LOAD_DATA_API="load.bs.scrollspy.data-api",CLASS_NAME_DROPDOWN_ITEM="dropdown-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_NAV_LIST_GROUP$1=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_DROPDOWN$1=".dropdown",SELECTOR_DROPDOWN_TOGGLE$1=".dropdown-toggle",METHOD_OFFSET="offset",METHOD_POSITION="position";class ScrollSpy extends BaseComponent{constructor(e,t){super(e),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(t),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,EventHandler.on(this._scrollElement,EVENT_SCROLL,()=>this._process()),this.refresh(),this._process()}static get Default(){return Default$1}static get DATA_KEY(){return DATA_KEY$2}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":"position",t="auto"===this._config.method?e:this._config.method,n="position"===t?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),SelectorEngine.find(this._selector).map(e=>{const i=getSelectorFromElement(e),s=i?SelectorEngine.findOne(i):null;if(s){const e=s.getBoundingClientRect();if(e.width||e.height)return[Manipulator[t](s).top+n,i]}return null}).filter(e=>e).sort((e,t)=>e[0]-t[0]).forEach(e=>{this._offsets.push(e[0]),this._targets.push(e[1])})}dispose(){super.dispose(),EventHandler.off(this._scrollElement,EVENT_KEY$2),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}_getConfig(e){if("string"!=typeof(e={...Default$1,..."object"==typeof e&&e?e:{}}).target&&isElement(e.target)){let{id:t}=e.target;t||(t=getUID(NAME$2),e.target.id=t),e.target="#"+t}return typeCheckConfig(NAME$2,e,DefaultType$1),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){const e=this._targets[this._targets.length-1];this._activeTarget!==e&&this._activate(e)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(let t=this._offsets.length;t--;)this._activeTarget!==this._targets[t]&&e>=this._offsets[t]&&(void 0===this._offsets[t+1]||e`${t}[data-bs-target="${e}"],${t}[href="${e}"]`),n=SelectorEngine.findOne(t.join(","));n.classList.contains("dropdown-item")?(SelectorEngine.findOne(".dropdown-toggle",n.closest(".dropdown")).classList.add("active"),n.classList.add("active")):(n.classList.add("active"),SelectorEngine.parents(n,".nav, .list-group").forEach(e=>{SelectorEngine.prev(e,".nav-link, .list-group-item").forEach(e=>e.classList.add("active")),SelectorEngine.prev(e,".nav-item").forEach(e=>{SelectorEngine.children(e,".nav-link").forEach(e=>e.classList.add("active"))})})),EventHandler.trigger(this._scrollElement,EVENT_ACTIVATE,{relatedTarget:e})}_clear(){SelectorEngine.find(this._selector).filter(e=>e.classList.contains("active")).forEach(e=>e.classList.remove("active"))}static jQueryInterface(e){return this.each((function(){let t=Data.get(this,DATA_KEY$2);if(t||(t=new ScrollSpy(this,"object"==typeof e&&e)),"string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}EventHandler.on(window,EVENT_LOAD_DATA_API,()=>{SelectorEngine.find(SELECTOR_DATA_SPY).forEach(e=>new ScrollSpy(e,Manipulator.getDataAttributes(e)))}),defineJQueryPlugin(NAME$2,ScrollSpy);const NAME$1="tab",DATA_KEY$1="bs.tab",EVENT_KEY$1=".bs.tab",DATA_API_KEY=".data-api",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab.data-api",CLASS_NAME_DROPDOWN_MENU="dropdown-menu",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_DROPDOWN=".dropdown",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_ACTIVE=".active",SELECTOR_ACTIVE_UL=":scope > li > .active",SELECTOR_DATA_TOGGLE='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',SELECTOR_DROPDOWN_TOGGLE=".dropdown-toggle",SELECTOR_DROPDOWN_ACTIVE_CHILD=":scope > .dropdown-menu .active";class Tab extends BaseComponent{static get DATA_KEY(){return"bs.tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active")||isDisabled(this._element))return;let e;const t=getElementFromSelector(this._element),n=this._element.closest(".nav, .list-group");if(n){const t="UL"===n.nodeName||"OL"===n.nodeName?SELECTOR_ACTIVE_UL:".active";e=SelectorEngine.find(t,n),e=e[e.length-1]}const i=e?EventHandler.trigger(e,EVENT_HIDE$1,{relatedTarget:this._element}):null;if(EventHandler.trigger(this._element,EVENT_SHOW$1,{relatedTarget:e}).defaultPrevented||null!==i&&i.defaultPrevented)return;this._activate(this._element,n);const s=()=>{EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:this._element}),EventHandler.trigger(this._element,EVENT_SHOWN$1,{relatedTarget:e})};t?this._activate(t,t.parentNode,s):s()}_activate(e,t,n){const i=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?SelectorEngine.children(t,".active"):SelectorEngine.find(SELECTOR_ACTIVE_UL,t))[0],s=n&&i&&i.classList.contains("fade"),o=()=>this._transitionComplete(e,i,n);if(i&&s){const e=getTransitionDurationFromElement(i);i.classList.remove("show"),EventHandler.one(i,"transitionend",o),emulateTransitionEnd(i,e)}else o()}_transitionComplete(e,t,n){if(t){t.classList.remove("active");const e=SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD,t.parentNode);e&&e.classList.remove("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}e.classList.add("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),reflow(e),e.classList.contains("fade")&&e.classList.add("show"),e.parentNode&&e.parentNode.classList.contains("dropdown-menu")&&(e.closest(".dropdown")&&SelectorEngine.find(".dropdown-toggle").forEach(e=>e.classList.add("active")),e.setAttribute("aria-expanded",!0)),n&&n()}static jQueryInterface(e){return this.each((function(){const t=Data.get(this,"bs.tab")||new Tab(this);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}EventHandler.on(document,EVENT_CLICK_DATA_API,SELECTOR_DATA_TOGGLE,(function(e){e.preventDefault(),(Data.get(this,"bs.tab")||new Tab(this)).show()})),defineJQueryPlugin("tab",Tab);const NAME="toast",DATA_KEY="bs.toast",EVENT_KEY=".bs.toast",EVENT_CLICK_DISMISS="click.dismiss.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType={animation:"boolean",autohide:"boolean",delay:"number"},Default={animation:!0,autohide:!0,delay:5e3},SELECTOR_DATA_DISMISS='[data-bs-dismiss="toast"]';class Toast extends BaseComponent{constructor(e,t){super(e),this._config=this._getConfig(t),this._timeout=null,this._setListeners()}static get DefaultType(){return DefaultType}static get Default(){return Default}static get DATA_KEY(){return DATA_KEY}show(){if(EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");const e=()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),EventHandler.trigger(this._element,EVENT_SHOWN),this._config.autohide&&(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))};if(this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("showing"),this._config.animation){const t=getTransitionDurationFromElement(this._element);EventHandler.one(this._element,"transitionend",e),emulateTransitionEnd(this._element,t)}else e()}hide(){if(!this._element.classList.contains("show"))return;if(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented)return;const e=()=>{this._element.classList.add("hide"),EventHandler.trigger(this._element,EVENT_HIDDEN)};if(this._element.classList.remove("show"),this._config.animation){const t=getTransitionDurationFromElement(this._element);EventHandler.one(this._element,"transitionend",e),emulateTransitionEnd(this._element,t)}else e()}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),EventHandler.off(this._element,EVENT_CLICK_DISMISS),super.dispose(),this._config=null}_getConfig(e){return e={...Default,...Manipulator.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}},typeCheckConfig(NAME,e,this.constructor.DefaultType),e}_setListeners(){EventHandler.on(this._element,EVENT_CLICK_DISMISS,SELECTOR_DATA_DISMISS,()=>this.hide())}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){let t=Data.get(this,DATA_KEY);if(t||(t=new Toast(this,"object"==typeof e&&e)),"string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}defineJQueryPlugin(NAME,Toast);export{Alert,Button,Carousel,Collapse,Dropdown,Modal,Offcanvas,Popover,ScrollSpy,Tab,Toast,Tooltip}; //# sourceMappingURL=bootstrap.esm.min.js.map \ No newline at end of file diff --git a/dist/js/bootstrap.esm.min.js.map b/dist/js/bootstrap.esm.min.js.map index 3f95f7deebcd..2331f0e06193 100644 --- a/dist/js/bootstrap.esm.min.js.map +++ b/dist/js/bootstrap.esm.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js"],"names":["MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","toType","obj","toString","call","match","toLowerCase","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","callback","readyState","isRTL","dir","defineJQueryPlugin","name","plugin","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","mapData","storeData","id","set","key","data","bsKey","get","keyProperties","delete","Data","setData","instance","getData","removeData","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","handler","event","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","target","this","i","length","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","has","addHandler","_normalizeParams","handlers","previousFn","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","_normalizeParams2","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","jQueryEvent","isNative","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","VERSION","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","NAME","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_this","classList","remove","contains","_destroyElement","removeChild","each","handleDismiss","alertInstance","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","NODE_TEXT","SelectorEngine","find","_ref","concat","Element","prototype","findOne","children","_ref2","child","matches","parents","ancestor","Node","ELEMENT_NODE","push","prev","previous","previousElementSibling","next","nextElementSibling","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_SLIDE","CLASS_NAME_END","CLASS_NAME_START","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_INDICATOR","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","Carousel","_BaseComponent","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","_this2","activeIndex","_getItemIndex","direction","_extends","_handleSwipe","absDeltax","abs","_this3","_keydown","_addTouchEventListeners","_this4","start","pointerType","touches","clientX","end","clearTimeout","itemImg","e","add","move","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","_this5","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","parent","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","WIDTH","HEIGHT","SELECTOR_ACTIVES","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","ESCAPE_KEY","SPACE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","RIGHT_MOUSE_BUTTON","REGEXP_KEYDOWN","EVENT_CLICK","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_DROPUP","CLASS_NAME_DROPEND","CLASS_NAME_DROPSTART","CLASS_NAME_NAVBAR","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","focus","destroy","update","stopPropagation","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","map","popperData","defaultBsPopperConfig","placement","options","altBoundary","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","click","backdrop","EVENT_HIDE_PREVENTED","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_this6","_triggerBackdropTransition","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","_this10","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","_this11","_setElementAttributes","calculatedValue","styleProp","actualValue","_resetElementAttributes","scrollDiv","scrollbarWidth","width","clientWidth","_this12","uriAttrs","ARIA_ATTRIBUTE_PATTERN","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","DefaultAllowlist","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elements","_loop","el","elName","attributeList","allowedAttributes","innerHTML","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_MODAL","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","Error","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","_tip$classList","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","state","popper","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","method","EVENT_ACTIVATE","EVENT_SCROLL","CLASS_NAME_DROPDOWN_ITEM","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","node","spy","CLASS_NAME_DROPDOWN_MENU","SELECTOR_ACTIVE_UL","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta2'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n if (!element.classList.contains(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, 'transitionend', () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n if (isRTL) {\n this.next()\n } else {\n this.prev()\n }\n }\n\n // swipe right\n if (direction < 0) {\n if (isRTL) {\n this.prev()\n } else {\n this.next()\n }\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault()\n if (isRTL) {\n this.next()\n } else {\n this.prev()\n }\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault()\n if (isRTL) {\n this.prev()\n } else {\n this.next()\n }\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const directionalClassName = direction === DIRECTION_NEXT ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = direction === DIRECTION_NEXT ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = direction === DIRECTION_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, 'transitionend', () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(dropdownMenu, 'popper')\n EventHandler.trigger(toggles[i], EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.click()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, 'transitionend', transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, 'transitionend', callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, 'transitionend', callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - this._scrollbarWidth)\n this._setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n SelectorEngine.find(selector)\n .forEach(element => {\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'\n })\n }\n\n _resetScrollbar() {\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n this._resetElementAttributes('body', 'paddingRight')\n }\n\n _resetElementAttributes(selector, styleProp) {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined' && element === document.body) {\n element.style[styleProp] = ''\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\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 */\nconst 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 */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\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', 'srcset', '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\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip && this.tip.parentNode) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, 'transitionend', complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, 'transitionend', complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this.config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n altBoundary: true,\n fallbackPlacements: this.config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both

',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},kt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Lt=function(e){function i(t,i){var o;if(void 0===n)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");return(o=e.call(this,t)||this)._isEnabled=!0,o._timeout=0,o._hoverState="",o._activeTrigger={},o._popper=null,o.config=o._getConfig(i),o.tip=null,o._setListeners(),o}r(i,e);var a=i.prototype;return a.enable=function(){this._isEnabled=!0},a.disable=function(){this._isEnabled=!1},a.toggleEnabled=function(){this._isEnabled=!this._isEnabled},a.toggle=function(t){if(this._isEnabled)if(t){var e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}},a.dispose=function(){clearTimeout(this._timeout),K.off(this._element,this.constructor.EVENT_KEY),K.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,e.prototype.dispose.call(this)},a.show=function(){var e=this;if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(this.isWithContent()&&this._isEnabled){var n=K.trigger(this._element,this.constructor.Event.SHOW),i=function t(e){if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){var n=e.getRootNode();return n instanceof ShadowRoot?n:null}return e instanceof ShadowRoot?e:e.parentNode?t(e.parentNode):null}(this._element),o=null===i?this._element.ownerDocument.documentElement.contains(this._element):i.contains(this._element);if(!n.defaultPrevented&&o){var s=this.getTipElement(),r=c(this.constructor.NAME);s.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&s.classList.add("fade");var a="function"==typeof this.config.placement?this.config.placement.call(this,s,this._element):this.config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);var u=this._getContainer();k(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||u.appendChild(s),K.trigger(this._element,this.constructor.Event.INSERTED),this._popper=t.createPopper(this._element,s,this._getPopperConfig(l)),s.classList.add("show");var h,d,p="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;p&&(h=s.classList).add.apply(h,p.split(" ")),"ontouchstart"in document.documentElement&&(d=[]).concat.apply(d,document.body.children).forEach((function(t){K.on(t,"mouseover",(function(){}))}));var g=function(){var t=e._hoverState;e._hoverState=null,K.trigger(e._element,e.constructor.Event.SHOWN),"out"===t&&e._leave(null,e)};if(this.tip.classList.contains("fade")){var _=f(this.tip);K.one(this.tip,"transitionend",g),m(this.tip,_)}else g()}}},a.hide=function(){var t=this;if(this._popper){var e=this.getTipElement(),n=function(){"show"!==t._hoverState&&e.parentNode&&e.parentNode.removeChild(e),t._cleanTipClass(),t._element.removeAttribute("aria-describedby"),K.trigger(t._element,t.constructor.Event.HIDDEN),t._popper&&(t._popper.destroy(),t._popper=null)};if(!K.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){var i;if(e.classList.remove("show"),"ontouchstart"in document.documentElement&&(i=[]).concat.apply(i,document.body.children).forEach((function(t){return K.off(t,"mouseover",b)})),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){var o=f(e);K.one(e,"transitionend",n),m(e,o)}else n();this._hoverState=""}}},a.update=function(){null!==this._popper&&this._popper.update()},a.isWithContent=function(){return Boolean(this.getTitle())},a.getTipElement=function(){if(this.tip)return this.tip;var t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip},a.setContent=function(){var t=this.getTipElement();this.setElementContent(Q(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")},a.setElementContent=function(t,e){if(null!==t)return"object"==typeof e&&g(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=bt(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)},a.getTitle=function(){var t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t},a.updateAttachment=function(t){return"right"===t?"end":"left"===t?"start":t},a._initializeOnDelegatedTarget=function(t,e){var n=this.constructor.DATA_KEY;return(e=e||L(t.delegateTarget,n))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),k(t.delegateTarget,n,e)),e},a._getOffset=function(){var t=this,e=this.config.offset;return"string"==typeof e?e.split(",").map((function(t){return Number.parseInt(t,10)})):"function"==typeof e?function(n){return e(n,t._element)}:e},a._getPopperConfig=function(t){var e=this,n={placement:t,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:"."+this.constructor.NAME+"-arrow"}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:function(t){return e._handlePopperPlacementChange(t)}}],onFirstUpdate:function(t){t.options.placement!==t.placement&&e._handlePopperPlacementChange(t)}};return s({},n,"function"==typeof this.config.popperConfig?this.config.popperConfig(n):this.config.popperConfig)},a._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))},a._getContainer=function(){return!1===this.config.container?document.body:g(this.config.container)?this.config.container:Q(this.config.container)},a._getAttachment=function(t){return Tt[t.toUpperCase()]},a._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)K.on(t._element,t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;K.on(t._element,n,t.config.selector,(function(e){return t._enter(e)})),K.on(t._element,i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t._element&&t.hide()},K.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=s({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},a._fixTitle=function(){var t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))},a._enter=function(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},a._leave=function(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},a._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},a._getConfig=function(t){var e=X.getDataAttributes(this._element);return Object.keys(e).forEach((function(t){wt.has(t)&&delete e[t]})),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t=s({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=bt(t.template,t.allowList,t.sanitizeFn)),t},a._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},a._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(yt);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},a._handlePopperPlacementChange=function(t){var e=t.state;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))},i.jQueryInterface=function(t){return this.each((function(){var e=L(this,"bs.tooltip"),n="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},o(i,null,[{key:"Default",get:function(){return At}},{key:"NAME",get:function(){return"tooltip"}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return kt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Et}}]),i}(W);T("tooltip",Lt);var Ct=new RegExp("(^|\\s)bs-popover\\S+","g"),Dt=s({},Lt.Default,{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),St=s({},Lt.DefaultType,{content:"(string|element|function)"}),Nt={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Ot=function(t){function e(){return t.apply(this,arguments)||this}r(e,t);var n=e.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.setContent=function(){var t=this.getTipElement();this.setElementContent(Q(".popover-header",t),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(Q(".popover-body",t),e),t.classList.remove("fade","show")},n._addAttachmentClass=function(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))},n._getContent=function(){return this._element.getAttribute("data-bs-content")||this.config.content},n._cleanTipClass=function(){var t=this.getTipElement(),e=t.getAttribute("class").match(Ct);null!==e&&e.length>0&&e.map((function(t){return t.trim()})).forEach((function(e){return t.classList.remove(e)}))},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.popover"),i="object"==typeof t?t:null;if((n||!/dispose|hide/.test(t))&&(n||(n=new e(this,i),k(this,"bs.popover",n)),"string"==typeof t)){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(e,null,[{key:"Default",get:function(){return Dt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return Nt}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return St}}]),e}(Lt);T("popover",Ot);var It={offset:10,method:"auto",target:""},jt={offset:"number",method:"string",target:"(string|element)"},Pt=function(t){function e(e,n){var i;return(i=t.call(this,e)||this)._scrollElement="BODY"===e.tagName?window:e,i._config=i._getConfig(n),i._selector=i._config.target+" .nav-link, "+i._config.target+" .list-group-item, "+i._config.target+" .dropdown-item",i._offsets=[],i._targets=[],i._activeTarget=null,i._scrollHeight=0,K.on(i._scrollElement,"scroll.bs.scrollspy",(function(){return i._process()})),i.refresh(),i._process(),i}r(e,t);var n=e.prototype;return n.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),q(this._selector).map((function(t){var e=h(t),o=e?Q(e):null;if(o){var s=o.getBoundingClientRect();if(s.width||s.height)return[X[n](o).top+i,e]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},n.dispose=function(){t.prototype.dispose.call(this),K.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},n._getConfig=function(t){if("string"!=typeof(t=s({},It,"object"==typeof t&&t?t:{})).target&&g(t.target)){var e=t.target.id;e||(e=c("scrollspy"),t.target.id=e),t.target="#"+e}return _("scrollspy",t,jt),t},n._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},n._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},n._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},n._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";e=(e=q(o,i))[e.length-1]}var s=e?K.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(!(K.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==s&&s.defaultPrevented)){this._activate(this._element,i);var r=function(){K.trigger(e,"hidden.bs.tab",{relatedTarget:t._element}),K.trigger(t._element,"shown.bs.tab",{relatedTarget:e})};n?this._activate(n,n.parentNode,r):r()}}},n._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?V(e,".active"):q(":scope > li > .active",e))[0],s=n&&o&&o.classList.contains("fade"),r=function(){return i._transitionComplete(t,o,n)};if(o&&s){var a=f(o);o.classList.remove("show"),K.one(o,"transitionend",r),m(o,a)}else r()},n._transitionComplete=function(t,e,n){if(e){e.classList.remove("active");var i=Q(":scope > .dropdown-menu .active",e.parentNode);i&&i.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),y(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu")&&(t.closest(".dropdown")&&q(".dropdown-toggle").forEach((function(t){return t.classList.add("active")})),t.setAttribute("aria-expanded",!0)),n&&n()},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.tab")||new e(this);if("string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},o(e,null,[{key:"DATA_KEY",get:function(){return"bs.tab"}}]),e}(W);K.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(L(this,"bs.tab")||new xt(this)).show()})),T("tab",xt);var Ht={animation:"boolean",autohide:"boolean",delay:"number"},Bt={animation:!0,autohide:!0,delay:5e3},Mt=function(t){function e(e,n){var i;return(i=t.call(this,e)||this)._config=i._getConfig(n),i._timeout=null,i._setListeners(),i}r(e,t);var n=e.prototype;return n.show=function(){var t=this;if(!K.trigger(this._element,"show.bs.toast").defaultPrevented){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var e=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),K.trigger(t._element,"shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),y(this._element),this._element.classList.add("showing"),this._config.animation){var n=f(this._element);K.one(this._element,"transitionend",e),m(this._element,n)}else e()}},n.hide=function(){var t=this;if(this._element.classList.contains("show")&&!K.trigger(this._element,"hide.bs.toast").defaultPrevented){var e=function(){t._element.classList.add("hide"),K.trigger(t._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=f(this._element);K.one(this._element,"transitionend",e),m(this._element,n)}else e()}},n.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),K.off(this._element,"click.dismiss.bs.toast"),t.prototype.dispose.call(this),this._config=null},n._getConfig=function(t){return t=s({},Bt,X.getDataAttributes(this._element),"object"==typeof t&&t?t:{}),_("toast",t,this.constructor.DefaultType),t},n._setListeners=function(){var t=this;K.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',(function(){return t.hide()}))},n._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},e.jQueryInterface=function(t){return this.each((function(){var n=L(this,"bs.toast");if(n||(n=new e(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t](this)}}))},o(e,null,[{key:"DefaultType",get:function(){return Ht}},{key:"Default",get:function(){return Bt}},{key:"DATA_KEY",get:function(){return"bs.toast"}}]),e}(W);return T("toast",Mt),{Alert:U,Button:F,Carousel:J,Collapse:nt,Dropdown:dt,Modal:gt,Popover:Ot,ScrollSpy:Pt,Tab:xt,Toast:Mt,Tooltip:Lt}})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if("default"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},n=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s="#"+s.split("#")[1]),e=s&&"#"!==s?s.trim():null}return e},o=t=>{const e=n(t);return e&&document.querySelector(e)?e:null},r=t=>{const e=n(t);return e?document.querySelector(e):null},a=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0},l=t=>{t.dispatchEvent(new Event("transitionend"))},c=t=>(t[0]||t).nodeType,h=(t,e)=>{let s=!1;const i=e+5;t.addEventListener("transitionend",(function e(){s=!0,t.removeEventListener("transitionend",e)})),setTimeout(()=>{s||l(t)},i)},d=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&c(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(t.toUpperCase()+": "+`Option "${i}" provided type "${r}" `+`but expected type "${n}".`)})},u=t=>{if(!t)return!1;if(t.style&&t.parentNode&&t.parentNode.style){const e=getComputedStyle(t),s=getComputedStyle(t.parentNode);return"none"!==e.display&&"none"!==s.display&&"hidden"!==e.visibility}return!1},g=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),f=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?f(t.parentNode):null},p=()=>function(){},m=t=>t.offsetHeight,_=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},b=()=>"rtl"===document.documentElement.dir,v=(t,e)=>{var s;s=()=>{const s=_();if(s){const i=s.fn[t];s.fn[t]=e.jQueryInterface,s.fn[t].Constructor=e,s.fn[t].noConflict=()=>(s.fn[t]=i,e.jQueryInterface)}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",s):s()},y=new Map;var w={set(t,e,s){y.has(t)||y.set(t,new Map);const i=y.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>y.has(t)&&y.get(t).get(e)||null,remove(t,e){if(!y.has(t))return;const s=y.get(t);s.delete(e),0===s.size&&y.delete(t)}};const E=/[^.]*(?=\..*)\.|.*/,T=/\..*/,A=/::\d+$/,L={};let k=1;const C={mouseenter:"mouseover",mouseleave:"mouseout"},D=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function S(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function N(t){const e=S(t);return t.uidEvent=e,L[e]=L[e]||{},L[e]}function O(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;n{!function(t,e,s,i){const n=e[s]||{};Object.keys(n).forEach(o=>{if(o.includes(i)){const i=n[o];j(t,e,s,i.originalHandler,i.delegationSelector)}})}(t,l,s,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(s=>{const i=s.replace(A,"");if(!a||e.includes(i)){const e=h[s];j(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=_(),n=e.replace(T,""),o=e!==n,r=D.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&i&&(a=i.Event(e,s),i(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==s&&Object.keys(s).forEach(t=>{Object.defineProperty(d,t,{get:()=>s[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}};class M{constructor(t){(t="string"==typeof t?document.querySelector(t):t)&&(this._element=t,w.set(this._element,this.constructor.DATA_KEY,this))}dispose(){w.remove(this._element,this.constructor.DATA_KEY),this._element=null}static getInstance(t){return w.get(t,this.DATA_KEY)}static get VERSION(){return"5.0.0-beta3"}}class H extends M{static get DATA_KEY(){return"bs.alert"}close(t){const e=t?this._getRootElement(t):this._element,s=this._triggerCloseEvent(e);null===s||s.defaultPrevented||this._removeElement(e)}_getRootElement(t){return r(t)||t.closest(".alert")}_triggerCloseEvent(t){return P.trigger(t,"close.bs.alert")}_removeElement(t){if(t.classList.remove("show"),!t.classList.contains("fade"))return void this._destroyElement(t);const e=a(t);P.one(t,"transitionend",()=>this._destroyElement(t)),h(t,e)}_destroyElement(t){t.parentNode&&t.parentNode.removeChild(t),P.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.alert");e||(e=new H(this)),"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}P.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',H.handleDismiss(new H)),v("alert",H);class R extends M{static get DATA_KEY(){return"bs.button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.button");e||(e=new R(this)),"toggle"===t&&e[t]()}))}}function B(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function W(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');let s=w.get(e,"bs.button");s||(s=new R(e)),s.toggle()}),v("button",R);const $={setDataAttribute(t,e,s){t.setAttribute("data-bs-"+W(e),s)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+W(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(s=>{let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=B(t.dataset[s])}),e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-"+W(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},U={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},K={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},z="next",Y="prev",q="left",Q="right";class X extends M{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=U.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return F}static get DATA_KEY(){return"bs.carousel"}next(){this._isSliding||this._slide(z)}nextWhenVisible(){!document.hidden&&u(this._element)&&this.next()}prev(){this._isSliding||this._slide(Y)}pause(t){t||(this._isPaused=!0),U.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(l(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=U.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const s=t>e?z:Y;this._slide(s,this._items[t])}dispose(){P.off(this._element,".bs.carousel"),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null,super.dispose()}_getConfig(t){return t={...F,...t},d("carousel",t,K),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:q)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},s=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};U.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",e=>t(e)),P.on(this._element,"pointerup.bs.carousel",t=>s(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",e=>t(e)),P.on(this._element,"touchmove.bs.carousel",t=>e(t)),P.on(this._element,"touchend.bs.carousel",t=>s(t)))}_keydown(t){/input|textarea/i.test(t.target.tagName)||("ArrowLeft"===t.key?(t.preventDefault(),this._slide(q)):"ArrowRight"===t.key&&(t.preventDefault(),this._slide(Q)))}_getItemIndex(t){return this._items=t&&t.parentNode?U.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const s=t===z,i=t===Y,n=this._getItemIndex(e),o=this._items.length-1;if((i&&0===n||s&&n===o)&&!this._config.wrap)return e;const r=(n+(i?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]}_triggerSlideEvent(t,e){const s=this._getItemIndex(t),i=this._getItemIndex(U.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:s})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=U.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const s=U.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{o.classList.remove(d,u),o.classList.add("active"),i.classList.remove("active",u,d),this._isSliding=!1,setTimeout(()=>{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:g,from:n,to:r})},0)}),h(i,t)}else i.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,P.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:g,from:n,to:r});l&&this.cycle()}}_directionToOrder(t){return[Q,q].includes(t)?b()?t===Q?Y:z:t===Q?z:Y:t}_orderToDirection(t){return[z,Y].includes(t)?b()?t===z?q:Q:t===z?Q:q:t}static carouselInterface(t,e){let s=w.get(t,"bs.carousel"),i={...F,...$.getDataAttributes(t)};"object"==typeof e&&(i={...i,...e});const n="string"==typeof e?e:i.slide;if(s||(s=new X(t,i)),"number"==typeof e)s.to(e);else if("string"==typeof n){if(void 0===s[n])throw new TypeError(`No method named "${n}"`);s[n]()}else i.interval&&i.ride&&(s.pause(),s.cycle())}static jQueryInterface(t){return this.each((function(){X.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=r(this);if(!e||!e.classList.contains("carousel"))return;const s={...$.getDataAttributes(e),...$.getDataAttributes(this)},i=this.getAttribute("data-bs-slide-to");i&&(s.interval=!1),X.carouselInterface(e,s),i&&w.get(e,"bs.carousel").to(i),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",X.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const t=U.find('[data-bs-ride="carousel"]');for(let e=0,s=t.length;et===this._element);null!==i&&n.length&&(this._selector=i,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return V}static get DATA_KEY(){return"bs.collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=U.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const s=U.findOne(this._selector);if(t){const i=t.find(t=>s!==t);if(e=i?w.get(i,"bs.collapse"):null,e&&e._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{s!==t&&Z.collapseInterface(t,"hide"),e||w.set(t,"bs.collapse",null)});const i=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[i]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const n="scroll"+(i[0].toUpperCase()+i.slice(1)),o=a(this._element);P.one(this._element,"transitionend",()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[i]="",this.setTransitioning(!1),P.trigger(this._element,"shown.bs.collapse")}),h(this._element,o),this._element.style[i]=this._element[n]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",m(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")}),h(this._element,s)}setTransitioning(t){this._isTransitioning=t}dispose(){super.dispose(),this._config=null,this._parent=null,this._triggerArray=null,this._isTransitioning=null}_getConfig(t){return(t={...V,...t}).toggle=Boolean(t.toggle),d("collapse",t,G),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;c(t)?void 0===t.jquery&&void 0===t[0]||(t=t[0]):t=U.findOne(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return U.find(e,t).forEach(t=>{const e=r(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const s=t.classList.contains("show");e.forEach(t=>{s?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",s)})}static collapseInterface(t,e){let s=w.get(t,"bs.collapse");const i={...V,...$.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!s&&i.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(i.toggle=!1),s||(s=new Z(t,i)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){Z.collapseInterface(this,t)}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=$.getDataAttributes(this),s=o(this);U.find(s).forEach(t=>{const s=w.get(t,"bs.collapse");let i;s?(null===s._parent&&"string"==typeof e.parent&&(s._config.parent=e.parent,s._parent=s._getParent()),i="toggle"):i=e,Z.collapseInterface(t,i)})})),v("collapse",Z);const J=new RegExp("ArrowUp|ArrowDown|Escape"),tt=b()?"top-end":"top-start",et=b()?"top-start":"top-end",st=b()?"bottom-end":"bottom-start",it=b()?"bottom-start":"bottom-end",nt=b()?"left-start":"right-start",ot=b()?"right-start":"left-start",rt={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null},at={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)"};class lt extends M{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return rt}static get DefaultType(){return at}static get DATA_KEY(){return"bs.dropdown"}toggle(){if(this._element.disabled||this._element.classList.contains("disabled"))return;const t=this._element.classList.contains("show");lt.clearMenus(),t||this.show()}show(){if(this._element.disabled||this._element.classList.contains("disabled")||this._menu.classList.contains("show"))return;const t=lt.getParentFromElement(this._element),e={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)$.setDataAttribute(this._menu,"popper","none");else{if(void 0===s)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:c(this._config.reference)?(e=this._config.reference,void 0!==this._config.reference.jquery&&(e=this._config.reference[0])):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=s.createPopper(e,this._menu,i),n&&$.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>P.on(t,"mouseover",null,(function(){}))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),P.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(this._element.disabled||this._element.classList.contains("disabled")||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||(this._popper&&this._popper.destroy(),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),$.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}dispose(){P.off(this._element,".bs.dropdown"),this._menu=null,this._popper&&(this._popper.destroy(),this._popper=null),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){P.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_getConfig(t){if(t={...this.constructor.Default,...$.getDataAttributes(this._element),...t},d("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!c(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return U.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return nt;if(t.classList.contains("dropstart"))return ot;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?et:tt:e?it:st}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}static dropdownInterface(t,e){let s=w.get(t,"bs.dropdown");if(s||(s=new lt(t,"object"==typeof e?e:null)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){lt.dropdownInterface(this,t)}))}static clearMenus(t){if(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;if(/input|select|textarea|form/i.test(t.target.tagName))return}const e=U.find('[data-bs-toggle="dropdown"]');for(let s=0,i=e.length;st.composedPath().includes(e)))continue;if("keyup"===t.type&&"Tab"===t.key&&o.contains(t.target))continue}P.trigger(e[s],"hide.bs.dropdown",n).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",null,(function(){}))),e[s].setAttribute("aria-expanded","false"),i._popper&&i._popper.destroy(),o.classList.remove("show"),e[s].classList.remove("show"),$.removeDataAttribute(o,"popper"),P.trigger(e[s],"hidden.bs.dropdown",n))}}}static getParentFromElement(t){return r(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!J.test(t.key))return;if(t.preventDefault(),t.stopPropagation(),this.disabled||this.classList.contains("disabled"))return;const e=lt.getParentFromElement(this),s=this.classList.contains("show");if("Escape"===t.key)return(this.matches('[data-bs-toggle="dropdown"]')?this:U.prev(this,'[data-bs-toggle="dropdown"]')[0]).focus(),void lt.clearMenus();if(!s&&("ArrowUp"===t.key||"ArrowDown"===t.key))return void(this.matches('[data-bs-toggle="dropdown"]')?this:U.prev(this,'[data-bs-toggle="dropdown"]')[0]).click();if(!s||"Space"===t.key)return void lt.clearMenus();const i=U.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",e).filter(u);if(!i.length)return;let n=i.indexOf(t.target);"ArrowUp"===t.key&&n>0&&n--,"ArrowDown"===t.key&&nthis.hide(t)),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();if(e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),P.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),e){const t=a(this._element);P.one(this._element,"transitionend",t=>this._hideModal(t)),h(this._element,t)}else this._hideModal()}dispose(){[window,this._element,this._dialog].forEach(t=>P.off(t,".bs.modal")),super.dispose(),P.off(document,"focusin.bs.modal"),this._config=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null}handleUpdate(){this._adjustDialog()}_getConfig(t){return t={...ct,...t},d("modal",t,ht),t}_showElement(t){const e=this._isAnimated(),s=U.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,s&&(s.scrollTop=0),e&&m(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus();const i=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})};if(e){const t=a(this._dialog);P.one(this._dialog,"transitionend",i),h(this._dialog,t)}else i()}_enforceFocus(){P.off(document,"focusin.bs.modal"),P.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._resetScrollbar(),P.trigger(this._element,"hidden.bs.modal")})}_removeBackdrop(){this._backdrop.parentNode.removeChild(this._backdrop),this._backdrop=null}_showBackdrop(t){const e=this._isAnimated();if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",e&&this._backdrop.classList.add("fade"),document.body.appendChild(this._backdrop),P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===this._config.backdrop?this._triggerBackdropTransition():this.hide())}),e&&m(this._backdrop),this._backdrop.classList.add("show"),!e)return void t();const s=a(this._backdrop);P.one(this._backdrop,"transitionend",t),h(this._backdrop,s)}else if(!this._isShown&&this._backdrop){this._backdrop.classList.remove("show");const s=()=>{this._removeBackdrop(),t()};if(e){const t=a(this._backdrop);P.one(this._backdrop,"transitionend",s),h(this._backdrop,t)}else s()}else t()}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");const e=a(this._dialog);P.off(this._element,"transitionend"),P.one(this._element,"transitionend",()=>{this._element.classList.remove("modal-static"),t||(P.one(this._element,"transitionend",()=>{this._element.style.overflowY=""}),h(this._element,e))}),h(this._element,e),this._element.focus()}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!b()||this._isBodyOverflowing&&!t&&b())&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!b()||!this._isBodyOverflowing&&t&&b())&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_checkScrollbar(){const t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)t+this._scrollbarWidth),this._setElementAttributes(".sticky-top","marginRight",t=>t-this._scrollbarWidth),this._setElementAttributes("body","paddingRight",t=>t+this._scrollbarWidth)),document.body.classList.add("modal-open")}_setElementAttributes(t,e,s){U.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+this._scrollbarWidth)return;const i=t.style[e],n=window.getComputedStyle(t)[e];$.setDataAttribute(t,e,i),t.style[e]=s(Number.parseFloat(n))+"px"})}_resetScrollbar(){this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight"),this._resetElementAttributes("body","paddingRight")}_resetElementAttributes(t,e){U.find(t).forEach(t=>{const s=$.getDataAttribute(t,e);void 0===s&&t===document.body?t.style[e]="":($.removeDataAttribute(t,e),t.style[e]=s)})}_getScrollbarWidth(){const t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);const e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}static jQueryInterface(t,e){return this.each((function(){let s=w.get(this,"bs.modal");const i={...ct,...$.getDataAttributes(this),..."object"==typeof t&&t?t:{}};if(s||(s=new dt(this,i)),"string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=r(this);"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{u(this)&&this.focus()})});let s=w.get(e,"bs.modal");if(!s){const t={...$.getDataAttributes(e),...$.getDataAttributes(this)};s=new dt(e,t)}s.toggle(this)})),v("modal",dt);const ut=()=>{const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)},gt=(t,e,s)=>{const i=ut();U.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+i)return;const n=t.style[e],o=window.getComputedStyle(t)[e];$.setDataAttribute(t,e,n),t.style[e]=s(Number.parseFloat(o))+"px"})},ft=(t,e)=>{U.find(t).forEach(t=>{const s=$.getDataAttribute(t,e);void 0===s&&t===document.body?t.style.removeProperty(e):($.removeDataAttribute(t,e),t.style[e]=s)})},pt={backdrop:!0,keyboard:!0,scroll:!1},mt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class _t extends M{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._addEventListeners()}static get Default(){return pt}static get DATA_KEY(){return"bs.offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._config.backdrop&&document.body.classList.add("offcanvas-backdrop"),this._config.scroll||((t=ut())=>{document.body.style.overflow="hidden",gt(".fixed-top, .fixed-bottom, .is-fixed","paddingRight",e=>e+t),gt(".sticky-top","marginRight",e=>e-t),gt("body","paddingRight",e=>e+t)})(),this._element.classList.add("offcanvas-toggling"),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),setTimeout(()=>{this._element.classList.remove("offcanvas-toggling"),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t}),this._enforceFocusOnElement(this._element)},a(this._element)))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._element.classList.add("offcanvas-toggling"),P.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),setTimeout(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.backdrop&&document.body.classList.remove("offcanvas-backdrop"),this._config.scroll||(document.body.style.overflow="auto",ft(".fixed-top, .fixed-bottom, .is-fixed","paddingRight"),ft(".sticky-top","marginRight"),ft("body","paddingRight")),P.trigger(this._element,"hidden.bs.offcanvas"),this._element.classList.remove("offcanvas-toggling")},a(this._element))))}_getConfig(t){return t={...pt,...$.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("offcanvas",t,mt),t}_enforceFocusOnElement(t){P.off(document,"focusin.bs.offcanvas"),P.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){P.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),P.on(document,"keydown",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}),P.on(document,"click.bs.offcanvas.data-api",t=>{const e=U.findOne(o(t.target));this._element.contains(t.target)||e===this._element||this.hide()})}static jQueryInterface(t){return this.each((function(){const e=w.get(this,"bs.offcanvas")||new _t(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=r(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),g(this))return;P.one(e,"hidden.bs.offcanvas",()=>{u(this)&&this.focus()});const s=U.findOne(".offcanvas.show, .offcanvas-toggling");s&&s!==e||(w.get(e,"bs.offcanvas")||new _t(e)).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>{U.find(".offcanvas.show").forEach(t=>(w.get(t,"bs.offcanvas")||new _t(t)).show())}),v("offcanvas",_t);const bt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),vt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,yt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,wt=(t,e)=>{const s=t.nodeName.toLowerCase();if(e.includes(s))return!bt.has(s)||Boolean(vt.test(t.nodeValue)||yt.test(t.nodeValue));const i=e.filter(t=>t instanceof RegExp);for(let t=0,e=i.length;t{wt(t,a)||s.removeAttribute(t.nodeName)})}return i.body.innerHTML}const Tt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),At=new Set(["sanitize","allowList","sanitizeFn"]),Lt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},kt={AUTO:"auto",TOP:"top",RIGHT:b()?"left":"right",BOTTOM:"bottom",LEFT:b()?"right":"left"},Ct={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Dt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class St extends M{constructor(t,e){if(void 0===s)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Ct}static get NAME(){return"tooltip"}static get DATA_KEY(){return"bs.tooltip"}static get Event(){return Dt}static get EVENT_KEY(){return".bs.tooltip"}static get DefaultType(){return Lt}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element,this.constructor.EVENT_KEY),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),e=f(this._element),n=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!n)return;const o=this.getTipElement(),r=i(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add("fade");const l="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,c=this._getAttachment(l);this._addAttachmentClass(c);const d=this._getContainer();w.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(d.appendChild(o),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=s.createPopper(this._element,o,this._getPopperConfig(c)),o.classList.add("show");const u="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;u&&o.classList.add(...u.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",(function(){}))});const g=()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)};if(this.tip.classList.contains("fade")){const t=a(this.tip);P.one(this.tip,"transitionend",g),h(this.tip,t)}else g()}hide(){if(!this._popper)return;const t=this.getTipElement(),e=()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.parentNode&&t.parentNode.removeChild(t),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(!P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){if(t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",p)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){const s=a(t);P.one(t,"transitionend",e),h(t,s)}else e();this._hoverState=""}}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(U.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return"object"==typeof e&&c(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Et(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const s=this.constructor.DATA_KEY;return(e=e||w.get(t.delegateTarget,s))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),w.set(t.delegateTarget,s,e)),e}_getOffset(){const{offset:t}=this.config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this.config.popperConfig?this.config.popperConfig(e):this.config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getContainer(){return!1===this.config.container?document.body:c(this.config.container)?this.config.container:U.findOne(this.config.container)}_getAttachment(t){return kt[t.toUpperCase()]}_setListeners(){this.config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this.config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this.config.selector,t=>this._enter(t)),P.on(this._element,s,this.config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config={...this.config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e.config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e.config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=$.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{At.has(t)&&delete e[t]}),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Et(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this.config)for(const e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Tt);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.tooltip");const s="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new St(this,s)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}v("tooltip",St);const Nt=new RegExp("(^|\\s)bs-popover\\S+","g"),Ot={...St.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},xt={...St.DefaultType,content:"(string|element|function)"},It={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class jt extends St{static get Default(){return Ot}static get NAME(){return"popover"}static get DATA_KEY(){return"bs.popover"}static get Event(){return It}static get EVENT_KEY(){return".bs.popover"}static get DefaultType(){return xt}isWithContent(){return this.getTitle()||this._getContent()}setContent(){const t=this.getTipElement();this.setElementContent(U.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(U.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this.config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Nt);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.popover");const s="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new jt(this,s),w.set(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}v("popover",jt);const Pt={offset:10,method:"auto",target:""},Mt={offset:"number",method:"string",target:"(string|element)"};class Ht extends M{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Pt}static get DATA_KEY(){return"bs.scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),U.find(this._selector).map(t=>{const i=o(t),n=i?U.findOne(i):null;if(n){const t=n.getBoundingClientRect();if(t.width||t.height)return[$[e](n).top+s,i]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){super.dispose(),P.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}_getConfig(t){if("string"!=typeof(t={...Pt,..."object"==typeof t&&t?t:{}}).target&&c(t.target)){let{id:e}=t.target;e||(e=i("scrollspy"),t.target.id=e),t.target="#"+e}return d("scrollspy",t,Mt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),s=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=s){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),s=U.findOne(e.join(","));s.classList.contains("dropdown-item")?(U.findOne(".dropdown-toggle",s.closest(".dropdown")).classList.add("active"),s.classList.add("active")):(s.classList.add("active"),U.parents(s,".nav, .list-group").forEach(t=>{U.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),U.prev(t,".nav-item").forEach(t=>{U.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){U.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.scrollspy");if(e||(e=new Ht(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{U.find('[data-bs-spy="scroll"]').forEach(t=>new Ht(t,$.getDataAttributes(t)))}),v("scrollspy",Ht);class Rt extends M{static get DATA_KEY(){return"bs.tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active")||g(this._element))return;let t;const e=r(this._element),s=this._element.closest(".nav, .list-group");if(s){const e="UL"===s.nodeName||"OL"===s.nodeName?":scope > li > .active":".active";t=U.find(e,s),t=t[t.length-1]}const i=t?P.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==i&&i.defaultPrevented)return;this._activate(this._element,s);const n=()=>{P.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,n):n()}_activate(t,e,s){const i=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?U.children(e,".active"):U.find(":scope > li > .active",e))[0],n=s&&i&&i.classList.contains("fade"),o=()=>this._transitionComplete(t,i,s);if(i&&n){const t=a(i);i.classList.remove("show"),P.one(i,"transitionend",o),h(i,t)}else o()}_transitionComplete(t,e,s){if(e){e.classList.remove("active");const t=U.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu")&&(t.closest(".dropdown")&&U.find(".dropdown-toggle").forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)),s&&s()}static jQueryInterface(t){return this.each((function(){const e=w.get(this,"bs.tab")||new Rt(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(w.get(this,"bs.tab")||new Rt(this)).show()})),v("tab",Rt);const Bt={animation:"boolean",autohide:"boolean",delay:"number"},Wt={animation:!0,autohide:!0,delay:5e3};class $t extends M{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._setListeners()}static get DefaultType(){return Bt}static get Default(){return Wt}static get DATA_KEY(){return"bs.toast"}show(){if(P.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");const t=()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.toast"),this._config.autohide&&(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))};if(this._element.classList.remove("hide"),m(this._element),this._element.classList.add("showing"),this._config.animation){const e=a(this._element);P.one(this._element,"transitionend",t),h(this._element,e)}else t()}hide(){if(!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.toast").defaultPrevented)return;const t=()=>{this._element.classList.add("hide"),P.trigger(this._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){const e=a(this._element);P.one(this._element,"transitionend",t),h(this._element,e)}else t()}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.toast"),super.dispose(),this._config=null}_getConfig(t){return t={...Wt,...$.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},d("toast",t,this.constructor.DefaultType),t}_setListeners(){P.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide())}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.toast");if(e||(e=new $t(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return v("toast",$t),{Alert:H,Button:R,Carousel:X,Collapse:Z,Dropdown:lt,Modal:dt,Offcanvas:_t,Popover:jt,ScrollSpy:Ht,Tab:Rt,Toast:$t,Tooltip:St}})); //# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/dist/js/bootstrap.min.js.map b/dist/js/bootstrap.min.js.map index a9d0b75c825a..2a317b1c92b8 100644 --- a/dist/js/bootstrap.min.js.map +++ b/dist/js/bootstrap.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["storeData","id","getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","_window$getComputedSt","window","getComputedStyle","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","noop","reflow","offsetHeight","getjQuery","jQuery","body","hasAttribute","isRTL","documentElement","dir","defineJQueryPlugin","name","plugin","callback","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","mapData","set","key","data","bsKey","get","keyProperties","delete","Data","instance","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","has","addHandler","oneOff","_normalizeParams","handlers","previousFn","domElements","querySelectorAll","target","this","delegateTarget","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","_normalizeParams2","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","jQueryEvent","isNative","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","BaseComponent","_element","constructor","DATA_KEY","dispose","getInstance","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_this","classList","remove","contains","_destroyElement","removeChild","each","handleDismiss","alertInstance","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","SelectorEngine","_ref","concat","Element","prototype","_ref2","children","child","matches","previous","previousElementSibling","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","Carousel","_BaseComponent","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","_this2","activeIndex","_getItemIndex","direction","_extends","_handleSwipe","absDeltax","abs","_this3","_keydown","_addTouchEventListeners","_this4","start","pointerType","touches","clientX","end","clearTimeout","itemImg","e","add","move","tagName","indexOf","_getItemByDirection","activeElement","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","from","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","_this5","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","carouselInterface","action","ride","dataApiClickHandler","slideIndex","carousels","parent","Collapse","_isTransitioning","_triggerArray","SELECTOR_DATA_TOGGLE","toggleList","elem","filterElement","foundElem","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","find","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","REGEXP_KEYDOWN","ARROW_UP_KEY","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","flip","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","focus","destroy","update","stopPropagation","nextElementSibling","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","map","popperData","defaultBsPopperConfig","placement","options","altBoundary","dropdownInterface","toggles","context","clickEvent","dropdownMenu","dataApiKeydownHandler","items","click","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","modalBody","Node","ELEMENT_NODE","appendChild","_enforceFocus","transitionComplete","_this6","_triggerBackdropTransition","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","animate","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","_this10","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","_this11","_setElementAttributes","calculatedValue","styleProp","actualValue","_resetElementAttributes","scrollDiv","scrollbarWidth","width","clientWidth","_this12","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elements","_loop","el","elName","nodeName","attributeList","allowedAttributes","attr","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","Error","isWithContent","shadowRoot","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","isInTheDom","ownerDocument","tipId","NAME","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","_tip$classList","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","CLASS_PREFIX","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","state","popper","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","parents","ancestor","listGroup","SELECTOR_NAV_LINKS","navItem","node","spy","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta2'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n if (!element.classList.contains(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, 'transitionend', () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.getData(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst DIRECTION_NEXT = 'next'\nconst DIRECTION_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex ?\n DIRECTION_NEXT :\n DIRECTION_PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n // swipe left\n if (direction > 0) {\n if (isRTL) {\n this.next()\n } else {\n this.prev()\n }\n }\n\n // swipe right\n if (direction < 0) {\n if (isRTL) {\n this.prev()\n } else {\n this.next()\n }\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n if (event.touches && event.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault()\n if (isRTL) {\n this.next()\n } else {\n this.prev()\n }\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault()\n if (isRTL) {\n this.prev()\n } else {\n this.next()\n }\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === DIRECTION_NEXT\n const isPrevDirection = direction === DIRECTION_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrevDirection && activeIndex === 0) ||\n (isNextDirection && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === DIRECTION_PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(direction, element) {\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || (activeElement && this._getItemByDirection(direction, activeElement))\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const directionalClassName = direction === DIRECTION_NEXT ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = direction === DIRECTION_NEXT ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = direction === DIRECTION_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, 'transitionend', () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.getData(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.setData(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.getData(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_FORM_CHILD = '.dropdown form'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n flip: true,\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n altBoundary: this._config.flip,\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.getData(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n return\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data.getData(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event && ((event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName)) ||\n (event.type === 'keyup' && event.key === TAB_KEY)) &&\n dropdownMenu.contains(event.target)) {\n continue\n }\n\n const hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(dropdownMenu, 'popper')\n EventHandler.trigger(toggles[i], EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.click()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown.dropdownInterface(this, 'toggle')\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, e => e.stopPropagation())\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = this._element.classList.contains(CLASS_NAME_FADE)\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (transition) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (transition) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, 'transitionend', transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const animate = this._element.classList.contains(CLASS_NAME_FADE) ?\n CLASS_NAME_FADE :\n ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, 'transitionend', callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (this._element.classList.contains(CLASS_NAME_FADE)) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, 'transitionend', callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL) || (this._isBodyOverflowing && !isModalOverflowing && isRTL)) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL) || (!this._isBodyOverflowing && isModalOverflowing && isRTL)) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - this._scrollbarWidth)\n this._setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n SelectorEngine.find(selector)\n .forEach(element => {\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'\n })\n }\n\n _resetScrollbar() {\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n this._resetElementAttributes('body', 'paddingRight')\n }\n\n _resetElementAttributes(selector, styleProp) {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined' && element === document.body) {\n element.style[styleProp] = ''\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.getData(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\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 */\nconst 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 */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\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', 'srcset', '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\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip && this.tip.parentNode) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.setData(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n }\n\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, 'transitionend', complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, 'transitionend', complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.getData(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.setData(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this.config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n altBoundary: true,\n fallbackPlacements: this.config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event)\n )\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.setData(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both