PageSourceSearch

https://perestroyki.net/bitrix/templates/perestroyki_2024/js/lib/bootstrap.js?1732961923166196

js perestroyki.net collected 2026-10-08 23:52:38 UTC 166,196 bytes, 4,435 lines download raw bytes

vendor: 15,437 bytes, lines 1-436
1/*!
2 * Bootstrap v4.3.1 (https://getbootstrap.com/)
3 * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6(function (global, factory) {
7    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8        typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9            (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10}(this, function (exports, $, Popper) { 'use strict';
11
12    $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13    Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
15    function _defineProperties(target, props) {
16        for (var i = 0; i < props.length; i++) {
17            var descriptor = props[i];
18            descriptor.enumerable = descriptor.enumerable || false;
19            descriptor.configurable = true;
20            if ("value" in descriptor) descriptor.writable = true;
21            Object.defineProperty(target, descriptor.key, descriptor);
22        }
23    }
24
25    function _createClass(Constructor, protoProps, staticProps) {
26        if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27        if (staticProps) _defineProperties(Constructor, staticProps);
28        return Constructor;
29    }
30
31    function _defineProperty(obj, key, value) {
32        if (key in obj) {
33            Object.defineProperty(obj, key, {
34                value: value,
35                enumerable: true,
36                configurable: true,
37                writable: true
38            });
39        } else {
40            obj[key] = value;
41        }
42
43        return obj;
44    }
45
46    function _objectSpread(target) {
47        for (var i = 1; i < arguments.length; i++) {
48            var source = arguments[i] != null ? arguments[i] : {};
49            var ownKeys = Object.keys(source);
50
51            if (typeof Object.getOwnPropertySymbols === 'function') {
52                ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53                    return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54                }));
55            }
56
57            ownKeys.forEach(function (key) {
58                _defineProperty(target, key, source[key]);
59            });
60        }
61
62        return target;
63    }
64
65    function _inheritsLoose(subClass, superClass) {
66        subClass.prototype = Object.create(superClass.prototype);
67        subClass.prototype.constructor = subClass;
68        subClass.__proto__ = superClass;
69    }
70
71    /**
72     * --------------------------------------------------------------------------
73     * Bootstrap (v4.3.1): util.js
74     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75     * --------------------------------------------------------------------------
76     */
77    /**
78     * ------------------------------------------------------------------------
79     * Private TransitionEnd Helpers
80     * ------------------------------------------------------------------------
81     */
82
83    var TRANSITION_END = 'transitionend';
84    var MAX_UID = 1000000;
85    var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
86
87    function toType(obj) {
88        return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
89    }
90
91    function getSpecialTransitionEndEvent() {
92        return {
93            bindType: TRANSITION_END,
94            delegateType: TRANSITION_END,
95            handle: function handle(event) {
96                if ($(event.target).is(this)) {
97                    return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
98                }
99
100                return undefined; // eslint-disable-line no-undefined
101            }
102        };
103    }
104
105    function transitionEndEmulator(duration) {
106        var _this = this;
107
108        var called = false;
109        $(this).one(Util.TRANSITION_END, function () {
110            called = true;
111        });
112        setTimeout(function () {
113            if (!called) {
114                Util.triggerTransitionEnd(_this);
115            }
116        }, duration);
117        return this;
118    }
119
120    function setTransitionEndSupport() {
121        $.fn.emulateTransitionEnd = transitionEndEmulator;
122        $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
123    }
124    /**
125     * --------------------------------------------------------------------------
126     * Public Util Api
127     * --------------------------------------------------------------------------
128     */
129
130
131    var Util = {
132        TRANSITION_END: 'bsTransitionEnd',
133        getUID: function getUID(prefix) {
134            do {
135                // eslint-disable-next-line no-bitwise
136                prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
137            } while (document.getElementById(prefix));
138
139            return prefix;
140        },
141        getSelectorFromElement: function getSelectorFromElement(element) {
142            var selector = element.getAttribute('data-target');
143
144            if (!selector || selector === '#') {
145                var hrefAttr = element.getAttribute('href');
146                selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
147            }
148
149            try {
150                return document.querySelector(selector) ? selector : null;
151            } catch (err) {
152                return null;
153            }
154        },
155        getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
156            if (!element) {
157                return 0;
158            } // Get transition-duration of the element
159
160
161            var transitionDuration = $(element).css('transition-duration');
162            var transitionDelay = $(element).css('transition-delay');
163            var floatTransitionDuration = parseFloat(transitionDuration);
164            var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
165
166            if (!floatTransitionDuration && !floatTransitionDelay) {
167                return 0;
168            } // If multiple durations are defined, take the first
169
170
171            transitionDuration = transitionDuration.split(',')[0];
172            transitionDelay = transitionDelay.split(',')[0];
173            return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
174        },
175        reflow: function reflow(element) {
176            return element.offsetHeight;
177        },
178        triggerTransitionEnd: function triggerTransitionEnd(element) {
179            $(element).trigger(TRANSITION_END);
180        },
181        // TODO: Remove in v5
182        supportsTransitionEnd: function supportsTransitionEnd() {
183            return Boolean(TRANSITION_END);
184        },
185        isElement: function isElement(obj) {
186            return (obj[0] || obj).nodeType;
187        },
188        typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
189            for (var property in configTypes) {
190                if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
191                    var expectedTypes = configTypes[property];
192                    var value = config[property];
193                    var valueType = value && Util.isElement(value) ? 'element' : toType(value);
194
195                    if (!new RegExp(expectedTypes).test(valueType)) {
196                        throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
197                    }
198                }
199            }
200        },
201        findShadowRoot: function findShadowRoot(element) {
202            if (!document.documentElement.attachShadow) {
203                return null;
204            } // Can find the shadow root otherwise it'll return the document
205
206
207            if (typeof element.getRootNode === 'function') {
208                var root = element.getRootNode();
209                return root instanceof ShadowRoot ? root : null;
210            }
211
212            if (element instanceof ShadowRoot) {
213                return element;
214            } // when we don't find a shadow root
215
216
217            if (!element.parentNode) {
218                return null;
219            }
220
221            return Util.findShadowRoot(element.parentNode);
222        }
223    };
224    setTransitionEndSupport();
225
226    /**
227     * ------------------------------------------------------------------------
228     * Constants
229     * ------------------------------------------------------------------------
230     */
231
232    var NAME = 'alert';
233    var VERSION = '4.3.1';
234    var DATA_KEY = 'bs.alert';
235    var EVENT_KEY = "." + DATA_KEY;
236    var DATA_API_KEY = '.data-api';
237    var JQUERY_NO_CONFLICT = $.fn[NAME];
238    var Selector = {
239        DISMISS: '[data-dismiss="alert"]'
240    };
241    var Event = {
242        CLOSE: "close" + EVENT_KEY,
243        CLOSED: "closed" + EVENT_KEY,
244        CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
245    };
246    var ClassName = {
247        ALERT: 'alert',
248        FADE: 'fade',
249        SHOW: 'show'
250        /**
251         * ------------------------------------------------------------------------
252         * Class Definition
253         * ------------------------------------------------------------------------
254         */
255
256    };
257
258    var Alert =
259        /*#__PURE__*/
260        function () {
261            function Alert(element) {
262                this._element = element;
263            } // Getters
264
265
266            var _proto = Alert.prototype;
267
268            // Public
269            _proto.close = function close(element) {
270                var rootElement = this._element;
271
272                if (element) {
273                    rootElement = this._getRootElement(element);
274                }
275
276                var customEvent = this._triggerCloseEvent(rootElement);
277
278                if (customEvent.isDefaultPrevented()) {
279                    return;
280                }
281
282                this._removeElement(rootElement);
283            };
284
285            _proto.dispose = function dispose() {
286                $.removeData(this._element, DATA_KEY);
287                this._element = null;
288            } // Private
289            ;
290
291            _proto._getRootElement = function _getRootElement(element) {
292                var selector = Util.getSelectorFromElement(element);
293                var parent = false;
294
295                if (selector) {
296                    parent = document.querySelector(selector);
297                }
298
299                if (!parent) {
300                    parent = $(element).closest("." + ClassName.ALERT)[0];
301                }
302
303                return parent;
304            };
305
306            _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
307                var closeEvent = $.Event(Event.CLOSE);
308                $(element).trigger(closeEvent);
309                return closeEvent;
310            };
311
312            _proto._removeElement = function _removeElement(element) {
313                var _this = this;
314
315                $(element).removeClass(ClassName.SHOW);
316
317                if (!$(element).hasClass(ClassName.FADE)) {
318                    this._destroyElement(element);
319
320                    return;
321                }
322
323                var transitionDuration = Util.getTransitionDurationFromElement(element);
324                $(element).one(Util.TRANSITION_END, function (event) {
325                    return _this._destroyElement(element, event);
326                }).emulateTransitionEnd(transitionDuration);
327            };
328
329            _proto._destroyElement = function _destroyElement(element) {
330                $(element).detach().trigger(Event.CLOSED).remove();
331            } // Static
332            ;
333
334            Alert._jQueryInterface = function _jQueryInterface(config) {
335                return this.each(function () {
336                    var $element = $(this);
337                    var data = $element.data(DATA_KEY);
338
339                    if (!data) {
340                        data = new Alert(this);
341                        $element.data(DATA_KEY, data);
342                    }
343
344                    if (config === 'close') {
345                        data[config](this);
346                    }
347                });
348            };
349
350            Alert._handleDismiss = function _handleDismiss(alertInstance) {
351                return function (event) {
352                    if (event) {
353                        event.preventDefault();
354                    }
355
356                    alertInstance.close(this);
357                };
358            };
359
360            _createClass(Alert, null, [{
361                key: "VERSION",
362                get: function get() {
363                    return VERSION;
364                }
365            }]);
366
367            return Alert;
368        }();
369    /**
370     * ------------------------------------------------------------------------
371     * Data Api implementation
372     * ------------------------------------------------------------------------
373     */
374
375
376    $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
377    /**
378     * ------------------------------------------------------------------------
379     * jQuery
380     * ------------------------------------------------------------------------
381     */
382
383    $.fn[NAME] = Alert._jQueryInterface;
384    $.fn[NAME].Constructor = Alert;
385
386    $.fn[NAME].noConflict = function () {
387        $.fn[NAME] = JQUERY_NO_CONFLICT;
388        return Alert._jQueryInterface;
389    };
390
391    /**
392     * ------------------------------------------------------------------------
393     * Constants
394     * ------------------------------------------------------------------------
395     */
396
397    var NAME$1 = 'button';
398    var VERSION$1 = '4.3.1';
399    var DATA_KEY$1 = 'bs.button';
400    var EVENT_KEY$1 = "." + DATA_KEY$1;
401    var DATA_API_KEY$1 = '.data-api';
402    var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
403    var ClassName$1 = {
404        ACTIVE: 'active',
405        BUTTON: 'btn',
406        FOCUS: 'focus'
407    };
408    var Selector$1 = {
409        DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
410        DATA_TOGGLE: '[data-toggle="buttons"]',
411        INPUT: 'input:not([type="hidden"])',
412        ACTIVE: '.active',
413        BUTTON: '.btn'
414    };
415    var Event$1 = {
416        CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
417        FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
418        /**
419         * ------------------------------------------------------------------------
420         * Class Definition
421         * ------------------------------------------------------------------------
422         */
423
424    };
425
426    var Button =
427        /*#__PURE__*/
428        function () {
429            function Button(element) {
430                this._element = element;
431            } // Getters
432
433
434            var _proto = Button.prototype;
435
436            // Public
vendor: 6,637 bytes, lines 437-618
437            _proto.toggle = function toggle() {
438                var triggerChangeEvent = true;
439                var addAriaPressed = true;
440                var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
441
442                if (rootElement) {
443                    var input = this._element.querySelector(Selector$1.INPUT);
444
445                    if (input) {
446                        if (input.type === 'radio') {
447                            if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
448                                triggerChangeEvent = false;
449                            } else {
450                                var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
451
452                                if (activeElement) {
453                                    $(activeElement).removeClass(ClassName$1.ACTIVE);
454                                }
455                            }
456                        }
457
458                        if (triggerChangeEvent) {
459                            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
460                                return;
461                            }
462
463                            input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
464                            $(input).trigger('change');
465                        }
466
467                        input.focus();
468                        addAriaPressed = false;
469                    }
470                }
471
472                if (addAriaPressed) {
473                    this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
474                }
475
476                if (triggerChangeEvent) {
477                    $(this._element).toggleClass(ClassName$1.ACTIVE);
478                }
479            };
480
481            _proto.dispose = function dispose() {
482                $.removeData(this._element, DATA_KEY$1);
483                this._element = null;
484            } // Static
485            ;
486
487            Button._jQueryInterface = function _jQueryInterface(config) {
488                return this.each(function () {
489                    var data = $(this).data(DATA_KEY$1);
490
491                    if (!data) {
492                        data = new Button(this);
493                        $(this).data(DATA_KEY$1, data);
494                    }
495
496                    if (config === 'toggle') {
497                        data[config]();
498                    }
499                });
500            };
501
502            _createClass(Button, null, [{
503                key: "VERSION",
504                get: function get() {
505                    return VERSION$1;
506                }
507            }]);
508
509            return Button;
510        }();
511    /**
512     * ------------------------------------------------------------------------
513     * Data Api implementation
514     * ------------------------------------------------------------------------
515     */
516
517
518    $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
519        event.preventDefault();
520        var button = event.target;
521
522        if (!$(button).hasClass(ClassName$1.BUTTON)) {
523            button = $(button).closest(Selector$1.BUTTON);
524        }
525
526        Button._jQueryInterface.call($(button), 'toggle');
527    }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
528        var button = $(event.target).closest(Selector$1.BUTTON)[0];
529        $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
530    });
531    /**
532     * ------------------------------------------------------------------------
533     * jQuery
534     * ------------------------------------------------------------------------
535     */
536
537    $.fn[NAME$1] = Button._jQueryInterface;
538    $.fn[NAME$1].Constructor = Button;
539
540    $.fn[NAME$1].noConflict = function () {
541        $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
542        return Button._jQueryInterface;
543    };
544
545    /**
546     * ------------------------------------------------------------------------
547     * Constants
548     * ------------------------------------------------------------------------
549     */
550
551    var NAME$2 = 'carousel';
552    var VERSION$2 = '4.3.1';
553    var DATA_KEY$2 = 'bs.carousel';
554    var EVENT_KEY$2 = "." + DATA_KEY$2;
555    var DATA_API_KEY$2 = '.data-api';
556    var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
557    var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
558
559    var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
560
561    var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
562
563    var SWIPE_THRESHOLD = 40;
564    var Default = {
565        interval: 5000,
566        keyboard: true,
567        slide: false,
568        pause: 'hover',
569        wrap: true,
570        touch: true
571    };
572    var DefaultType = {
573        interval: '(number|boolean)',
574        keyboard: 'boolean',
575        slide: '(boolean|string)',
576        pause: '(string|boolean)',
577        wrap: 'boolean',
578        touch: 'boolean'
579    };
580    var Direction = {
581        NEXT: 'next',
582        PREV: 'prev',
583        LEFT: 'left',
584        RIGHT: 'right'
585    };
586    var Event$2 = {
587        SLIDE: "slide" + EVENT_KEY$2,
588        SLID: "slid" + EVENT_KEY$2,
589        KEYDOWN: "keydown" + EVENT_KEY$2,
590        MOUSEENTER: "mouseenter" + EVENT_KEY$2,
591        MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
592        TOUCHSTART: "touchstart" + EVENT_KEY$2,
593        TOUCHMOVE: "touchmove" + EVENT_KEY$2,
594        TOUCHEND: "touchend" + EVENT_KEY$2,
595        POINTERDOWN: "pointerdown" + EVENT_KEY$2,
596        POINTERUP: "pointerup" + EVENT_KEY$2,
597        DRAG_START: "dragstart" + EVENT_KEY$2,
598        LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
599        CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
600    };
601    var ClassName$2 = {
602        CAROUSEL: 'carousel',
603        ACTIVE: 'active',
604        SLIDE: 'slide',
605        RIGHT: 'carousel-item-right',
606        LEFT: 'carousel-item-left',
607        NEXT: 'carousel-item-next',
608        PREV: 'carousel-item-prev',
609        ITEM: 'carousel-item',
610        POINTER_EVENT: 'pointer-event'
611    };
612    var Selector$2 = {
613        ACTIVE: '.active',
614        ACTIVE_ITEM: '.active.carousel-item',
615        ITEM: '.carousel-item',
616        ITEM_IMG: '.carousel-item img',
617        NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
618        INDICATORS: '.carousel-indicators',
vendor: 7,699 bytes, lines 619-828
619        DATA_SLIDE: '[data-slide], [data-slide-to]',
620        DATA_RIDE: '[data-ride="carousel"]'
621    };
622    var PointerType = {
623        TOUCH: 'touch',
624        PEN: 'pen'
625        /**
626         * ------------------------------------------------------------------------
627         * Class Definition
628         * ------------------------------------------------------------------------
629         */
630
631    };
632
633    var Carousel =
634        /*#__PURE__*/
635        function () {
636            function Carousel(element, config) {
637                this._items = null;
638                this._interval = null;
639                this._activeElement = null;
640                this._isPaused = false;
641                this._isSliding = false;
642                this.touchTimeout = null;
643                this.touchStartX = 0;
644                this.touchDeltaX = 0;
645                this._config = this._getConfig(config);
646                this._element = element;
647                this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
648                this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
649                this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
650
651                this._addEventListeners();
652            } // Getters
653
654
655            var _proto = Carousel.prototype;
656
657            // Public
658            _proto.next = function next() {
659                if (!this._isSliding) {
660                    this._slide(Direction.NEXT);
661                }
662            };
663
664            _proto.nextWhenVisible = function nextWhenVisible() {
665                // Don't call next when the page isn't visible
666                // or the carousel or its parent isn't visible
667                if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
668                    this.next();
669                }
670            };
671
672            _proto.prev = function prev() {
673                if (!this._isSliding) {
674                    this._slide(Direction.PREV);
675                }
676            };
677
678            _proto.pause = function pause(event) {
679                if (!event) {
680                    this._isPaused = true;
681                }
682
683                if (this._element.querySelector(Selector$2.NEXT_PREV)) {
684                    Util.triggerTransitionEnd(this._element);
685                    this.cycle(true);
686                }
687
688                clearInterval(this._interval);
689                this._interval = null;
690            };
691
692            _proto.cycle = function cycle(event) {
693                if (!event) {
694                    this._isPaused = false;
695                }
696
697                if (this._interval) {
698                    clearInterval(this._interval);
699                    this._interval = null;
700                }
701
702                if (this._config.interval && !this._isPaused) {
703                    this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
704                }
705            };
706
707            _proto.to = function to(index) {
708                var _this = this;
709
710                this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
711
712                var activeIndex = this._getItemIndex(this._activeElement);
713
714                if (index > this._items.length - 1 || index < 0) {
715                    return;
716                }
717
718                if (this._isSliding) {
719                    $(this._element).one(Event$2.SLID, function () {
720                        return _this.to(index);
721                    });
722                    return;
723                }
724
725                if (activeIndex === index) {
726                    this.pause();
727                    this.cycle();
728                    return;
729                }
730
731                var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
732
733                this._slide(direction, this._items[index]);
734            };
735
736            _proto.dispose = function dispose() {
737                $(this._element).off(EVENT_KEY$2);
738                $.removeData(this._element, DATA_KEY$2);
739                this._items = null;
740                this._config = null;
741                this._element = null;
742                this._interval = null;
743                this._isPaused = null;
744                this._isSliding = null;
745                this._activeElement = null;
746                this._indicatorsElement = null;
747            } // Private
748            ;
749
750            _proto._getConfig = function _getConfig(config) {
751                config = _objectSpread({}, Default, config);
752                Util.typeCheckConfig(NAME$2, config, DefaultType);
753                return config;
754            };
755
756            _proto._handleSwipe = function _handleSwipe() {
757                var absDeltax = Math.abs(this.touchDeltaX);
758
759                if (absDeltax <= SWIPE_THRESHOLD) {
760                    return;
761                }
762
763                var direction = absDeltax / this.touchDeltaX; // swipe left
764
765                if (direction > 0) {
766                    this.prev();
767                } // swipe right
768
769
770                if (direction < 0) {
771                    this.next();
772                }
773            };
774
775            _proto._addEventListeners = function _addEventListeners() {
776                var _this2 = this;
777
778                if (this._config.keyboard) {
779                    $(this._element).on(Event$2.KEYDOWN, function (event) {
780                        return _this2._keydown(event);
781                    });
782                }
783
784                if (this._config.pause === 'hover') {
785                    $(this._element).on(Event$2.MOUSEENTER, function (event) {
786                        return _this2.pause(event);
787                    }).on(Event$2.MOUSELEAVE, function (event) {
788                        return _this2.cycle(event);
789                    });
790                }
791
792                if (this._config.touch) {
793                    this._addTouchEventListeners();
794                }
795            };
796
797            _proto._addTouchEventListeners = function _addTouchEventListeners() {
798                var _this3 = this;
799
800                if (!this._touchSupported) {
801                    return;
802                }
803
804                var start = function start(event) {
805                    if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
806                        _this3.touchStartX = event.originalEvent.clientX;
807                    } else if (!_this3._pointerEvent) {
808                        _this3.touchStartX = event.originalEvent.touches[0].clientX;
809                    }
810                };
811
812                var move = function move(event) {
813                    // ensure swiping with one touch and not pinching
814                    if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
815                        _this3.touchDeltaX = 0;
816                    } else {
817                        _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
818                    }
819                };
820
821                var end = function end(event) {
822                    if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
823                        _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
824                    }
825
826                    _this3._handleSwipe();
827
828                    if (_this3._config.pause === 'hover') {
829                        // If it's a touch-enabled device, mouseenter/leave are fired as
830                        // part of the mouse compatibility events on first tap - the carousel
831                        // would stop cycling until user tapped out of it;
832                        // here, we listen for touchend, explicitly pause the carousel
833                        // (as if it's the second time we tap on it, mouseenter compat event
834                        // is NOT fired) and after a timeout (to allow for mouse compatibility
835                        // events to fire) we explicitly restart cycling
836                        _this3.pause();
837
838                        if (_this3.touchTimeout) {
839                            clearTimeout(_this3.touchTimeout);
840                        }
841
842                        _this3.touchTimeout = setTimeout(function (event) {
843                            return _this3.cycle(event);
844                        }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
845                    }
846                };
847
848                $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
849                    return e.preventDefault();
850                });
851
852                if (this._pointerEvent) {
853                    $(this._element).on(Event$2.POINTERDOWN, function (event) {
854                        return start(event);
855                    });
856                    $(this._element).on(Event$2.POINTERUP, function (event) {
857                        return end(event);
858                    });
859
860                    this._element.classList.add(ClassName$2.POINTER_EVENT);
861                } else {
862                    $(this._element).on(Event$2.TOUCHSTART, function (event) {
863                        return start(event);
864                    });
865                    $(this._element).on(Event$2.TOUCHMOVE, function (event) {
866                        return move(event);
867                    });
868                    $(this._element).on(Event$2.TOUCHEND, function (event) {
869                        return end(event);
870                    });
871                }
872            };
873
874            _proto._keydown = function _keydown(event) {
875                if (/input|textarea/i.test(event.target.tagName)) {
876                    return;
877                }
878
879                switch (event.which) {
880                    case ARROW_LEFT_KEYCODE:
881                        event.preventDefault();
882                        this.prev();
883                        break;
884
885                    case ARROW_RIGHT_KEYCODE:
886                        event.preventDefault();
887                        this.next();
888                        break;
889
890                    default:
891                }
892            };
893
894            _proto._getItemIndex = function _getItemIndex(element) {
895                this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
896                return this._items.indexOf(element);
897            };
898
899            _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
900                var isNextDirection = direction === Direction.NEXT;
901                var isPrevDirection = direction === Direction.PREV;
902
903                var activeIndex = this._getItemIndex(activeElement);
904
905                var lastItemIndex = this._items.length - 1;
906                var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
907
908                if (isGoingToWrap && !this._config.wrap) {
909                    return activeElement;
910                }
911
912                var delta = direction === Direction.PREV ? -1 : 1;
913                var itemIndex = (activeIndex + delta) % this._items.length;
914                return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
915            };
916
917            _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
918                var targetIndex = this._getItemIndex(relatedTarget);
919
920                var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
921
922                var slideEvent = $.Event(Event$2.SLIDE, {
923                    relatedTarget: relatedTarget,
924                    direction: eventDirectionName,
925                    from: fromIndex,
926                    to: targetIndex
927                });
928                $(this._element).trigger(slideEvent);
929                return slideEvent;
930            };
931
932            _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
933                if (this._indicatorsElement) {
934                    var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
935                    $(indicators).removeClass(ClassName$2.ACTIVE);
936
937                    var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
938
939                    if (nextIndicator) {
940                        $(nextIndicator).addClass(ClassName$2.ACTIVE);
941                    }
942                }
943            };
944
945            _proto._slide = function _slide(direction, element) {
946                var _this4 = this;
947
948                var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
949
950                var activeElementIndex = this._getItemIndex(activeElement);
951
952                var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
953
954                var nextElementIndex = this._getItemIndex(nextElement);
955
956                var isCycling = Boolean(this._interval);
957                var directionalClassName;
958                var orderClassName;
959                var eventDirectionName;
960
961                if (direction === Direction.NEXT) {
962                    directionalClassName = ClassName$2.LEFT;
963                    orderClassName = ClassName$2.NEXT;
964                    eventDirectionName = Direction.LEFT;
965                } else {
966                    directionalClassName = ClassName$2.RIGHT;
967                    orderClassName = ClassName$2.PREV;
968                    eventDirectionName = Direction.RIGHT;
969                }
970
971                if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
972                    this._isSliding = false;
973                    return;
974                }
975
976                var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
977
978                if (slideEvent.isDefaultPrevented()) {
979                    return;
980                }
981
982                if (!activeElement || !nextElement) {
983                    // Some weirdness is happening, so we bail
984                    return;
985                }
986
987                this._isSliding = true;
988
989                if (isCycling) {
990                    this.pause();
991                }
992
993                this._setActiveIndicatorElement(nextElement);
994
995                var slidEvent = $.Event(Event$2.SLID, {
996                    relatedTarget: nextElement,
997                    direction: eventDirectionName,
998                    from: activeElementIndex,
999                    to: nextElementIndex
1000                });
1001
1002                if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1003                    $(nextElement).addClass(orderClassName);
1004                    Util.reflow(nextElement);
1005                    $(activeElement).addClass(directionalClassName);
1006                    $(nextElement).addClass(directionalClassName);
1007                    var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
1008
1009                    if (nextElementInterval) {
1010                        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1011                        this._config.interval = nextElementInterval;
1012                    } else {
1013                        this._config.interval = this._config.defaultInterval || this._config.interval;
1014                    }
1015
1016                    var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1017                    $(activeElement).one(Util.TRANSITION_END, function () {
1018                        $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1019                        $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1020                        _this4._isSliding = false;
1021                        setTimeout(function () {
1022                            return $(_this4._element).trigger(slidEvent);
1023                        }, 0);
1024                    }).emulateTransitionEnd(transitionDuration);
1025                } else {
1026                    $(activeElement).removeClass(ClassName$2.ACTIVE);
1027                    $(nextElement).addClass(ClassName$2.ACTIVE);
1028                    this._isSliding = false;
1029                    $(this._element).trigger(slidEvent);
1030                }
1031
1032                if (isCycling) {
1033                    this.cycle();
1034                }
1035            } // Static
1036            ;
1037
1038            Carousel._jQueryInterface = function _jQueryInterface(config) {
1039                return this.each(function () {
1040                    var data = $(this).data(DATA_KEY$2);
1041
1042                    var _config = _objectSpread({}, Default, $(this).data());
1043
1044                    if (typeof config === 'object') {
1045                        _config = _objectSpread({}, _config, config);
1046                    }
1047
1048                    var action = typeof config === 'string' ? config : _config.slide;
1049
1050                    if (!data) {
1051                        data = new Carousel(this, _config);
1052                        $(this).data(DATA_KEY$2, data);
1053                    }
1054
1055                    if (typeof config === 'number') {
1056                        data.to(config);
1057                    } else if (typeof action === 'string') {
1058                        if (typeof data[action] === 'undefined') {
1059                            throw new TypeError("No method named \"" + action + "\"");
1060                        }
1061
1062                        data[action]();
1063                    } else if (_config.interval && _config.ride) {
1064                        data.pause();
1065                        data.cycle();
1066                    }
1067                });
1068            };
1069
1070            Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1071                var selector = Util.getSelectorFromElement(this);
1072
1073                if (!selector) {
1074                    return;
1075                }
1076
1077                var target = $(selector)[0];
1078
1079                if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1080                    return;
1081                }
1082
1083                var config = _objectSpread({}, $(target).data(), $(this).data());
1084
1085                var slideIndex = this.getAttribute('data-slide-to');
1086
1087                if (slideIndex) {
1088                    config.interval = false;
1089                }
1090
1091                Carousel._jQueryInterface.call($(target), config);
1092
1093                if (slideIndex) {
1094                    $(target).data(DATA_KEY$2).to(slideIndex);
1095                }
1096
1097                event.preventDefault();
1098            };
1099
1100            _createClass(Carousel, null, [{
1101                key: "VERSION",
1102                get: function get() {
1103                    return VERSION$2;
1104                }
1105            }, {
1106                key: "Default",
1107                get: function get() {
1108                    return Default;
1109                }
1110            }]);
1111
1112            return Carousel;
1113        }();
1114    /**
1115     * ------------------------------------------------------------------------
1116     * Data Api implementation
1117     * ------------------------------------------------------------------------
1118     */
1119
1120
1121    $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1122    $(window).on(Event$2.LOAD_DATA_API, function () {
1123        var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1124
1125        for (var i = 0, len = carousels.length; i < len; i++) {
1126            var $carousel = $(carousels[i]);
1127
1128            Carousel._jQueryInterface.call($carousel, $carousel.data());
1129        }
1130    });
1131    /**
1132     * ------------------------------------------------------------------------
1133     * jQuery
1134     * ------------------------------------------------------------------------
1135     */
1136
1137    $.fn[NAME$2] = Carousel._jQueryInterface;
1138    $.fn[NAME$2].Constructor = Carousel;
1139
1140    $.fn[NAME$2].noConflict = function () {
1141        $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
1142        return Carousel._jQueryInterface;
1143    };
1144
1145    /**
1146     * ------------------------------------------------------------------------
1147     * Constants
1148     * ------------------------------------------------------------------------
1149     */
1150
1151    var NAME$3 = 'collapse';
1152    var VERSION$3 = '4.3.1';
1153    var DATA_KEY$3 = 'bs.collapse';
1154    var EVENT_KEY$3 = "." + DATA_KEY$3;
1155    var DATA_API_KEY$3 = '.data-api';
1156    var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
1157    var Default$1 = {
1158        toggle: true,
1159        parent: ''
1160    };
1161    var DefaultType$1 = {
1162        toggle: 'boolean',
1163        parent: '(string|element)'
1164    };
1165    var Event$3 = {
1166        SHOW: "show" + EVENT_KEY$3,
1167        SHOWN: "shown" + EVENT_KEY$3,
1168        HIDE: "hide" + EVENT_KEY$3,
1169        HIDDEN: "hidden" + EVENT_KEY$3,
1170        CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1171    };
1172    var ClassName$3 = {
1173        SHOW: 'show',
1174        COLLAPSE: 'collapse',
1175        COLLAPSING: 'collapsing',
1176        COLLAPSED: 'collapsed'
1177    };
1178    var Dimension = {
1179        WIDTH: 'width',
1180        HEIGHT: 'height'
1181    };
1182    var Selector$3 = {
1183        ACTIVES: '.show, .collapsing',
1184        DATA_TOGGLE: '[data-toggle="collapse"]'
1185        /**
1186         * ------------------------------------------------------------------------
1187         * Class Definition
1188         * ------------------------------------------------------------------------
1189         */
1190
1191    };
1192
1193    var Collapse =
1194        /*#__PURE__*/
1195        function () {
1196            function Collapse(element, config) {
1197                this._isTransitioning = false;
1198                this._element = element;
1199                this._config = this._getConfig(config);
1200                this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.i
1200d + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1201                var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1202
1203                for (var i = 0, len = toggleList.length; i < len; i++) {
1204                    var elem = toggleList[i];
1205                    var selector = Util.getSelectorFromElement(elem);
1206                    var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
1207                        return foundElem === element;
1208                    });
1209
1210                    if (selector !== null && filterElement.length > 0) {
1211                        this._selector = selector;
1212
1213                        this._triggerArray.push(elem);
1214                    }
1215                }
1216
1217                this._parent = this._config.parent ? this._getParent() : null;
1218
1219                if (!this._config.parent) {
1220                    this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1221                }
1222
1223                if (this._config.toggle) {
1224                    this.toggle();
1225                }
1226            } // Getters
1227
1228
1229            var _proto = Collapse.prototype;
1230
1231            // Public
1232            _proto.toggle = function toggle() {
1233                if ($(this._element).hasClass(ClassName$3.SHOW)) {
1234                    this.hide();
1235                } else {
1236                    this.show();
1237                }
1238            };
1239
1240            _proto.show = function show() {
1241                var _this = this;
1242
1243                if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1244                    return;
1245                }
1246
1247                var actives;
1248                var activesData;
1249
1250                if (this._parent) {
1251                    actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1252                        if (typeof _this._config.parent === 'string') {
1253                            return elem.getAttribute('data-parent') === _this._config.parent;
1254                        }
1255
1256                        return elem.classList.contains(ClassName$3.COLLAPSE);
1257                    });
1258
1259                    if (actives.length === 0) {
1260                        actives = null;
1261                    }
1262                }
1263
1264                if (actives) {
1265                    activesData = $(actives).not(this._selector).data(DATA_KEY$3);
1266
1267                    if (activesData && activesData._isTransitioning) {
1268                        return;
1269                    }
1270                }
1271
1272                var startEvent = $.Event(Event$3.SHOW);
1273                $(this._element).trigger(startEvent);
1274
1275                if (startEvent.isDefaultPrevented()) {
1276                    return;
1277                }
1278
1279                if (actives) {
1280                    Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
1281
1282                    if (!activesData) {
1283                        $(actives).data(DATA_KEY$3, null);
1284                    }
1285                }
1286
1287                var dimension = this._getDimension();
1288
1289                $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1290                this._element.style[dimension] = 0;
1291
1292                if (this._triggerArray.length) {
1293                    $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1294                }
1295
1296                this.setTransitioning(true);
1297
1298                var complete = function complete() {
1299                    $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1300                    _this._element.style[dimension] = '';
1301
1302                    _this.setTransitioning(false);
1303
1304                    $(_this._element).trigger(Event$3.SHOWN);
1305                };
1306
1307                var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1308                var scrollSize = "scroll" + capitalizedDimension;
1309                var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1310                $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1311                this._element.style[dimension] = this._element[scrollSize] + "px";
1312            };
1313
1314            _proto.hide = function hide() {
1315                var _this2 = this;
1316
1317                if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1318                    return;
1319                }
1320
1321                var startEvent = $.Event(Event$3.HIDE);
1322                $(this._element).trigger(startEvent);
1323
1324                if (startEvent.isDefaultPrevented()) {
1325                    return;
1326                }
1327
1328                var dimension = this._getDimension();
1329
1330                this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1331                Util.reflow(this._element);
1332                $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1333                var triggerArrayLength = this._triggerArray.length;
1334
1335                if (triggerArrayLength > 0) {
1336                    for (var i = 0; i < triggerArrayLength; i++) {
1337                        var trigger = this._triggerArray[i];
1338                        var selector = Util.getSelectorFromElement(trigger);
1339
1340                        if (selector !== null) {
1341                            var $elem = $([].slice.call(document.querySelectorAll(selector)));
1342
1343                            if (!$elem.hasClass(ClassName$3.SHOW)) {
1344                                $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1345                            }
1346                        }
1347                    }
1348                }
1349
1350                this.setTransitioning(true);
1351
1352                var complete = function complete() {
1353                    _this2.setTransitioning(false);
1354
1355                    $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1356                };
1357
1358                this._element.style[dimension] = '';
1359                var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1360                $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1361            };
1362
1363            _proto.setTransitioning = function setTransitioning(isTransitioning) {
1364                this._isTransitioning = isTransitioning;
1365            };
1366
1367            _proto.dispose = function dispose() {
1368                $.removeData(this._element, DATA_KEY$3);
1369                this._config = null;
1370                this._parent = null;
1371                this._element = null;
1372                this._triggerArray = null;
1373                this._isTransitioning = null;
1374            } // Private
1375            ;
1376
1377            _proto._getConfig = function _getConfig(config) {
1378                config = _objectSpread({}, Default$1, config);
1379                config.toggle = Boolean(config.toggle); // Coerce string values
1380
1381                Util.typeCheckConfig(NAME$3, config, DefaultType$1);
1382                return config;
1383            };
1384
1385            _proto._getDimension = function _getDimension() {
1386                var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1387                return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1388            };
1389
1390            _proto._getParent = function _getParent() {
1391                var _this3 = this;
1392
1393                var parent;
1394
1395                if (Util.isElement(this._config.parent)) {
1396                    parent = this._config.parent; // It's a jQuery object
1397
1398                    if (typeof this._config.parent.jquery !== 'undefined') {
1399                        parent = this._config.parent[0];
1400                    }
1401                } else {
1402                    parent = document.querySelector(this._config.parent);
1403                }
1404
1405                var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1406                var children = [].slice.call(parent.querySelectorAll(selector));
1407                $(children).each(function (i, element) {
1408                    _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
vendor: 4,561 bytes, lines 1409-1529
1409                });
1410                return parent;
1411            };
1412
1413            _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1414                var isOpen = $(element).hasClass(ClassName$3.SHOW);
1415
1416                if (triggerArray.length) {
1417                    $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1418                }
1419            } // Static
1420            ;
1421
1422            Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1423                var selector = Util.getSelectorFromElement(element);
1424                return selector ? document.querySelector(selector) : null;
1425            };
1426
1427            Collapse._jQueryInterface = function _jQueryInterface(config) {
1428                return this.each(function () {
1429                    var $this = $(this);
1430                    var data = $this.data(DATA_KEY$3);
1431
1432                    var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1433
1434                    if (!data && _config.toggle && /show|hide/.test(config)) {
1435                        _config.toggle = false;
1436                    }
1437
1438                    if (!data) {
1439                        data = new Collapse(this, _config);
1440                        $this.data(DATA_KEY$3, data);
1441                    }
1442
1443                    if (typeof config === 'string') {
1444                        if (typeof data[config] === 'undefined') {
1445                            throw new TypeError("No method named \"" + config + "\"");
1446                        }
1447
1448                        data[config]();
1449                    }
1450                });
1451            };
1452
1453            _createClass(Collapse, null, [{
1454                key: "VERSION",
1455                get: function get() {
1456                    return VERSION$3;
1457                }
1458            }, {
1459                key: "Default",
1460                get: function get() {
1461                    return Default$1;
1462                }
1463            }]);
1464
1465            return Collapse;
1466        }();
1467    /**
1468     * ------------------------------------------------------------------------
1469     * Data Api implementation
1470     * ------------------------------------------------------------------------
1471     */
1472
1473
1474    $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1475        // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1476        if (event.currentTarget.tagName === 'A') {
1477            event.preventDefault();
1478        }
1479
1480        var $trigger = $(this);
1481        var selector = Util.getSelectorFromElement(this);
1482        var selectors = [].slice.call(document.querySelectorAll(selector));
1483        $(selectors).each(function () {
1484            var $target = $(this);
1485            var data = $target.data(DATA_KEY$3);
1486            var config = data ? 'toggle' : $trigger.data();
1487
1488            Collapse._jQueryInterface.call($target, config);
1489        });
1490    });
1491    /**
1492     * ------------------------------------------------------------------------
1493     * jQuery
1494     * ------------------------------------------------------------------------
1495     */
1496
1497    $.fn[NAME$3] = Collapse._jQueryInterface;
1498    $.fn[NAME$3].Constructor = Collapse;
1499
1500    $.fn[NAME$3].noConflict = function () {
1501        $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
1502        return Collapse._jQueryInterface;
1503    };
1504
1505    /**
1506     * ------------------------------------------------------------------------
1507     * Constants
1508     * ------------------------------------------------------------------------
1509     */
1510
1511    var NAME$4 = 'dropdown';
1512    var VERSION$4 = '4.3.1';
1513    var DATA_KEY$4 = 'bs.dropdown';
1514    var EVENT_KEY$4 = "." + DATA_KEY$4;
1515    var DATA_API_KEY$4 = '.data-api';
1516    var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
1517    var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1518
1519    var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1520
1521    var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1522
1523    var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1524
1525    var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1526
1527    var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1528
1529    var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1530    var Event$4 = {
1531        HIDE: "hide" + EVENT_KEY$4,
1532        HIDDEN: "hidden" + EVENT_KEY$4,
1533        SHOW: "show" + EVENT_KEY$4,
1534        SHOWN: "shown" + EVENT_KEY$4,
1535        CLICK: "click" + EVENT_KEY$4,
1536        CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1537        KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1538        KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1539    };
1540    var ClassName$4 = {
1541        DISABLED: 'disabled',
1542        SHOW: 'show',
1543        DROPUP: 'dropup',
1544        DROPRIGHT: 'dropright',
1545        DROPLEFT: 'dropleft',
1546        MENURIGHT: 'dropdown-menu-right',
1547        MENULEFT: 'dropdown-menu-left',
1548        POSITION_STATIC: 'position-static'
1549    };
1550    var Selector$4 = {
1551        DATA_TOGGLE: '[data-toggle="dropdown"]',
1552        FORM_CHILD: '.dropdown form',
1553        MENU: '.dropdown-menu',
1554        NAVBAR_NAV: '.navbar-nav',
1555        VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1556    };
1557    var AttachmentMap = {
1558        TOP: 'top-start',
1559        TOPEND: 'top-end',
1560        BOTTOM: 'bottom-start',
1561        BOTTOMEND: 'bottom-end',
1562        RIGHT: 'right-start',
1563        RIGHTEND: 'right-end',
1564        LEFT: 'left-start',
1565        LEFTEND: 'left-end'
1566    };
1567    var Default$2 = {
1568        offset: 0,
1569        flip: true,
1570        boundary: 'scrollParent',
1571        reference: 'toggle',
1572        display: 'dynamic'
1573    };
1574    var DefaultType$2 = {
1575        offset: '(number|string|function)',
1576        flip: 'boolean',
1577        boundary: '(string|element)',
1578        reference: '(string|element)',
1579        display: 'string'
1580        /**
1581         * ------------------------------------------------------------------------
1582         * Class Definition
1583         * ------------------------------------------------------------------------
1584         */
1585
1586    };
1587
1588    var Dropdown =
1589        /*#__PURE__*/
1590        function () {
1591            function Dropdown(element, config) {
1592                this._element = element;
1593                this._popper = null;
1594                this._config = this._getConfig(config);
1595                this._menu = this._getMenuElement();
1596                this._inNavbar = this._detectNavbar();
1597
1598                this._addEventListeners();
1599            } // Getters
1600
1601
1602            var _proto = Dropdown.prototype;
1603
1604            // Public
1605            _proto.toggle = function toggle() {
1606                if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1607                    return;
1608                }
1609
1610                var parent = Dropdown._getParentFromElement(this._element);
1611
1612                var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1613
1614                Dropdown._clearMenus();
1615
1616                if (isActive) {
1617                    return;
1618                }
1619
1620                var relatedTarget = {
1621                    relatedTarget: this._element
1622                };
1623                var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1624                $(parent).trigger(showEvent);
1625
1626                if (showEvent.isDefaultPrevented()) {
1627                    return;
1628                } // Disable totally Popper.js for Dropdown in Navbar
1629
1630
1631                if (!this._inNavbar) {
1632                    /**
1633                     * Check for Popper dependency
1634                     * Popper - https://popper.js.org
1635                     */
1636                    if (typeof Popper === 'undefined') {
1637                        throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
1638                    }
1639
1640                    var referenceElement = this._element;
1641
1642                    if (this._config.reference === 'parent') {
1643                        referenceElement = parent;
1644                    } else if (Util.isElement(this._config.reference)) {
1645                        referenceElement = this._config.reference; // Check if it's jQuery element
1646
1647                        if (typeof this._config.reference.jquery !== 'undefined') {
1648                            referenceElement = this._config.reference[0];
1649                        }
1650                    } // If boundary is not `scrollParent`, then set position to `static`
1651                    // to allow the menu to "escape" the scroll parent's boundaries
1652                    // https://github.com/twbs/bootstrap/issues/24251
1653
1654
1655                    if (this._config.boundary !== 'scrollParent') {
1656                        $(parent).addClass(ClassName$4.POSITION_STATIC);
1657                    }
1658
1659                    this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
1660                } // If this is a touch-enabled device we add extra
1661                // empty mouseover listeners to the body's immediate children;
1662                // only needed because of broken event delegation on iOS
1663                // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1664
1665
1666                if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1667                    $(document.body).children().on('mouseover', null, $.noop);
1668                }
1669
1670                this._element.focus();
1671
1672                this._element.setAttribute('aria-expanded', true);
1673
1674                $(this._menu).toggleClass(ClassName$4.SHOW);
1675                $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1676            };
1677
1678            _proto.show = function show() {
1679                if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1680                    return;
1681                }
1682
1683                var relatedTarget = {
1684                    relatedTarget: this._element
1685                };
1686                var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1687
1688                var parent = Dropdown._getParentFromElement(this._element);
1689
1690                $(parent).trigger(showEvent);
1691
1692                if (showEvent.isDefaultPrevented()) {
1693                    return;
1694                }
1695
1696                $(this._menu).toggleClass(ClassName$4.SHOW);
1697                $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1698            };
1699
1700            _proto.hide = function hide() {
1701                if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1702                    return;
1703                }
1704
1705                var relatedTarget = {
1706                    relatedTarget: this._element
1707                };
1708                var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1709
1710                var parent = Dropdown._getParentFromElement(this._element);
1711
1712                $(parent).trigger(hideEvent);
1713
1714                if (hideEvent.isDefaultPrevented()) {
1715                    return;
1716                }
1717
1718                $(this._menu).toggleClass(ClassName$4.SHOW);
1719                $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1720            };
1721
1722            _proto.dispose = function dispose() {
1723                $.removeData(this._element, DATA_KEY$4);
1724                $(this._element).off(EVENT_KEY$4);
1725                this._element = null;
1726                this._menu = null;
1727
1728                if (this._popper !== null) {
1729                    this._popper.destroy();
1730
1731                    this._popper = null;
1732                }
1733            };
1734
1735            _proto.update = function update() {
1736                this._inNavbar = this._detectNavbar();
1737
1738                if (this._popper !== null) {
1739                    this._popper.scheduleUpdate();
1740                }
1741            } // Private
1742            ;
1743
1744            _proto._addEventListeners = function _addEventListeners() {
1745                var _this = this;
1746
1747                $(this._element).on(Event$4.CLICK, function (event) {
1748                    event.preventDefault();
1749                    event.stopPropagation();
1750
1751                    _this.toggle();
1752                });
1753            };
1754
1755            _proto._getConfig = function _getConfig(config) {
1756                config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1757                Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1758                return config;
1759            };
1760
1761            _proto._getMenuElement = function _getMenuElement() {
1762                if (!this._menu) {
1763                    var parent = Dropdown._getParentFromElement(this._element);
1764
1765                    if (parent) {
1766                        this._menu = parent.querySelector(Selector$4.MENU);
1767                    }
1768                }
1769
1770                return this._menu;
1771            };
1772
1773            _proto._getPlacement = function _getPlacement() {
1774                var $parentDropdown = $(this._element.parentNode);
1775                var placement = AttachmentMap.BOTTOM; // Handle dropup
1776
1777                if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1778                    placement = AttachmentMap.TOP;
1779
1780                    if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1781                        placement = AttachmentMap.TOPEND;
1782                    }
1783                } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1784                    placement = AttachmentMap.RIGHT;
1785                } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1786                    placement = AttachmentMap.LEFT;
1787                } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1788                    placement = AttachmentMap.BOTTOMEND;
1789                }
1790
1791                return placement;
1792            };
1793
1794            _proto._detectNavbar = function _detectNavbar() {
1795                return $(this._element).closest('.navbar').length > 0;
1796            };
1797
1798            _proto._getOffset = function _getOffset() {
1799                var _this2 = this;
1800
1801                var offset = {};
1802
1803                if (typeof this._config.offset === 'function') {
1804                    offset.fn = function (data) {
1805                        data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1806                        return data;
1807                    };
1808                } else {
1809                    offset.offset = this._config.offset;
1810                }
1811
1812                return offset;
1813            };
1814
1815            _proto._getPopperConfig = function _getPopperConfig() {
1816                var popperConfig = {
1817                    placement: this._getPlacement(),
1818                    modifiers: {
1819                        offset: this._getOffset(),
1820                        flip: {
1821                            enabled: this._config.flip
1822                        },
1823                        preventOverflow: {
1824                            boundariesElement: this._config.boundary
1825                        }
1826                    } // Disable Popper.js if we have a static display
1827
1828                };
1829
1830                if (this._config.display === 'static') {
1831                    popperConfig.modifiers.applyStyle = {
1832                        enabled: false
1833                    };
1834                }
1835
1836                return popperConfig;
1837            } // Static
1838            ;
1839
1840            Dropdown._jQueryInterface = function _jQueryInterface(config) {
1841                return this.each(function () {
1842                    var data = $(this).data(DATA_KEY$4);
1843
1844                    var _config = typeof config === 'object' ? config : null;
1845
1846                    if (!data) {
1847                        data = new Dropdown(this, _config);
1848                        $(this).data(DATA_KEY$4, data);
1849                    }
1850
1851                    if (typeof config === 'string') {
1852                        if (typeof data[config] === 'undefined') {
1853                            throw new TypeError("No method named \"" + config + "\"");
1854                        }
1855
1856                        data[config]();
1857                    }
1858                });
1859            };
1860
1861            Dropdown._clearMenus = function _clearMenus(event) {
1862                if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1863                    return;
1864                }
1865
1866                var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
1867
1868                for (var i = 0, len = toggles.length; i < len; i++) {
1869                    var parent = Dropdown._getParentFromElement(toggles[i]);
1870
1871                    var context = $(toggles[i]).data(DATA_KEY$4);
1872                    var relatedTarget = {
1873                        relatedTarget: toggles[i]
1874                    };
1875
1876                    if (event && event.type === 'click') {
1877                        relatedTarget.clickEvent = event;
1878                    }
1879
1880                    if (!context) {
1881                        continue;
1882                    }
1883
1884                    var dropdownMenu = context._menu;
1885
1886                    if (!$(parent).hasClass(ClassName$4.SHOW)) {
1887                        continue;
1888                    }
1889
1890                    if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
1891                        continue;
1892                    }
1893
1894                    var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1895                    $(parent).trigger(hideEvent);
1896
1897                    if (hideEvent.isDefaultPrevented()) {
1898                        continue;
1899                    } // If this is a touch-enabled device we remove the extra
1900                    // empty mouseover listeners we added for iOS support
1901
1902
1903                    if ('ontouchstart' in document.documentElement) {
1904                        $(document.body).children().off('mouseover', null, $.noop);
1905                    }
1906
1907                    toggles[i].setAttribute('aria-expanded', 'false');
1908                    $(dropdownMenu).removeClass(ClassName$4.SHOW);
1909                    $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1910                }
1911            };
1912
1913            Dropdown._getParentFromElement = function _getParentFromElement(element) {
1914                var parent;
1915                var selector = Util.getSelectorFromElement(element);
1916
1917                if (selector) {
1918                    parent = document.querySelector(selector);
1919                }
1920
1921                return parent || element.parentNode;
1922            } // eslint-disable-next-line complexity
1923            ;
1924
1925            Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1926                // If not input/textarea:
1927                //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
1928                // If input/textarea:
1929                //  - If space key => not a dropdown command
1930                //  - If key is other than escape
1931                //    - If key is not up or down => not a dropdown command
1932                //    - If trigger inside the menu =>
1932 not a dropdown command
1933                if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1934                    return;
1935                }
1936
1937                event.preventDefault();
1938                event.stopPropagation();
1939
1940                if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
1941                    return;
1942                }
1943
1944                var parent = Dropdown._getParentFromElement(this);
1945
1946                var isActive = $(parent).hasClass(ClassName$4.SHOW);
1947
1948                if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1949                    if (event.which === ESCAPE_KEYCODE) {
1950                        var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
1951                        $(toggle).trigger('focus');
1952                    }
1953
1954                    $(this).trigger('click');
1955                    return;
1956                }
1957
1958                var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
1959
1960                if (items.length === 0) {
1961                    return;
1962                }
1963
1964                var index = items.indexOf(event.target);
1965
1966                if (event.which === ARROW_UP_KEYCODE && index > 0) {
1967                    // Up
1968                    index--;
1969                }
1970
1971                if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1972                    // Down
1973                    index++;
1974                }
1975
1976                if (index < 0) {
1977                    index = 0;
1978                }
1979
1980                items[index].focus();
1981            };
1982
1983            _createClass(Dropdown, null, [{
1984                key: "VERSION",
1985                get: function get() {
1986                    return VERSION$4;
1987                }
1988            }, {
1989                key: "Default",
1990                get: function get() {
1991                    return Default$2;
1992                }
1993            }, {
1994                key: "DefaultType",
1995                get: function get() {
1996                    return DefaultType$2;
1997                }
1998            }]);
1999
2000            return Dropdown;
2001        }();
2002    /**
2003     * ------------------------------------------------------------------------
2004     * Data Api implementation
2005     * ------------------------------------------------------------------------
2006     */
2007
2008
2009    $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2010        event.preventDefault();
2011        event.stopPropagation();
2012
2013        Dropdown._jQueryInterface.call($(this), 'toggle');
2014    }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2015        e.stopPropagation();
2016    });
2017    /**
2018     * ------------------------------------------------------------------------
2019     * jQuery
2020     * ------------------------------------------------------------------------
2021     */
2022
2023    $.fn[NAME$4] = Dropdown._jQueryInterface;
2024    $.fn[NAME$4].Constructor = Dropdown;
2025
2026    $.fn[NAME$4].noConflict = function () {
2027        $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
2028        return Dropdown._jQueryInterface;
2029    };
2030
2031    /**
2032     * ------------------------------------------------------------------------
2033     * Constants
2034     * ------------------------------------------------------------------------
2035     */
2036
2037    var NAME$5 = 'modal';
2038    var VERSION$5 = '4.3.1';
2039    var DATA_KEY$5 = 'bs.modal';
2040    var EVENT_KEY$5 = "." + DATA_KEY$5;
2041    var DATA_API_KEY$5 = '.data-api';
2042    var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
2043    var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
2044
2045    var Default$3 = {
2046        backdrop: true,
2047        keyboard: true,
2048        focus: true,
2049        show: true
2050    };
2051    var DefaultType$3 = {
2052        backdrop: '(boolean|string)',
2053        keyboard: 'boolean',
2054        focus: 'boolean',
2055        show: 'boolean'
2056    };
2057    var Event$5 = {
2058        HIDE: "hide" + EVENT_KEY$5,
2059        HIDDEN: "hidden" + EVENT_KEY$5,
2060        SHOW: "show" + EVENT_KEY$5,
2061        SHOWN: "shown" + EVENT_KEY$5,
2062        FOCUSIN: "focusin" + EVENT_KEY$5,
2063        RESIZE: "resize" + EVENT_KEY$5,
2064        CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2065        KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2066        MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2067        MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2068        CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2069    };
2070    var ClassName$5 = {
2071        SCROLLABLE: 'modal-dialog-scrollable',
2072        SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2073        BACKDROP: 'modal-backdrop',
2074        OPEN: 'modal-open',
2075        FADE: 'fade',
2076        SHOW: 'show'
2077    };
2078    var Selector$5 = {
2079        DIALOG: '.modal-dialog',
2080        MODAL_BODY: '.modal-body',
2081        DATA_TOGGLE: '[data-toggle="modal"]',
2082        DATA_DISMISS: '[data-dismiss="modal"]',
2083        FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2084        STICKY_CONTENT: '.sticky-top'
2085        /**
2086         * ------------------------------------------------------------------------
2087         * Class Definition
2088         * ------------------------------------------------------------------------
2089         */
2090
2091    };
2092
2093    var Modal =
2094        /*#__PURE__*/
2095        function () {
2096            function Modal(element, config) {
2097                this._config = this._getConfig(config);
2098                this._element = element;
2099                this._dialog = element.querySelector(Selector$5.DIALOG);
2100                this._backdrop = null;
2101                this._isShown = false;
2102                this._isBodyOverflowing = false;
2103                this._ignoreBackdropClick = false;
2104                this._isTransitioning = false;
2105                this._scrollbarWidth = 0;
2106            } // Getters
2107
2108
2109            var _proto = Modal.prototype;
2110
2111            // Public
2112            _proto.toggle = function toggle(relatedTarget) {
2113                return this._isShown ? this.hide() : this.show(relatedTarget);
2114            };
2115
2116            _proto.show = function show(relatedTarget) {
2117                var _this = this;
2118
2119                if (this._isShown || this._isTransitioning) {
2120                    return;
2121                }
2122
2123                if ($(this._element).hasClass(ClassName$5.FADE)) {
2124                    this._isTransitioning = true;
2125                }
2126
2127                var showEvent = $.Event(Event$5.SHOW, {
2128                    relatedTarget: relatedTarget
2129                });
2130                $(this._element).trigger(showEvent);
2131
2132                if (this._isShown || showEvent.isDefaultPrevented()) {
2133                    return;
2134                }
2135
2136                this._isShown = true;
2137
2138                this._checkScrollbar();
2139
2140                this._setScrollbar();
2141
2142                this._adjustDialog();
2143
2144                this._setEscapeEvent();
2145
2146                this._setResizeEvent();
2147
2148                $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2149                    return _this.hide(event);
2150                });
2151                $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2152                    $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2153                        if ($(event.target).is(_this._element)) {
2154                            _this._ignoreBackdropClick = true;
2155                        }
2156                    });
2157                });
2158
2159                this._showBackdrop(function () {
2160                    return _this._showElement(relatedTarget);
2161                });
2162            };
2163
2164            _proto.hide = function hide(event) {
2165                var _this2 = this;
2166
2167                if (event) {
2168                    event.preventDefault();
2169                }
2170
2171                if (!this._isShown || this._isTransitioning) {
2172                    return;
2173                }
2174
2175                var hideEvent = $.Event(Event$5.HIDE);
2176                $(this._element).trigger(hideEvent);
2177
2178                if (!this._isShown || hideEvent.isDefaultPrevented()) {
2179                    return;
2180                }
2181
2182                this._isShown = false;
2183                var transition = $(this._element).hasClass(ClassName$5.FADE);
2184
2185                if (transition) {
2186                    this._isTransitioning = true;
2187                }
2188
2189                this._setEscapeEvent();
2190
2191                this._setResizeEvent();
2192
2193                $(document).off(Event$5.FOCUSIN);
2194                $(this._element).removeClass(ClassName$5.SHOW);
2195                $(this._element).off(Event$5.CLICK_DISMISS);
2196                $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2197
2198                if (transition) {
2199                    var transitionDuration = Util.getTransitionDurationFromElement(this._element);
2200                    $(this._element).one(Util.TRANSITION_END, function (event) {
2201                        return _this2._hideModal(event);
2202                    }).emulateTransitionEnd(transitionDuration);
2203                } else {
2204                    this._hideModal();
2205                }
2206            };
2207
2208            _proto.dispose = function dispose() {
2209                [window, this._element, this._dialog].forEach(function (htmlElement) {
2210                    return $(htmlElement).off(EVENT_KEY$5);
2211                });
2212                /**
2213                 * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2214                 * Do not move `document` in `htmlElements` array
2215                 * It will remove `Event.CLICK_DATA_API` event that should remain
2216                 */
2217
2218                $(document).off(Event$5.FOCUSIN);
2219                $.removeData(this._element, DATA_KEY$5);
2220                this._config = null;
2221                this._element = null;
2222                this._dialog = null;
2223                this._backdrop = null;
2224                this._isShown = null;
2225                this._isBodyOverflowing = null;
2226                this._ignoreBackdropClick = null;
2227                this._isTransitioning = null;
2228                this._scrollbarWidth = null;
2229            };
2230
2231            _proto.handleUpdate = function handleUpdate() {
2232                this._adjustDialog();
2233            } // Private
2234            ;
2235
2236            _proto._getConfig = function _getConfig(config) {
2237                config = _objectSpread({}, Default$3, config);
2238                Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2239                return config;
2240            };
2241
2242            _proto._showElement = function _showElement(relatedTarget) {
2243                var _this3 = this;
2244
2245                var transition = $(this._element).hasClass(ClassName$5.FADE);
2246
2247                if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2248                    // Don't move modal's DOM position
2249                    document.body.appendChild(this._element);
2250                }
2251
2252                this._element.style.display = 'block';
2253
2254                this._element.removeAttribute('aria-hidden');
2255
2256                this._element.setAttribute('aria-modal', true);
2257
2258                if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
2259                    this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
2260                } else {
2261                    this._element.scrollTop = 0;
2262                }
2263
2264                if (transition) {
2265                    Util.reflow(this._element);
2266                }
2267
2268                $(this._element).addClass(ClassName$5.SHOW);
2269
2270                if (this._config.focus) {
2271                    this._enforceFocus();
2272                }
2273
2274                var shownEvent = $.Event(Event$5.SHOWN, {
2275                    relatedTarget: relatedTarget
2276                });
2277
2278                var transitionComplete = function transitionComplete() {
2279                    if (_this3._config.focus) {
2280                        _this3._element.focus();
2281                    }
2282
2283                    _this3._isTransitioning = false;
2284                    $(_this3._element).trigger(shownEvent);
2285                };
2286
2287                if (transition) {
2288                    var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2289                    $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
2290                } else {
2291                    transitionComplete();
2292                }
2293            };
2294
2295            _proto._enforceFocus = function _enforceFocus() {
2296                var _this4 = this;
2297
2298                $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2299                    .on(Event$5.FOCUSIN, function (event) {
2300                        if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2301                            _this4._element.focus();
2302                        }
2303                    });
2304            };
2305
2306            _proto._setEscapeEvent = function _setEscapeEvent() {
2307                var _this5 = this;
2308
2309                if (this._isShown && this._config.keyboard) {
2310                    $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2311                        if (event.which === ESCAPE_KEYCODE$1) {
2312                            event.preventDefault();
2313
2314                            _this5.hide();
2315                        }
2316                    });
2317                } else if (!this._isShown) {
2318                    $(this._element).off(Event$5.KEYDOWN_DISMISS);
2319                }
2320            };
2321
2322            _proto._setResizeEvent = function _setResizeEvent() {
2323                var _this6 = this;
2324
2325                if (this._isShown) {
2326                    $(window).on(Event$5.RESIZE, function (event) {
2327                        return _this6.handleUpdate(event);
2328                    });
2329                } else {
2330                    $(window).off(Event$5.RESIZE);
2331                }
2332            };
2333
2334            _proto._hideModal = function _hideModal() {
2335                var _this7 = this;
2336
2337                this._element.style.display = 'none';
2338
2339                this._element.setAttribute('aria-hidden', true);
2340
2341                this._element.removeAttribute('aria-modal');
2342
2343                this._isTransitioning = false;
2344
2345                this._showBackdrop(function () {
2346                    $(document.body).removeClass(ClassName$5.OPEN);
2347
2348                    _this7._resetAdjustments();
2349
2350                    _this7._resetScrollbar();
2351
2352                    $(_this7._element).trigger(Event$5.HIDDEN);
2353                });
2354            };
2355
2356            _proto._removeBackdrop = function _removeBackdrop() {
2357                if (this._backdrop) {
2358                    $(this._backdrop).remove();
2359                    this._backdrop = null;
2360                }
2361            };
2362
2363            _proto._showBackdrop = function _showBackdrop(callback) {
2364                var _this8 = this;
2365
2366                var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2367
2368                if (this._isShown && this._config.backdrop) {
2369                    this._backdrop = document.createElement('div');
2370                    this._backdrop.className = ClassName$5.BACKDROP;
2371
2372                    if (animate) {
2373                        this._backdrop.classList.add(animate);
2374                    }
2375
2376                    $(this._backdrop).appendTo(document.body);
2377                    $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2378                        if (_this8._ignoreBackdropClick) {
2379                            _this8._ignoreBackdropClick = false;
2380                            return;
2381                        }
2382
2383                        if (event.target !== event.currentTarget) {
2384                            return;
2385                        }
2386
2387                        if (_this8._config.backdrop === 'static') {
2388                            _this8._element.focus();
2389                        } else {
2390                            _this8.hide();
2391                        }
2392                    });
2393
2394                    if (animate) {
2395                        Util.reflow(this._backdrop);
2396                    }
2397
2398                    $(this._backdrop).addClass(ClassName$5.SHOW);
2399
2400                    if (!callback) {
2401                        return;
2402                    }
2403
2404                    if (!animate) {
2405                        callback();
2406                        return;
2407                    }
2408
2409                    var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2410                    $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2411                } else if (!this._isShown && this._backdrop) {
2412                    $(this._backdrop).removeClass(ClassName$5.SHOW);
2413
2414                    var callbackRemove = function callbackRemove() {
2415                        _this8._removeBackdrop();
2416
2417                        if (callback) {
2418                            callback();
2419                        }
2420                    };
2421
2422                    if ($(this._element).hasClass(ClassName$5.FADE)) {
2423                        var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2424
2425                        $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
2426                    } else {
2427                        callbackRemove();
2428                    }
2429                } else if (callback) {
2430                    callback();
2431                }
2432            } // ----------------------------------------------------------------------
2433            // the following methods are used to handle overflowing modals
2434            // todo (fat): these should probably be refactored out of modal.js
2435            // ----------------------------------------------------------------------
2436            ;
2437
2438            _proto._adjustDialog = function _adjustDialog() {
2439                var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2440
2441                if (!this._isBodyOverflowing && isModalOverflowing) {
2442                    this._element.style.paddingLeft = this._scrollbarWidth + "px";
2443                }
2444
2445                if (this._isBodyOverflowing && !isModalOverflowing) {
2446                    this._element.style.paddingRight = this._scrollbarWidth + "px";
2447                }
2448            };
2449
2450            _proto._resetAdjustments = function _resetAdjustments() {
2451                this._element.style.paddingLeft = '';
2452                this._element.style.paddingRight = '';
2453            };
2454
2455            _proto._checkScrollbar = function _checkScrollbar() {
2456                var rect = document.body.getBoundingClientRect();
2457                this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2458                this._scrollbarWidth = this._getScrollbarWidth();
2459            };
2460
2461            _proto._setScrollbar = function _setScrollbar() {
2462                var _this9 = this;
2463
2464                if (this._isBodyOverflowing) {
2465                    // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2466                    //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2467                    var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2468                    var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2469
2470                    $(fixedContent).each(function (index, element) {
2471                        var actualPadding = element.style.paddingRight;
2472                        var calculatedPadding = $(element).css('padding-right');
2473                        $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2474                    }); // Adjust sticky content margin
2475
2476                    $(stickyContent).each(function (index, element) {
2477                        var actualMargin = element.style.marginRight;
2478                        var calculatedMargin = $(element).css('margin-right');
2479                        $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2480                    }); // Adjust body padding
2481
2482                    var actualPadding = document.body.style.paddingRight;
2483                    var calculatedPadding = $(document.body).css('padding-right');
2484                    $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2485                }
2486
2487                $(document.body).addClass(ClassName$5.OPEN);
2488            };
2489
2490            _proto._resetScrollbar = function _resetScrollbar() {
2491                // Restore fixed content padding
2492                var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2493                $(fixedContent).each(function (index, element) {
2494                    var padding = $(element).data('padding-right');
2495                    $(element).removeData('padding-right');
2496                    element.style.paddingRight = padding ? padding : '';
2497                }); // Restore sticky content
2498
2499                var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2500                $(elements).each(function (index, element) {
2501                    var margin = $(element).data('margin-right');
2502
2503                    if (typeof margin !== 'undefined') {
2504                        $(element).css('margin-right', margin).removeData('margin-right');
2505                    }
2506                }); // Restore body padding
2507
2508                var padding = $(document.body).data('padding-right');
2509                $(document.body).removeData('padding-right');
2510                document.body.style.paddingRight = padding ? padding : '';
2511            };
2512
2513            _proto._getScrollbarWidth = function _getScrollbarWidth() {
2514                // thx d.walsh
2515                var scrollDiv = document.createElement('div');
2516                scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2517                document.body.appendChild(scrollDiv);
2518                var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2519                document.body.removeChild(scrollDiv);
2520                return scrollbarWidth;
2521            } // Static
2522            ;
2523
2524            Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2525                return this.each(function () {
2526                    var data = $(this).data(DATA_KEY$5);
2527
2528                    var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2529
2530                    if (!data) {
2531                        data = new Modal(this, _config);
2532                        $(this).data(DATA_KEY$5, data);
2533                    }
2534
2535                    if (typeof config === 'string') {
2536                        if (typeof data[config] === 'undefined') {
2537                            throw new TypeError("No method named \"" + config + "\"");
2538                        }
2539
2540                        data[config](relatedTarget);
2541                    } else if (_config.show) {
2542                        data.show(relatedTarget);
2543                    }
2544                });
2545            };
2546
2547            _createClass(Modal, null, [{
2548                key: "VERSION",
2549                get: function get() {
2550                    return VERSION$5;
2551                }
2552            }, {
2553                key: "Default",
2554                get: function get() {
2555                    return Default$3;
2556                }
2557            }]);
2558
2559            return Modal;
2560        }();
2561    /**
2562     * ------------------------------------------------------------------------
2563     * Data Api implementation
2564     * ------------------------------------------------------------------------
2565     */
2566
2567
2568    $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2569        var _this10 = this;
2570
2571        var target;
2572        var selector = Util.getSelectorFromElement(this);
2573
2574        if (selector) {
2575            target = document.querySelector(selector);
2576        }
2577
2578        var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2579
2580        if (this.tagName === 'A' || this.tagName === 'AREA') {
2581            event.preventDefault();
2582        }
2583
2584        var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2585            if (showEvent.isDefaultPrevented()) {
2586                // Only register focus restorer if modal will actually get shown
2587                return;
2588            }
2589
2590            $target.one(Event$5.HIDDEN, function () {
2591                if ($(_this10).is(':visible')) {
2592                    _this10.focus();
2593                }
2594            });
2595        });
2596
2597        Modal._jQueryInterface.call($(target), config, this);
2598    });
2599    /**
2600     * ------------------------------------------------------------------------
2601     * jQuery
2602     * ------------------------------------------------------------------------
2603     */
2604
2605    $.fn[NAME$5] = Modal._jQueryInterface;
2606    $.fn[NAME$5].Constructor = Modal;
2607
2608    $.fn[NAME$5].noConflict = function () {
2609        $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
2610        return Modal._jQueryInterface;
2611    };
2612
2613    /**
2614     * --------------------------------------------------------------------------
2615     * Bootstrap (v4.3.1): tools/sanitizer.js
2616     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2617     * --------------------------------------------------------------------------
2618     */
2619    var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2620    var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2621    var DefaultWhitelist = {
2622        // Global attributes allowed on any supplied element below.
2623        '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2624        a: ['target', 'href', 'title', 'rel'],
2625        area: [],
2626        b: [],
2627        br: [],
2628        col: [],
2629        code: [],
2630        div: [],
2631        em: [],
2632        hr: [],
2633        h1: [],
2634        h2: [],
2635        h3: [],
2636        h4: [],
2637        h5: [],
2638        h6: [],
2639        i: [],
2640        img: ['src', 'alt', 'title', 'width', 'height'],
2641        li: [],
2642        ol: [],
2643        p: [],
2644        pre: [],
2645        s: [],
2646        small: [],
2647        span: [],
2648        sub: [],
2649        sup: [],
2650        strong: [],
2651        u: [],
2652        ul: []
2653        /**
2654         * A pattern that recognizes a commonly useful subset of URLs that are safe.
2655         *
2656         * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2657         */
2658
2659    };
2660    var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2661    /**
2662     * A pattern that matches safe data URLs. Only matches image, video and audio types.
2663     *
2664     * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2665     */
2666
2667    var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
2668
2669    function allowedAttribute(attr, allowedAttributeList) {
2670        var attrName = attr.nodeName.toLowerCase();
2671
2672        if (allowedAttributeList.indexOf(attrName) !== -1) {
2673            if (uriAttrs.indexOf(attrName) !== -1) {
2674                return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2675            }
2676
2677            return true;
2678        }
2679
2680        var regExp = allowedAttributeList.filter(function (attrRegex) {
vendor: 8,951 bytes, lines 2681-2945
2681            return attrRegex instanceof RegExp;
2682        }); // Check if a regular expression validates the attribute.
2683
2684        for (var i = 0, l = regExp.length; i < l; i++) {
2685            if (attrName.match(regExp[i])) {
2686                return true;
2687            }
2688        }
2689
2690        return false;
2691    }
2692
2693    function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2694        if (unsafeHtml.length === 0) {
2695            return unsafeHtml;
2696        }
2697
2698        if (sanitizeFn && typeof sanitizeFn === 'function') {
2699            return sanitizeFn(unsafeHtml);
2700        }
2701
2702        var domParser = new window.DOMParser();
2703        var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2704        var whitelistKeys = Object.keys(whiteList);
2705        var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2706
2707        var _loop = function _loop(i, len) {
2708            var el = elements[i];
2709            var elName = el.nodeName.toLowerCase();
2710
2711            if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2712                el.parentNode.removeChild(el);
2713                return "continue";
2714            }
2715
2716            var attributeList = [].slice.call(el.attributes);
2717            var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2718            attributeList.forEach(function (attr) {
2719                if (!allowedAttribute(attr, whitelistedAttributes)) {
2720                    el.removeAttribute(attr.nodeName);
2721                }
2722            });
2723        };
2724
2725        for (var i = 0, len = elements.length; i < len; i++) {
2726            var _ret = _loop(i, len);
2727
2728            if (_ret === "continue") continue;
2729        }
2730
2731        return createdDocument.body.innerHTML;
2732    }
2733
2734    /**
2735     * ------------------------------------------------------------------------
2736     * Constants
2737     * ------------------------------------------------------------------------
2738     */
2739
2740    var NAME$6 = 'tooltip';
2741    var VERSION$6 = '4.3.1';
2742    var DATA_KEY$6 = 'bs.tooltip';
2743    var EVENT_KEY$6 = "." + DATA_KEY$6;
2744    var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2745    var CLASS_PREFIX = 'bs-tooltip';
2746    var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2747    var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2748    var DefaultType$4 = {
2749        animation: 'boolean',
2750        template: 'string',
2751        title: '(string|element|function)',
2752        trigger: 'string',
2753        delay: '(number|object)',
2754        html: 'boolean',
2755        selector: '(string|boolean)',
2756        placement: '(string|function)',
2757        offset: '(number|string|function)',
2758        container: '(string|element|boolean)',
2759        fallbackPlacement: '(string|array)',
2760        boundary: '(string|element)',
2761        sanitize: 'boolean',
2762        sanitizeFn: '(null|function)',
2763        whiteList: 'object'
2764    };
2765    var AttachmentMap$1 = {
2766        AUTO: 'auto',
2767        TOP: 'top',
2768        RIGHT: 'right',
2769        BOTTOM: 'bottom',
2770        LEFT: 'left'
2771    };
2772    var Default$4 = {
2773        animation: true,
2774        template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2775        trigger: 'hover focus',
2776        title: '',
2777        delay: 0,
2778        html: false,
2779        selector: false,
2780        placement: 'top',
2781        offset: 0,
2782        container: false,
2783        fallbackPlacement: 'flip',
2784        boundary: 'scrollParent',
2785        sanitize: true,
2786        sanitizeFn: null,
2787        whiteList: DefaultWhitelist
2788    };
2789    var HoverState = {
2790        SHOW: 'show',
2791        OUT: 'out'
2792    };
2793    var Event$6 = {
2794        HIDE: "hide" + EVENT_KEY$6,
2795        HIDDEN: "hidden" + EVENT_KEY$6,
2796        SHOW: "show" + EVENT_KEY$6,
2797        SHOWN: "shown" + EVENT_KEY$6,
2798        INSERTED: "inserted" + EVENT_KEY$6,
2799        CLICK: "click" + EVENT_KEY$6,
2800        FOCUSIN: "focusin" + EVENT_KEY$6,
2801        FOCUSOUT: "focusout" + EVENT_KEY$6,
2802        MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2803        MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2804    };
2805    var ClassName$6 = {
2806        FADE: 'fade',
2807        SHOW: 'show'
2808    };
2809    var Selector$6 = {
2810        TOOLTIP: '.tooltip',
2811        TOOLTIP_INNER: '.tooltip-inner',
2812        ARROW: '.arrow'
2813    };
2814    var Trigger = {
2815        HOVER: 'hover',
2816        FOCUS: 'focus',
2817        CLICK: 'click',
2818        MANUAL: 'manual'
2819        /**
2820         * ------------------------------------------------------------------------
2821         * Class Definition
2822         * ------------------------------------------------------------------------
2823         */
2824
2825    };
2826
2827    var Tooltip =
2828        /*#__PURE__*/
2829        function () {
2830            function Tooltip(element, config) {
2831                /**
2832                 * Check for Popper dependency
2833                 * Popper - https://popper.js.org
2834                 */
2835                if (typeof Popper === 'undefined') {
2836                    throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2837                } // private
2838
2839
2840                this._isEnabled = true;
2841                this._timeout = 0;
2842                this._hoverState = '';
2843                this._activeTrigger = {};
2844                this._popper = null; // Protected
2845
2846                this.element = element;
2847                this.config = this._getConfig(config);
2848                this.tip = null;
2849
2850                this._setListeners();
2851            } // Getters
2852
2853
2854            var _proto = Tooltip.prototype;
2855
2856            // Public
2857            _proto.enable = function enable() {
2858                this._isEnabled = true;
2859            };
2860
2861            _proto.disable = function disable() {
2862                this._isEnabled = false;
2863            };
2864
2865            _proto.toggleEnabled = function toggleEnabled() {
2866                this._isEnabled = !this._isEnabled;
2867            };
2868
2869            _proto.toggle = function toggle(event) {
2870                if (!this._isEnabled) {
2871                    return;
2872                }
2873
2874                if (event) {
2875                    var dataKey = this.constructor.DATA_KEY;
2876                    var context = $(event.currentTarget).data(dataKey);
2877
2878                    if (!context) {
2879                        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2880                        $(event.currentTarget).data(dataKey, context);
2881                    }
2882
2883                    context._activeTrigger.click = !context._activeTrigger.click;
2884
2885                    if (context._isWithActiveTrigger()) {
2886                        context._enter(null, context);
2887                    } else {
2888                        context._leave(null, context);
2889                    }
2890                } else {
2891                    if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
2892                        this._leave(null, this);
2893
2894                        return;
2895                    }
2896
2897                    this._enter(null, this);
2898                }
2899            };
2900
2901            _proto.dispose = function dispose() {
2902                clearTimeout(this._timeout);
2903                $.removeData(this.element, this.constructor.DATA_KEY);
2904                $(this.element).off(this.constructor.EVENT_KEY);
2905                $(this.element).closest('.modal').off('hide.bs.modal');
2906
2907                if (this.tip) {
2908                    $(this.tip).remove();
2909                }
2910
2911                this._isEnabled = null;
2912                this._timeout = null;
2913                this._hoverState = null;
2914                this._activeTrigger = null;
2915
2916                if (this._popper !== null) {
2917                    this._popper.destroy();
2918                }
2919
2920                this._popper = null;
2921                this.element = null;
2922                this.config = null;
2923                this.tip = null;
2924            };
2925
2926            _proto.show = function show() {
2927                var _this = this;
2928
2929                if ($(this.element).css('display') === 'none') {
2930                    throw new Error('Please use show on visible elements');
2931                }
2932
2933                var showEvent = $.Event(this.constructor.Event.SHOW);
2934
2935                if (this.isWithContent() && this._isEnabled) {
2936                    $(this.element).trigger(showEvent);
2937                    var shadowRoot = Util.findShadowRoot(this.element);
2938                    var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
2939
2940                    if (showEvent.isDefaultPrevented() || !isInTheDom) {
2941                        return;
2942                    }
2943
2944                    var tip = this.getTipElement();
2945                    var tipId = Util.getUID(this.constructor.NAME);
2946                    tip.setAttribute('id', tipId);
2947                    this.element.setAttribute('aria-describedby', tipId);
2948                    this.setContent();
2949
2950                    if (this.config.animation) {
2951                        $(tip).addClass(ClassName$6.FADE);
2952                    }
2953
2954                    var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2955
2956                    var attachment = this._getAttachment(placement);
2957
2958                    this.addAttachmentClass(attachment);
2959
2960                    var container = this._getContainer();
2961
2962                    $(tip).data(this.constructor.DATA_KEY, this);
2963
2964                    if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
2965                        $(tip).appendTo(container);
2966                    }
2967
2968                    $(this.element).trigger(this.constructor.Event.INSERTED);
2969                    this._popper = new Popper(this.element, tip, {
2970                        placement: attachment,
2971                        modifiers: {
2972                            offset: this._getOffset(),
2973                            flip: {
2974                                behavior: this.config.fallbackPlacement
2975                            },
2976                            arrow: {
2977                                element: Selector$6.ARROW
2978                            },
2979                            preventOverflow: {
2980                                boundariesElement: this.config.boundary
2981                            }
2982                        },
2983                        onCreate: function onCreate(data) {
2984                            if (data.originalPlacement !== data.placement) {
2985                                _this._handlePopperPlacementChange(data);
2986                            }
2987                        },
2988                        onUpdate: function onUpdate(data) {
2989                            return _this._handlePopperPlacementChange(data);
2990                        }
2991                    });
2992                    $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2993                    // empty mouseover listeners to the body's immediate children;
2994                    // only needed because of broken event delegation on iOS
2995                    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2996
2997                    if ('ontouchstart' in document.documentElement) {
2998                        $(document.body).children().on('mouseover', null, $.noop);
2999                    }
3000
3001                    var complete = function complete() {
3002                        if (_this.config.animation) {
3003                            _this._fixTransition();
3004                        }
3005
3006                        var prevHoverState = _this._hoverState;
3007                        _this._hoverState = null;
3008                        $(_this.element).trigger(_this.constructor.Event.SHOWN);
3009
3010                        if (prevHoverState === HoverState.OUT) {
3011                            _this._leave(null, _this);
3012                        }
3013                    };
3014
3015                    if ($(this.tip).hasClass(ClassName$6.FADE)) {
3016                        var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
3017                        $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3018                    } else {
3019                        complete();
3020                    }
3021                }
3022            };
3023
3024            _proto.hide = function hide(callback) {
3025                var _this2 = this;
3026
3027                var tip = this.getTipElement();
3028                var hideEvent = $.Event(this.constructor.Event.HIDE);
3029
3030                var complete = function complete() {
3031                    if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3032                        tip.parentNode.removeChild(tip);
3033                    }
3034
3035                    _this2._cleanTipClass();
3036
3037                    _this2.element.removeAttribute('aria-describedby');
3038
3039                    $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3040
3041                    if (_this2._popper !== null) {
3042                        _this2._popper.destroy();
3043                    }
3044
3045                    if (callback) {
3046                        callback();
3047                    }
3048                };
3049
3050                $(this.element).trigger(hideEvent);
3051
3052                if (hideEvent.isDefaultPrevented()) {
3053                    return;
3054                }
3055
3056                $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3057                // empty mouseover listeners we added for iOS support
3058
3059                if ('ontouchstart' in document.documentElement) {
3060                    $(document.body).children().off('mouseover', null, $.noop);
3061                }
3062
3063                this._activeTrigger[Trigger.CLICK] = false;
3064                this._activeTrigger[Trigger.FOCUS] = false;
3065                this._activeTrigger[Trigger.HOVER] = false;
3066
3067                if ($(this.tip).hasClass(ClassName$6.FADE)) {
3068                    var transitionDuration = Util.getTransitionDurationFromElement(tip);
3069                    $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3070                } else {
3071                    complete();
3072                }
3073
3074                this._hoverState = '';
3075            };
3076
3077            _proto.update = function update() {
3078                if (this._popper !== null) {
3079                    this._popper.scheduleUpdate();
3080                }
3081            } // Protected
3082            ;
3083
3084            _proto.isWithContent = function isWithContent() {
3085                return Boolean(this.getTitle());
3086            };
3087
3088            _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3089                $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3090            };
3091
3092            _proto.getTipElement = function getTipElement() {
3093                this.tip = this.tip || $(this.config.template)[0];
3094                return this.tip;
3095            };
3096
3097            _proto.setContent = function setContent() {
3098                var tip = this.getTipElement();
3099                this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
3100                $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3101            };
3102
3103            _proto.setElementContent = function setElementContent($element, content) {
3104                if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3105                    // Content is a DOM node or a jQuery
3106                    if (this.config.html) {
3107                        if (!$(content).parent().is($element)) {
3108                            $element.empty().append(content);
3109                        }
3110                    } else {
3111                        $element.text($(content).text());
3112                    }
3113
3114                    return;
3115                }
3116
3117                if (this.config.html) {
3118                    if (this.config.sanitize) {
3119                        content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3120                    }
3121
3122                    $element.html(content);
3123                } else {
3124                    $element.text(content);
3125                }
3126            };
3127
3128            _proto.getTitle = function getTitle() {
3129                var title = this.element.getAttribute('data-original-title');
3130
3131                if (!title) {
3132                    title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3133                }
3134
3135                return title;
3136            } // Private
3137            ;
3138
3139            _proto._getOffset = function _getOffset() {
3140                var _this3 = this;
3141
3142                var offset = {};
3143
3144                if (typeof this.config.offset === 'function') {
3145                    offset.fn = function (data) {
3146                        data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
3147                        return data;
3148                    };
3149                } else {
3150                    offset.offset = this.config.offset;
3151                }
3152
3153                return offset;
3154            };
3155
3156            _proto._getContainer = function _getContainer() {
3157                if (this.config.container === false) {
3158                    return document.body;
3159                }
3160
3161                if (Util.isElement(this.config.container)) {
3162                    return $(this.config.container);
3163                }
3164
3165                return $(document).find(this.config.container);
3166            };
3167
3168            _proto._getAttachment = function _getAttachment(placement) {
3169                return AttachmentMap$1[placement.toUpperCase()];
3170            };
3171
3172            _proto._setListeners = function _setListeners() {
3173                var _this4 = this;
3174
3175                var triggers = this.config.trigger.split(' ');
3176                triggers.forEach(function (trigger) {
3177                    if (trigger === 'click') {
3178                        $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
3179                            return _this4.toggle(event);
3180                        });
3181                    } else if (trigger !== Trigger.MANUAL) {
3182                        var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
3183                        var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
3184                        $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
3185                            return _this4._enter(event);
3186                        }).on(eventOut, _this4.config.selector, function (event) {
3187                            return _this4._leave(event);
3188                        });
3189                    }
3190                });
3191                $(this.element).closest('.modal').on('hide.bs.modal', function () {
3192                    if (_this4.element) {
3193                        _this4.hide();
3194                    }
3195                });
3196
3197                if (this.config.selector) {
3198                    this.config = _objectSpread({}, this.config, {
3199                        trigger: 'manual',
3200                        selector: ''
3201                    });
3202                } else {
3203                    this._fixTitle();
3204                }
3205            };
3206
3207            _proto._fixTitle = function _fixTitle() {
3208                var titleType = typeof this.element.getAttribute('data-original-title');
3209
3210                if (this.element.getAttribute('title') || titleType !== 'string') {
3211                    this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3212                    this.element.setAttribute('title', '');
3213                }
3214            };
3215
3216            _proto._enter = function _enter(event, context) {
3217                var dataKey = this.constructor.DATA_KEY;
3218                context = context || $(event.currentTarget).data(dataKey);
3219
3220                if (!context) {
3221                    context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3222                    $(event.currentTarget).data(dataKey, context);
3223                }
3224
3225                if (event) {
3226                    context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3227                }
3228
3229                if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3230                    context._hoverState = HoverState.SHOW;
3231                    return;
3232                }
3233
3234                clearTimeout(context._timeout);
3235                context._hoverState = HoverState.SHOW;
3236
3237                if (!context.config.delay || !context.config.delay.show) {
3238                    context.show();
3239                    return;
3240                }
3241
3242                context._timeout = setTimeout(function () {
3243                    if (context._hoverState === HoverState.SHOW) {
3244                        context.show();
3245                    }
3246                }, context.config.delay.show);
3247            };
3248
3249            _proto._leave = function _leave(event, context) {
3250                var dataKey = this.constructor.DATA_KEY;
3251                context = context || $(event.currentTarget).data(dataKey);
3252
3253                if (!context) {
3254                    context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3255                    $(event.currentTarget).data(dataKey, context);
3256                }
3257
3258                if (event) {
3259                    context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3260                }
3261
3262                if (context._isWithActiveTrigger()) {
3263                    return;
3264                }
3265
3266                clearTimeout(context._timeout);
3267                context._hoverState = HoverState.OUT;
3268
3269                if (!context.config.delay || !context.config.delay.hide) {
3270                    context.hide();
3271                    return;
3272                }
3273
3274                context._timeout = setTimeout(function () {
3275                    if (context._hoverState === HoverState.OUT) {
3276                        context.hide();
3277                    }
3278                }, context.config.delay.hide);
3279            };
3280
3281            _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3282                for (var trigger in this._activeTrigger) {
3283                    if (this._activeTrigger[trigger]) {
3284                        return true;
3285                    }
3286                }
3287
3288                return false;
3289            };
3290
3291            _proto._getConfig = function _getConfig(config) {
3292                var dataAttributes = $(this.element).data();
vendor: 9,930 bytes, lines 3293-3574
3293                Object.keys(dataAttributes).forEach(function (dataAttr) {
3294                    if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3295                        delete dataAttributes[dataAttr];
3296                    }
3297                });
3298                config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3299
3300                if (typeof config.delay === 'number') {
3301                    config.delay = {
3302                        show: config.delay,
3303                        hide: config.delay
3304                    };
3305                }
3306
3307                if (typeof config.title === 'number') {
3308                    config.title = config.title.toString();
3309                }
3310
3311                if (typeof config.content === 'number') {
3312                    config.content = config.content.toString();
3313                }
3314
3315                Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3316
3317                if (config.sanitize) {
3318                    config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3319                }
3320
3321                return config;
3322            };
3323
3324            _proto._getDelegateConfig = function _getDelegateConfig() {
3325                var config = {};
3326
3327                if (this.config) {
3328                    for (var key in this.config) {
3329                        if (this.constructor.Default[key] !== this.config[key]) {
3330                            config[key] = this.config[key];
3331                        }
3332                    }
3333                }
3334
3335                return config;
3336            };
3337
3338            _proto._cleanTipClass = function _cleanTipClass() {
3339                var $tip = $(this.getTipElement());
3340                var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3341
3342                if (tabClass !== null && tabClass.length) {
3343                    $tip.removeClass(tabClass.join(''));
3344                }
3345            };
3346
3347            _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3348                var popperInstance = popperData.instance;
3349                this.tip = popperInstance.popper;
3350
3351                this._cleanTipClass();
3352
3353                this.addAttachmentClass(this._getAttachment(popperData.placement));
3354            };
3355
3356            _proto._fixTransition = function _fixTransition() {
3357                var tip = this.getTipElement();
3358                var initConfigAnimation = this.config.animation;
3359
3360                if (tip.getAttribute('x-placement') !== null) {
3361                    return;
3362                }
3363
3364                $(tip).removeClass(ClassName$6.FADE);
3365                this.config.animation = false;
3366                this.hide();
3367                this.show();
3368                this.config.animation = initConfigAnimation;
3369            } // Static
3370            ;
3371
3372            Tooltip._jQueryInterface = function _jQueryInterface(config) {
3373                return this.each(function () {
3374                    var data = $(this).data(DATA_KEY$6);
3375
3376                    var _config = typeof config === 'object' && config;
3377
3378                    if (!data && /dispose|hide/.test(config)) {
3379                        return;
3380                    }
3381
3382                    if (!data) {
3383                        data = new Tooltip(this, _config);
3384                        $(this).data(DATA_KEY$6, data);
3385                    }
3386
3387                    if (typeof config === 'string') {
3388                        if (typeof data[config] === 'undefined') {
3389                            throw new TypeError("No method named \"" + config + "\"");
3390                        }
3391
3392                        data[config]();
3393                    }
3394                });
3395            };
3396
3397            _createClass(Tooltip, null, [{
3398                key: "VERSION",
3399                get: function get() {
3400                    return VERSION$6;
3401                }
3402            }, {
3403                key: "Default",
3404                get: function get() {
3405                    return Default$4;
3406                }
3407            }, {
3408                key: "NAME",
3409                get: function get() {
3410                    return NAME$6;
3411                }
3412            }, {
3413                key: "DATA_KEY",
3414                get: function get() {
3415                    return DATA_KEY$6;
3416                }
3417            }, {
3418                key: "Event",
3419                get: function get() {
3420                    return Event$6;
3421                }
3422            }, {
3423                key: "EVENT_KEY",
3424                get: function get() {
3425                    return EVENT_KEY$6;
3426                }
3427            }, {
3428                key: "DefaultType",
3429                get: function get() {
3430                    return DefaultType$4;
3431                }
3432            }]);
3433
3434            return Tooltip;
3435        }();
3436    /**
3437     * ------------------------------------------------------------------------
3438     * jQuery
3439     * ------------------------------------------------------------------------
3440     */
3441
3442
3443    $.fn[NAME$6] = Tooltip._jQueryInterface;
3444    $.fn[NAME$6].Constructor = Tooltip;
3445
3446    $.fn[NAME$6].noConflict = function () {
3447        $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
3448        return Tooltip._jQueryInterface;
3449    };
3450
3451    /**
3452     * ------------------------------------------------------------------------
3453     * Constants
3454     * ------------------------------------------------------------------------
3455     */
3456
3457    var NAME$7 = 'popover';
3458    var VERSION$7 = '4.3.1';
3459    var DATA_KEY$7 = 'bs.popover';
3460    var EVENT_KEY$7 = "." + DATA_KEY$7;
3461    var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3462    var CLASS_PREFIX$1 = 'bs-popover';
3463    var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3464
3465    var Default$5 = _objectSpread({}, Tooltip.Default, {
3466        placement: 'right',
3467        trigger: 'click',
3468        content: '',
3469        template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3470    });
3471
3472    var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3473        content: '(string|element|function)'
3474    });
3475
3476    var ClassName$7 = {
3477        FADE: 'fade',
3478        SHOW: 'show'
3479    };
3480    var Selector$7 = {
3481        TITLE: '.popover-header',
3482        CONTENT: '.popover-body'
3483    };
3484    var Event$7 = {
3485        HIDE: "hide" + EVENT_KEY$7,
3486        HIDDEN: "hidden" + EVENT_KEY$7,
3487        SHOW: "show" + EVENT_KEY$7,
3488        SHOWN: "shown" + EVENT_KEY$7,
3489        INSERTED: "inserted" + EVENT_KEY$7,
3490        CLICK: "click" + EVENT_KEY$7,
3491        FOCUSIN: "focusin" + EVENT_KEY$7,
3492        FOCUSOUT: "focusout" + EVENT_KEY$7,
3493        MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3494        MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3495        /**
3496         * ------------------------------------------------------------------------
3497         * Class Definition
3498         * ------------------------------------------------------------------------
3499         */
3500
3501    };
3502
3503    var Popover =
3504        /*#__PURE__*/
3505        function (_Tooltip) {
3506            _inheritsLoose(Popover, _Tooltip);
3507
3508            function Popover() {
3509                return _Tooltip.apply(this, arguments) || this;
3510            }
3511
3512            var _proto = Popover.prototype;
3513
3514            // Overrides
3515            _proto.isWithContent = function isWithContent() {
3516                return this.getTitle() || this._getContent();
3517            };
3518
3519            _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3520                $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
3521            };
3522
3523            _proto.getTipElement = function getTipElement() {
3524                this.tip = this.tip || $(this.config.template)[0];
3525                return this.tip;
3526            };
3527
3528            _proto.setContent = function setContent() {
3529                var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3530
3531                this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3532
3533                var content = this._getContent();
3534
3535                if (typeof content === 'function') {
3536                    content = content.call(this.element);
3537                }
3538
3539                this.setElementContent($tip.find(Selector$7.CONTENT), content);
3540                $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3541            } // Private
3542            ;
3543
3544            _proto._getContent = function _getContent() {
3545                return this.element.getAttribute('data-content') || this.config.content;
3546            };
3547
3548            _proto._cleanTipClass = function _cleanTipClass() {
3549                var $tip = $(this.getTipElement());
3550                var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
3551
3552                if (tabClass !== null && tabClass.length > 0) {
3553                    $tip.removeClass(tabClass.join(''));
3554                }
3555            } // Static
3556            ;
3557
3558            Popover._jQueryInterface = function _jQueryInterface(config) {
3559                return this.each(function () {
3560                    var data = $(this).data(DATA_KEY$7);
3561
3562                    var _config = typeof config === 'object' ? config : null;
3563
3564                    if (!data && /dispose|hide/.test(config)) {
3565                        return;
3566                    }
3567
3568                    if (!data) {
3569                        data = new Popover(this, _config);
3570                        $(this).data(DATA_KEY$7, data);
3571                    }
3572
3573                    if (typeof config === 'string') {
3574                        if (typeof data[config] === 'undefined') {
3575                            throw new TypeError("No method named \"" + config + "\"");
3576                        }
3577
3578                        data[config]();
3579                    }
3580                });
3581            };
3582
3583            _createClass(Popover, null, [{
3584                key: "VERSION",
3585                // Getters
3586                get: function get() {
3587                    return VERSION$7;
3588                }
3589            }, {
3590                key: "Default",
3591                get: function get() {
3592                    return Default$5;
3593                }
3594            }, {
3595                key: "NAME",
3596                get: function get() {
3597                    return NAME$7;
3598                }
3599            }, {
3600                key: "DATA_KEY",
3601                get: function get() {
3602                    return DATA_KEY$7;
3603                }
3604            }, {
3605                key: "Event",
3606                get: function get() {
3607                    return Event$7;
3608                }
3609            }, {
3610                key: "EVENT_KEY",
3611                get: function get() {
3612                    return EVENT_KEY$7;
3613                }
3614            }, {
3615                key: "DefaultType",
3616                get: function get() {
3617                    return DefaultType$5;
3618                }
3619            }]);
3620
3621            return Popover;
3622        }(Tooltip);
3623    /**
3624     * ------------------------------------------------------------------------
3625     * jQuery
3626     * ------------------------------------------------------------------------
3627     */
3628
3629
3630    $.fn[NAME$7] = Popover._jQueryInterface;
3631    $.fn[NAME$7].Constructor = Popover;
3632
3633    $.fn[NAME$7].noConflict = function () {
3634        $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
3635        return Popover._jQueryInterface;
3636    };
3637
3638    /**
3639     * ------------------------------------------------------------------------
3640     * Constants
3641     * ------------------------------------------------------------------------
3642     */
3643
3644    var NAME$8 = 'scrollspy';
3645    var VERSION$8 = '4.3.1';
3646    var DATA_KEY$8 = 'bs.scrollspy';
3647    var EVENT_KEY$8 = "." + DATA_KEY$8;
3648    var DATA_API_KEY$6 = '.data-api';
3649    var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
3650    var Default$6 = {
3651        offset: 10,
3652        method: 'auto',
3653        target: ''
3654    };
3655    var DefaultType$6 = {
3656        offset: 'number',
3657        method: 'string',
3658        target: '(string|element)'
3659    };
3660    var Event$8 = {
3661        ACTIVATE: "activate" + EVENT_KEY$8,
3662        SCROLL: "scroll" + EVENT_KEY$8,
3663        LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3664    };
3665    var ClassName$8 = {
3666        DROPDOWN_ITEM: 'dropdown-item',
3667        DROPDOWN_MENU: 'dropdown-menu',
3668        ACTIVE: 'active'
3669    };
3670    var Selector$8 = {
3671        DATA_SPY: '[data-spy="scroll"]',
3672        ACTIVE: '.active',
3673        NAV_LIST_GROUP: '.nav, .list-group',
3674        NAV_LINKS: '.nav-link',
3675        NAV_ITEMS: '.nav-item',
3676        LIST_ITEMS: '.list-group-item',
3677        DROPDOWN: '.dropdown',
3678        DROPDOWN_ITEMS: '.dropdown-item',
3679        DROPDOWN_TOGGLE: '.dropdown-toggle'
3680    };
3681    var OffsetMethod = {
3682        OFFSET: 'offset',
3683        POSITION: 'position'
3684        /**
3685         * ------------------------------------------------------------------------
3686         * Class Definition
3687         * ------------------------------------------------------------------------
3688         */
3689
3690    };
3691
3692    var ScrollSpy =
3693        /*#__PURE__*/
3694        function () {
3695            function ScrollSpy(element, config) {
3696                var _this = this;
3697
3698                this._element = element;
3699                this._scrollElement = element.tagName === 'BODY' ? window : element;
3700                this._config = this._getConfig(config);
3701                this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3702                this._offsets = [];
3703                this._targets = [];
3704                this._activeTarget = null;
3705                this._scrollHeight = 0;
3706                $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3707                    return _this._process(event);
3708                });
3709                this.refresh();
vendor: 6,043 bytes, lines 3710-3857
3710
3711                this._process();
3712            } // Getters
3713
3714
3715            var _proto = ScrollSpy.prototype;
3716
3717            // Public
3718            _proto.refresh = function refresh() {
3719                var _this2 = this;
3720
3721                var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3722                var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3723                var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3724                this._offsets = [];
3725                this._targets = [];
3726                this._scrollHeight = this._getScrollHeight();
3727                var targets = [].slice.call(document.querySelectorAll(this._selector));
3728                targets.map(function (element) {
3729                    var target;
3730                    var targetSelector = Util.getSelectorFromElement(element);
3731
3732                    if (targetSelector) {
3733                        target = document.querySelector(targetSelector);
3734                    }
3735
3736                    if (target) {
3737                        var targetBCR = target.getBoundingClientRect();
3738
3739                        if (targetBCR.width || targetBCR.height) {
3740                            // TODO (fat): remove sketch reliance on jQuery position/offset
3741                            return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
3742                        }
3743                    }
3744
3745                    return null;
3746                }).filter(function (item) {
3747                    return item;
3748                }).sort(function (a, b) {
3749                    return a[0] - b[0];
3750                }).forEach(function (item) {
3751                    _this2._offsets.push(item[0]);
3752
3753                    _this2._targets.push(item[1]);
3754                });
3755            };
3756
3757            _proto.dispose = function dispose() {
3758                $.removeData(this._element, DATA_KEY$8);
3759                $(this._scrollElement).off(EVENT_KEY$8);
3760                this._element = null;
3761                this._scrollElement = null;
3762                this._config = null;
3763                this._selector = null;
3764                this._offsets = null;
3765                this._targets = null;
3766                this._activeTarget = null;
3767                this._scrollHeight = null;
3768            } // Private
3769            ;
3770
3771            _proto._getConfig = function _getConfig(config) {
3772                config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3773
3774                if (typeof config.target !== 'string') {
3775                    var id = $(config.target).attr('id');
3776
3777                    if (!id) {
3778                        id = Util.getUID(NAME$8);
3779                        $(config.target).attr('id', id);
3780                    }
3781
3782                    config.target = "#" + id;
3783                }
3784
3785                Util.typeCheckConfig(NAME$8, config, DefaultType$6);
3786                return config;
3787            };
3788
3789            _proto._getScrollTop = function _getScrollTop() {
3790                return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3791            };
3792
3793            _proto._getScrollHeight = function _getScrollHeight() {
3794                return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3795            };
3796
3797            _proto._getOffsetHeight = function _getOffsetHeight() {
3798                return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3799            };
3800
3801            _proto._process = function _process() {
3802                var scrollTop = this._getScrollTop() + this._config.offset;
3803
3804                var scrollHeight = this._getScrollHeight();
3805
3806                var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3807
3808                if (this._scrollHeight !== scrollHeight) {
3809                    this.refresh();
3810                }
3811
3812                if (scrollTop >= maxScroll) {
3813                    var target = this._targets[this._targets.length - 1];
3814
3815                    if (this._activeTarget !== target) {
3816                        this._activate(target);
3817                    }
3818
3819                    return;
3820                }
3821
3822                if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3823                    this._activeTarget = null;
3824
3825                    this._clear();
3826
3827                    return;
3828                }
3829
3830                var offsetLength = this._offsets.length;
3831
3832                for (var i = offsetLength; i--;) {
3833                    var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3834
3835                    if (isActiveTarget) {
3836                        this._activate(this._targets[i]);
3837                    }
3838                }
3839            };
3840
3841            _proto._activate = function _activate(target) {
3842                this._activeTarget = target;
3843
3844                this._clear();
3845
3846                var queries = this._selector.split(',').map(function (selector) {
3847                    return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
3848                });
3849
3850                var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
3851
3852                if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
3853                    $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
3854                    $link.addClass(ClassName$8.ACTIVE);
3855                } else {
3856                    // Set triggered link as active
3857                    $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
3858                    // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3859
3860                    $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3861
3862                    $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
3863                }
3864
3865                $(this._scrollElement).trigger(Event$8.ACTIVATE, {
3866                    relatedTarget: target
3867                });
3868            };
3869
3870            _proto._clear = function _clear() {
3871                [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
3872                    return node.classList.contains(ClassName$8.ACTIVE);
3873                }).forEach(function (node) {
3874                    return node.classList.remove(ClassName$8.ACTIVE);
3875                });
3876            } // Static
3877            ;
3878
3879            ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3880                return this.each(function () {
3881                    var data = $(this).data(DATA_KEY$8);
3882
3883                    var _config = typeof config === 'object' && config;
3884
3885                    if (!data) {
3886                        data = new ScrollSpy(this, _config);
3887                        $(this).data(DATA_KEY$8, data);
3888                    }
3889
3890                    if (typeof config === 'string') {
3891                        if (typeof data[config] === 'undefined') {
3892                            throw new TypeError("No method named \"" + config + "\"");
3893                        }
3894
3895                        data[config]();
3896                    }
3897                });
3898            };
3899
3900            _createClass(ScrollSpy, null, [{
3901                key: "VERSION",
3902                get: function get() {
3903                    return VERSION$8;
3904                }
3905            }, {
3906                key: "Default",
3907                get: function get() {
3908                    return Default$6;
3909                }
3910            }]);
3911
3912            return ScrollSpy;
3913        }();
3914    /**
3915     * ------------------------------------------------------------------------
3916     * Data Api implementation
3917     * ------------------------------------------------------------------------
3918     */
3919
3920
3921    $(window).on(Event$8.LOAD_DATA_API, function () {
3922        var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
3923        var scrollSpysLength = scrollSpys.length;
3924
3925        for (var i = scrollSpysLength; i--;) {
3926            var $spy = $(scrollSpys[i]);
3927
3928            ScrollSpy._jQueryInterface.call($spy, $spy.data());
3929        }
3930    });
3931    /**
3932     * ------------------------------------------------------------------------
3933     * jQuery
3934     * ------------------------------------------------------------------------
3935     */
3936
3937    $.fn[NAME$8] = ScrollSpy._jQueryInterface;
3938    $.fn[NAME$8].Constructor = ScrollSpy;
3939
3940    $.fn[NAME$8].noConflict = function () {
3941        $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
3942        return ScrollSpy._jQueryInterface;
3943    };
3944
3945    /**
3946     * ------------------------------------------------------------------------
3947     * Constants
3948     * ------------------------------------------------------------------------
3949     */
3950
3951    var NAME$9 = 'tab';
3952    var VERSION$9 = '4.3.1';
3953    var DATA_KEY$9 = 'bs.tab';
3954    var EVENT_KEY$9 = "." + DATA_KEY$9;
3955    var DATA_API_KEY$7 = '.data-api';
3956    var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
3957    var Event$9 = {
3958        HIDE: "hide" + EVENT_KEY$9,
3959        HIDDEN: "hidden" + EVENT_KEY$9,
3960        SHOW: "show" + EVENT_KEY$9,
3961        SHOWN: "shown" + EVENT_KEY$9,
3962        CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
3963    };
3964    var ClassName$9 = {
3965        DROPDOWN_MENU: 'dropdown-menu',
3966        ACTIVE: 'active',
3967        DISABLED: 'disabled',
3968        FADE: 'fade',
3969        SHOW: 'show'
3970    };
3971    var Selector$9 = {
3972        DROPDOWN: '.dropdown',
3973        NAV_LIST_GROUP: '.nav, .list-group',
3974        ACTIVE: '.active',
3975        ACTIVE_UL: '> li > .active',
3976        DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3977        DROPDOWN_TOGGLE: '.dropdown-toggle',
3978        DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3979        /**
3980         * ------------------------------------------------------------------------
3981         * Class Definition
3982         * ------------------------------------------------------------------------
3983         */
3984
3985    };
3986
3987    var Tab =
3988        /*#__PURE__*/
3989        function () {
3990            function Tab(element) {
3991                this._element = element;
3992            } // Getters
3993
3994
3995            var _proto = Tab.prototype;
3996
3997            // Public
3998            _proto.show = function show() {
3999                var _this = this;
4000
4001                if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
4002                    return;
4003                }
4004
4005                var target;
4006                var previous;
4007                var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4008                var selector = Util.getSelectorFromElement(this._element);
4009
4010                if (listElement) {
4011                    var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4012                    previous = $.makeArray($(listElement).find(itemSelector));
4013                    previous = previous[previous.length - 1];
4014                }
4015
4016                var hideEvent = $.Event(Event$9.HIDE, {
4017                    relatedTarget: this._element
4018                });
4019                var showEvent = $.Event(Event$9.SHOW, {
4020                    relatedTarget: previous
4021                });
4022
4023                if (previous) {
4024                    $(previous).trigger(hideEvent);
4025                }
4026
4027                $(this._element).trigger(showEvent);
4028
4029                if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4030                    return;
4031                }
4032
4033                if (selector) {
4034                    target = document.querySelector(selector);
4035                }
4036
4037                this._activate(this._element, listElement);
4038
4039                var complete = function complete() {
4040                    var hiddenEvent = $.Event(Event$9.HIDDEN, {
4041                        relatedTarget: _this._element
4042                    });
4043                    var shownEvent = $.Event(Event$9.SHOWN, {
4044                        relatedTarget: previous
4045                    });
4046                    $(previous).trigger(hiddenEvent);
4047                    $(_this._element).trigger(shownEvent);
4048                };
4049
4050                if (target) {
4051                    this._activate(target, target.parentNode, complete);
4052                } else {
4053                    complete();
4054                }
4055            };
4056
4057            _proto.dispose = function dispose() {
4058                $.removeData(this._element, DATA_KEY$9);
4059                this._element = null;
4060            } // Private
4061            ;
4062
4063            _proto._activate = function _activate(element, container, callback) {
4064                var _this2 = this;
4065
4066                var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4067                var active = activeElements[0];
4068                var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4069
4070                var complete = function complete() {
4071                    return _this2._transitionComplete(element, active, callback);
4072                };
4073
4074                if (active && isTransitioning) {
4075                    var transitionDuration = Util.getTransitionDurationFromElement(active);
4076                    $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4077                } else {
4078                    complete();
4079                }
4080            };
4081
4082            _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4083                if (active) {
4084                    $(active).removeClass(ClassName$9.ACTIVE);
4085                    var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4086
4087                    if (dropdownChild) {
4088                        $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4089                    }
4090
4091                    if (active.getAttribute('role') === 'tab') {
4092                        active.setAttribute('aria-selected', false);
4093                    }
4094                }
4095
4096                $(element).addClass(ClassName$9.ACTIVE);
4097
4098                if (element.getAttribute('role') === 'tab') {
4099                    element.setAttribute('aria-selected', true);
4100                }
4101
4102                Util.reflow(element);
4103
4104                if (element.classList.contains(ClassName$9.FADE)) {
4105                    element.classList.add(ClassName$9.SHOW);
4106                }
4107
4108                if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
4109                    var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4110
4111                    if (dropdownElement) {
4112                        var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
4113                        $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4114                    }
4115
4116                    element.setAttribute('aria-expanded', true);
4117                }
4118
4119                if (callback) {
4120                    callback();
4121                }
4122            } // Static
4123            ;
4124
4125            Tab._jQueryInterface = function _jQueryInterface(config) {
4126                return this.each(function () {
4127                    var $this = $(this);
4128                    var data = $this.data(DATA_KEY$9);
4129
4130                    if (!data) {
4131                        data = new Tab(this);
4132                        $this.data(DATA_KEY$9, data);
4133                    }
4134
4135                    if (typeof config === 'string') {
4136                        if (typeof data[config] === 'undefined') {
4137                            throw new TypeError("No method named \"" + config + "\"");
4138                        }
4139
4140                        data[config]();
4141                    }
4142                });
4143            };
4144
4145            _createClass(Tab, null, [{
4146                key: "VERSION",
4147                get: function get() {
4148                    return VERSION$9;
4149                }
4150            }]);
4151
4152            return Tab;
4153        }();
4154    /**
4155     * ------------------------------------------------------------------------
4156     * Data Api implementation
4157     * ------------------------------------------------------------------------
4158     */
4159
4160
4161    $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4162        event.preventDefault();
4163
4164        Tab._jQueryInterface.call($(this), 'show');
4165    });
4166    /**
4167     * ------------------------------------------------------------------------
4168     * jQuery
4169     * ------------------------------------------------------------------------
4170     */
4171
4172    $.fn[NAME$9] = Tab._jQueryInterface;
4173    $.fn[NAME$9].Constructor = Tab;
4174
4175    $.fn[NAME$9].noConflict = function () {
4176        $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
4177        return Tab._jQueryInterface;
4178    };
4179
4180    /**
4181     * ------------------------------------------------------------------------
4182     * Constants
4183     * ------------------------------------------------------------------------
4184     */
4185
4186    var NAME$a = 'toast';
4187    var VERSION$a = '4.3.1';
4188    var DATA_KEY$a = 'bs.toast';
4189    var EVENT_KEY$a = "." + DATA_KEY$a;
4190    var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4191    var Event$a = {
4192        CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4193        HIDE: "hide" + EVENT_KEY$a,
4194        HIDDEN: "hidden" + EVENT_KEY$a,
4195        SHOW: "show" + EVENT_KEY$a,
4196        SHOWN: "shown" + EVENT_KEY$a
4197    };
4198    var ClassName$a = {
4199        FADE: 'fade',
4200        HIDE: 'hide',
4201        SHOW: 'show',
4202        SHOWING: 'showing'
4203    };
4204    var DefaultType$7 = {
4205        animation: 'boolean',
4206        autohide: 'boolean',
4207        delay: 'number'
4208    };
4209    var Default$7 = {
4210        animation: true,
4211        autohide: true,
4212        delay: 500
4213    };
4214    var Selector$a = {
4215        DATA_DISMISS: '[data-dismiss="toast"]'
4216        /**
4217         * ------------------------------------------------------------------------
4218         * Class Definition
4219         * ------------------------------------------------------------------------
4220         */
4221
4222    };
4223
4224    var Toast =
4225        /*#__PURE__*/
4226        function () {
4227            function Toast(element, config) {
4228                this._element = element;
4229                this._config = this._getConfig(config);
4230                this._timeout = null;
4231
4232                this._setListeners();
4233            } // Getters
4234
4235
4236            var _proto = Toast.prototype;
4237
4238            // Public
4239            _proto.show = function show() {
4240                var _this = this;
4241
4242                $(this._element).trigger(Event$a.SHOW);
4243
4244                if (this._config.animation) {
4245                    this._element.classList.add(ClassName$a.FADE);
4246                }
4247
4248                var complete = function complete() {
4249                    _this._element.classList.remove(ClassName$a.SHOWING);
4250
4251                    _this._element.classList.add(ClassName$a.SHOW);
4252
4253                    $(_this._element).trigger(Event$a.SHOWN);
4254
4255                    if (_this._config.autohide) {
4256                        _this.hide();
4257                    }
4258                };
4259
4260                this._element.classList.remove(ClassName$a.HIDE);
4261
4262                this._element.classList.add(ClassName$a.SHOWING);
4263
4264                if (this._config.animation) {
4265                    var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4266                    $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4267                } else {
4268                    complete();
4269                }
4270            };
4271
4272            _proto.hide = function hide(withoutTimeout) {
4273                var _this2 = this;
4274
4275                if (!this._element.classList.contains(ClassName$a.SHOW)) {
4276                    return;
4277                }
4278
4279                $(this._element).trigger(Event$a.HIDE);
4280
4281                if (withoutTimeout) {
4282                    this._close();
4283                } else {
4284                    this._timeout = setTimeout(function () {
4285                        _this2._close();
4286                    }, this._config.delay);
4287                }
4288            };
4289
4290            _proto.dispose = function dispose() {
4291                clearTimeout(this._timeout);
4292                this._timeout = null;
4293
4294                if (this._element.classList.contains(ClassName$a.SHOW)) {
4295                    this._element.classList.remove(ClassName$a.SHOW);
4296                }
4297
4298                $(this._element).off(Event$a.CLICK_DISMISS);
4299                $.removeData(this._element, DATA_KEY$a);
4300                this._element = null;
4301                this._config = null;
4302            } // Private
4303            ;
4304
4305            _proto._getConfig = function _getConfig(config) {
4306                config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4307                Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4308                return config;
4309            };
4310
4311            _proto._setListeners = function _setListeners() {
4312                var _this3 = this;
4313
4314                $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4315                    return _this3.hide(true);
4316                });
4317            };
4318
4319            _proto._close = function _close() {
4320                var _this4 = this;
4321
4322                var complete = function complete() {
4323                    _this4._element.classList.add(ClassName$a.HIDE);
4324
4325                    $(_this4._element).trigger(Event$a.HIDDEN);
4326                };
4327
4328                this._element.classList.remove(ClassName$a.SHOW);
4329
4330                if (this._config.animation) {
4331                    var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4332                    $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4333                } else {
4334                    complete();
4335                }
4336            } // Static
4337            ;
4338
4339            Toast._jQueryInterface = function _jQueryInterface(config) {
4340                return this.each(function () {
4341                    var $element = $(this);
4342                    var data = $element.data(DATA_KEY$a);
4343
4344                    var _config = typeof config === 'object' && config;
4345
4346                    if (!data) {
4347                        data = new Toast(this, _config);
4348                        $element.data(DATA_KEY$a, data);
4349                    }
4350
4351                    if (typeof config === 'string') {
4352                        if (typeof data[config] === 'undefined') {
4353                            throw new TypeError("No method named \"" + config + "\"");
4354                        }
4355
4356                        data[config](this);
4357                    }
4358                });
4359            };
4360
4361            _createClass(Toast, null, [{
4362                key: "VERSION",
4363                get: function get() {
4364                    return VERSION$a;
4365                }
4366            }, {
4367                key: "DefaultType",
4368                get: function get() {
4369                    return DefaultType$7;
4370                }
4371            }, {
4372                key: "Default",
4373                get: function get() {
4374                    return Default$7;
4375                }
4376            }]);
4377
4378            return Toast;
4379        }();
4380    /**
4381     * ------------------------------------------------------------------------
4382     * jQuery
4383     * ------------------------------------------------------------------------
4384     */
4385
4386
4387    $.fn[NAME$a] = Toast._jQueryInterface;
4388    $.fn[NAME$a].Constructor = Toast;
4389
4390    $.fn[NAME$a].noConflict = function () {
4391        $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
4392        return Toast._jQueryInterface;
4393    };
4394
4395    /**
4396     * --------------------------------------------------------------------------
4397     * Bootstrap (v4.3.1): index.js
4398     * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4399     * --------------------------------------------------------------------------
4400     */
4401
4402    (function () {
4403        if (typeof $ === 'undefined') {
4404            throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4405        }
4406
4407        var version = $.fn.jquery.split(' ')[0].split('.');
4408        var minMajor = 1;
4409        var ltMajor = 2;
4410        var minMinor = 9;
4411        var minPatch = 1;
4412        var maxMajor = 4;
4413
4414        if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4415            throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4416        }
4417    })();
4418
4419    exports.Util = Util;
4420    exports.Alert = Alert;
4421    exports.Button = Button;
4422    exports.Carousel = Carousel;
4423    exports.Collapse = Collapse;
4424    exports.Dropdown = Dropdown;
4425    exports.Modal = Modal;
4426    exports.Popover = Popover;
4427    exports.Scrollspy = ScrollSpy;
4428    exports.Tab = Tab;
4429    exports.Toast = Toast;
4430    exports.Tooltip = Tooltip;
4431
4432    Object.defineProperty(exports, '__esModule', { value: true });
4433
4434}));
4435//# sourceMappingURL=bootstrap.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.