Вход Регистрация
Файл: style/js/bootstrap.js
Строк: 3225
<?php
/*!
 * Bootstrap v4.0.0-alpha (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */

if (typeof jQuery === 'undefined') {
  throw new 
Error('Bootstrap's JavaScript requires jQuery')
}

+function ($) {
  var version = $.fn.jquery.split(' ')[0].split('
.')
  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
    throw new Error('
Bootstrap's JavaScript requires jQuery version 1.9.1 or higher')
  }
}(
jQuery);


+function ($) {

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): util.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

'use strict';

var 
_get = function get(_x_x2_x3) { var _again true_function: while (_again) { var object _xproperty _x2receiver _x3desc parent getter undefined_again false; if (object === nullobject = Function.prototype; var desc Object.getOwnPropertyDescriptor(objectproperty); if (desc === undefined) { var parent Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x parent_x2 property_x3 receiver_again true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };

var 
_createClass = (function () { function defineProperties(targetprops) { for (var 0props.lengthi++) { var descriptor props[i]; descriptor.enumerable descriptor.enumerable || falsedescriptor.configurable true; if ('value' in descriptordescriptor.writable trueObject.defineProperty(targetdescriptor.keydescriptor); } } return function (ConstructorprotoPropsstaticProps) { if (protoPropsdefineProperties(Constructor.prototypeprotoProps); if (staticPropsdefineProperties(ConstructorstaticProps); return Constructor; }; })();

function 
_inherits(subClasssuperClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' typeof superClass); } subClass.prototype Object.create(superClass && superClass.prototype, { constructor: { valuesubClassenumerablefalsewritabletrueconfigurabletrue } }); if (superClassObject.setPrototypeOf Object.setPrototypeOf(subClasssuperClass) : subClass.__proto__ superClass; }

function 
_classCallCheck(instanceConstructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }

var 
Util = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Private TransitionEnd Helpers
   * ------------------------------------------------------------------------
   */

  
var transition false;

  var 
TransitionEndEvent = {
    
WebkitTransition'webkitTransitionEnd',
    
MozTransition'transitionend',
    
OTransition'oTransitionEnd otransitionend',
    
transition'transitionend'
  
};

  
// shoutout AngusCroll (https://goo.gl/pxwQGp)
  
function toType(obj) {
    return ({}).
toString.call(obj).match(/s([a-zA-Z]+)/)[1].toLowerCase();
  }

  function 
isElement(obj) {
    return (
obj[0] || obj).nodeType;
  }

  function 
getSpecialTransitionEndEvent() {
    return {
      
bindTypetransition.end,
      
delegateTypetransition.end,
      
handle: function handle(event) {
        if ($(
event.target).is(this)) {
          return 
event.handleObj.handler.apply(thisarguments);
        }
      }
    };
  }

  function 
transitionEndTest() {
    if (
window.QUnit) {
      return 
false;
    }

    var 
el document.createElement('bootstrap');

    for (var 
_name in TransitionEndEvent) {
      if (
el.style[_name] !== undefined) {
        return { 
endTransitionEndEvent[_name] };
      }
    }

    return 
false;
  }

  function 
transitionEndEmulator(duration) {
    var 
_this this;

    var 
called false;

    $(
this).one(Util.TRANSITION_END, function () {
      
called true;
    });

    
setTimeout(function () {
      if (!
called) {
        
Util.triggerTransitionEnd(_this);
      }
    }, 
duration);

    return 
this;
  }

  function 
setTransitionEndSupport() {
    
transition transitionEndTest();

    $.fn.
emulateTransitionEnd transitionEndEmulator;

    if (
Util.supportsTransitionEnd()) {
      $.
event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
    }
  }

  
/**
   * --------------------------------------------------------------------------
   * Public Util Api
   * --------------------------------------------------------------------------
   */

  
var Util = {

    
TRANSITION_END'bsTransitionEnd',

    
getUID: function getUID(prefix) {
      do {
        
prefix += ~ ~(Math.random() * 1000000);
      } while (
document.getElementById(prefix));
      return 
prefix;
    },

    
getSelectorFromElement: function getSelectorFromElement(element) {
      var 
selector element.getAttribute('data-target');

      if (!
selector) {
        
selector element.getAttribute('href') || '';
        
selector = /^#[a-z]/i.test(selector) ? selector : null;
      
}

      return 
selector;
    },

    
reflow: function reflow(element) {
      new Function(
'bs''return bs')(element.offsetHeight);
    },

    
triggerTransitionEnd: function triggerTransitionEnd(element) {
      $(
element).trigger(transition.end);
    },

    
supportsTransitionEnd: function supportsTransitionEnd() {
      return 
Boolean(transition);
    },

    
typeCheckConfig: function typeCheckConfig(componentNameconfigconfigTypes) {
      for (var 
property in configTypes) {
        if (
configTypes.hasOwnProperty(property)) {
          var 
expectedTypes configTypes[property];
          var 
value config[property];
          var 
valueType undefined;

          if (
value && isElement(value)) {
            
valueType 'element';
          } else {
            
valueType toType(value);
          }

          if (!new 
RegExp(expectedTypes).test(valueType)) {
            throw new 
Error(componentName.toUpperCase() + ': ' + ('Option "' property '" provided type "' valueType '" ') + ('but expected type "' expectedTypes '".'));
          }
        }
      }
    }
  };

  
setTransitionEndSupport();

  return 
Util;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): alert.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Alert = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'alert';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.alert';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION 150;

  var 
Selector = {
    
DISMISS'[data-dismiss="alert"]'
  
};

  var 
Event = {
    
CLOSE'close' EVENT_KEY,
    
CLOSED'closed' EVENT_KEY,
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
ALERT'alert',
    
FADE'fade',
    
IN'in'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Alert = (function () {
    function 
Alert(element) {
      
_classCallCheck(thisAlert);

      
this._element element;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Alert, [{
      
key'close',

      
// public

      
value: function close(element) {
        
element element || this._element;

        var 
rootElement this._getRootElement(element);
        var 
customEvent this._triggerCloseEvent(rootElement);

        if (
customEvent.isDefaultPrevented()) {
          return;
        }

        
this._removeElement(rootElement);
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeData(this._elementDATA_KEY);
        
this._element null;
      }

      
// private

    
}, {
      
key'_getRootElement',
      
value: function _getRootElement(element) {
        var 
selector Util.getSelectorFromElement(element);
        var 
parent false;

        if (
selector) {
          
parent = $(selector)[0];
        }

        if (!
parent) {
          
parent = $(element).closest('.' ClassName.ALERT)[0];
        }

        return 
parent;
      }
    }, {
      
key'_triggerCloseEvent',
      
value: function _triggerCloseEvent(element) {
        var 
closeEvent = $.Event(Event.CLOSE);

        $(
element).trigger(closeEvent);
        return 
closeEvent;
      }
    }, {
      
key'_removeElement',
      
value: function _removeElement(element) {
        $(
element).removeClass(ClassName.IN);

        if (!
Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
          
this._destroyElement(element);
          return;
        }

        $(
element).one(Util.TRANSITION_END, $.proxy(this._destroyElementthiselement)).emulateTransitionEnd(TRANSITION_DURATION);
      }
    }, {
      
key'_destroyElement',
      
value: function _destroyElement(element) {
        $(
element).detach().trigger(Event.CLOSED).remove();
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
$element = $(this);
          var 
data $element.data(DATA_KEY);

          if (!
data) {
            
data = new Alert(this);
            
$element.data(DATA_KEYdata);
          }

          if (
config === 'close') {
            
data[config](this);
          }
        });
      }
    }, {
      
key'_handleDismiss',
      
value: function _handleDismiss(alertInstance) {
        return function (
event) {
          if (
event) {
            
event.preventDefault();
          }

          
alertInstance.close(this);
        };
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Alert;
  })();

  $(
document).on(Event.CLICK_DATA_APISelector.DISMISSAlert._handleDismiss(new Alert()));

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Alert._jQueryInterface;
  $.fn[
NAME].Constructor Alert;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Alert._jQueryInterface;
  };

  return 
Alert;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): button.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Button = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'button';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.button';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var 
ClassName = {
    
ACTIVE'active',
    
BUTTON'btn',
    
FOCUS'focus'
  
};

  var 
Selector = {
    
DATA_TOGGLE_CARROT'[data-toggle^="button"]',
    
DATA_TOGGLE'[data-toggle="buttons"]',
    
INPUT'input',
    
ACTIVE'.active',
    
BUTTON'.btn'
  
};

  var 
Event = {
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY,
    
FOCUS_BLUR_DATA_API'focus' EVENT_KEY DATA_API_KEY ' ' + ('blur' EVENT_KEY DATA_API_KEY)
  };

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Button = (function () {
    function 
Button(element) {
      
_classCallCheck(thisButton);

      
this._element element;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Button, [{
      
key'toggle',

      
// public

      
value: function toggle() {
        var 
triggerChangeEvent true;
        var 
rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];

        if (
rootElement) {
          var 
input = $(this._element).find(Selector.INPUT)[0];

          if (
input) {
            if (
input.type === 'radio') {
              if (
input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
                
triggerChangeEvent false;
              } else {
                var 
activeElement = $(rootElement).find(Selector.ACTIVE)[0];

                if (
activeElement) {
                  $(
activeElement).removeClass(ClassName.ACTIVE);
                }
              }
            }

            if (
triggerChangeEvent) {
              
input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
              $(
this._element).trigger('change');
            }
          }
        } else {
          
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
        }

        if (
triggerChangeEvent) {
          $(
this._element).toggleClass(ClassName.ACTIVE);
        }
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeData(this._elementDATA_KEY);
        
this._element null;
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);

          if (!
data) {
            
data = new Button(this);
            $(
this).data(DATA_KEYdata);
          }

          if (
config === 'toggle') {
            
data[config]();
          }
        });
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Button;
  })();

  $(
document).on(Event.CLICK_DATA_APISelector.DATA_TOGGLE_CARROT, function (event) {
    
event.preventDefault();

    var 
button event.target;

    if (!$(
button).hasClass(ClassName.BUTTON)) {
      
button = $(button).closest(Selector.BUTTON);
    }

    
Button._jQueryInterface.call($(button), 'toggle');
  }).
on(Event.FOCUS_BLUR_DATA_APISelector.DATA_TOGGLE_CARROT, function (event) {
    var 
button = $(event.target).closest(Selector.BUTTON)[0];
    $(
button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Button._jQueryInterface;
  $.fn[
NAME].Constructor Button;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Button._jQueryInterface;
  };

  return 
Button;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): carousel.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Carousel = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'carousel';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.carousel';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION 600;

  var Default = {
    
interval5000,
    
keyboardtrue,
    
slidefalse,
    
pause'hover',
    
wraptrue
  
};

  var 
DefaultType = {
    
interval'(number|boolean)',
    
keyboard'boolean',
    
slide'(boolean|string)',
    
pause'(string|boolean)',
    
wrap'boolean'
  
};

  var 
Direction = {
    
NEXT'next',
    
PREVIOUS'prev'
  
};

  var 
Event = {
    
SLIDE'slide' EVENT_KEY,
    
SLID'slid' EVENT_KEY,
    
KEYDOWN'keydown' EVENT_KEY,
    
MOUSEENTER'mouseenter' EVENT_KEY,
    
MOUSELEAVE'mouseleave' EVENT_KEY,
    
LOAD_DATA_API'load' EVENT_KEY DATA_API_KEY,
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
CAROUSEL'carousel',
    
ACTIVE'active',
    
SLIDE'slide',
    
RIGHT'right',
    
LEFT'left',
    
ITEM'carousel-item'
  
};

  var 
Selector = {
    
ACTIVE'.active',
    
ACTIVE_ITEM'.active.carousel-item',
    
ITEM'.carousel-item',
    
NEXT_PREV'.next, .prev',
    
INDICATORS'.carousel-indicators',
    
DATA_SLIDE'[data-slide], [data-slide-to]',
    
DATA_RIDE'[data-ride="carousel"]'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Carousel = (function () {
    function 
Carousel(elementconfig) {
      
_classCallCheck(thisCarousel);

      
this._items null;
      
this._interval null;
      
this._activeElement null;

      
this._isPaused false;
      
this._isSliding false;

      
this._config this._getConfig(config);
      
this._element = $(element)[0];
      
this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];

      
this._addEventListeners();
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Carousel, [{
      
key'next',

      
// public

      
value: function next() {
        if (!
this._isSliding) {
          
this._slide(Direction.NEXT);
        }
      }
    }, {
      
key'prev',
      
value: function prev() {
        if (!
this._isSliding) {
          
this._slide(Direction.PREVIOUS);
        }
      }
    }, {
      
key'pause',
      
value: function pause(event) {
        if (!
event) {
          
this._isPaused true;
        }

        if ($(
this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
          
Util.triggerTransitionEnd(this._element);
          
this.cycle(true);
        }

        
clearInterval(this._interval);
        
this._interval null;
      }
    }, {
      
key'cycle',
      
value: function cycle(event) {
        if (!
event) {
          
this._isPaused false;
        }

        if (
this._interval) {
          
clearInterval(this._interval);
          
this._interval null;
        }

        if (
this._config.interval && !this._isPaused) {
          
this._interval setInterval($.proxy(this.nextthis), this._config.interval);
        }
      }
    }, {
      
key'to',
      
value: function to(index) {
        var 
_this2 this;

        
this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];

        var 
activeIndex this._getItemIndex(this._activeElement);

        if (
index this._items.length || index 0) {
          return;
        }

        if (
this._isSliding) {
          $(
this._element).one(Event.SLID, function () {
            return 
_this2.to(index);
          });
          return;
        }

        if (
activeIndex === index) {
          
this.pause();
          
this.cycle();
          return;
        }

        var 
direction index activeIndex Direction.NEXT Direction.PREVIOUS;

        
this._slide(directionthis._items[index]);
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $(
this._element).off(EVENT_KEY);
        $.
removeData(this._elementDATA_KEY);

        
this._items null;
        
this._config null;
        
this._element null;
        
this._interval null;
        
this._isPaused null;
        
this._isSliding null;
        
this._activeElement null;
        
this._indicatorsElement null;
      }

      
// private

    
}, {
      
key'_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);
        
Util.typeCheckConfig(NAMEconfigDefaultType);
        return 
config;
      }
    }, {
      
key'_addEventListeners',
      
value: function _addEventListeners() {
        if (
this._config.keyboard) {
          $(
this._element).on(Event.KEYDOWN, $.proxy(this._keydownthis));
        }

        if (
this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) {
          $(
this._element).on(Event.MOUSEENTER, $.proxy(this.pausethis)).on(Event.MOUSELEAVE, $.proxy(this.cyclethis));
        }
      }
    }, {
      
key'_keydown',
      
value: function _keydown(event) {
        
event.preventDefault();

        if (/
input|textarea/i.test(event.target.tagName)) {
          return;
        }

        switch (
event.which) {
          case 
37:
            
this.prev();break;
          case 
39:
            
this.next();break;
          default:
            return;
        }
      }
    }, {
      
key'_getItemIndex',
      
value: function _getItemIndex(element) {
        
this._items = $.makeArray($(element).parent().find(Selector.ITEM));
        return 
this._items.indexOf(element);
      }
    }, {
      
key'_getItemByDirection',
      
value: function _getItemByDirection(directionactiveElement) {
        var 
isNextDirection direction === Direction.NEXT;
        var 
isPrevDirection direction === Direction.PREVIOUS;
        var 
activeIndex this._getItemIndex(activeElement);
        var 
lastItemIndex this._items.length 1;
        var 
isGoingToWrap isPrevDirection && activeIndex === || isNextDirection && activeIndex === lastItemIndex;

        if (
isGoingToWrap && !this._config.wrap) {
          return 
activeElement;
        }

        var 
delta direction === Direction.PREVIOUS ? -1;
        var 
itemIndex = (activeIndex delta) % this._items.length;

        return 
itemIndex === -this._items[this._items.length 1] : this._items[itemIndex];
      }
    }, {
      
key'_triggerSlideEvent',
      
value: function _triggerSlideEvent(relatedTargetdirectionalClassname) {
        var 
slideEvent = $.Event(Event.SLIDE, {
          
relatedTargetrelatedTarget,
          
directiondirectionalClassname
        
});

        $(
this._element).trigger(slideEvent);

        return 
slideEvent;
      }
    }, {
      
key'_setActiveIndicatorElement',
      
value: function _setActiveIndicatorElement(element) {
        if (
this._indicatorsElement) {
          $(
this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);

          var 
nextIndicator this._indicatorsElement.children[this._getItemIndex(element)];

          if (
nextIndicator) {
            $(
nextIndicator).addClass(ClassName.ACTIVE);
          }
        }
      }
    }, {
      
key'_slide',
      
value: function _slide(directionelement) {
        var 
_this3 this;

        var 
activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
        var 
nextElement element || activeElement && this._getItemByDirection(directionactiveElement);

        var 
isCycling Boolean(this._interval);

        var 
directionalClassName direction === Direction.NEXT ClassName.LEFT ClassName.RIGHT;

        if (
nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
          
this._isSliding false;
          return;
        }

        var 
slideEvent this._triggerSlideEvent(nextElementdirectionalClassName);
        if (
slideEvent.isDefaultPrevented()) {
          return;
        }

        if (!
activeElement || !nextElement) {
          
// some weirdness is happening, so we bail
          
return;
        }

        
this._isSliding true;

        if (
isCycling) {
          
this.pause();
        }

        
this._setActiveIndicatorElement(nextElement);

        var 
slidEvent = $.Event(Event.SLID, {
          
relatedTargetnextElement,
          
directiondirectionalClassName
        
});

        if (
Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {

          $(
nextElement).addClass(direction);

          
Util.reflow(nextElement);

          $(
activeElement).addClass(directionalClassName);
          $(
nextElement).addClass(directionalClassName);

          $(
activeElement).one(Util.TRANSITION_END, function () {
            $(
nextElement).removeClass(directionalClassName).removeClass(direction);

            $(
nextElement).addClass(ClassName.ACTIVE);

            $(
activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName);

            
_this3._isSliding false;

            
setTimeout(function () {
              return $(
_this3._element).trigger(slidEvent);
            }, 
0);
          }).
emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          $(
activeElement).removeClass(ClassName.ACTIVE);
          $(
nextElement).addClass(ClassName.ACTIVE);

          
this._isSliding false;
          $(
this._element).trigger(slidEvent);
        }

        if (
isCycling) {
          
this.cycle();
        }
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = $.extend({}, Default, $(this).data());

          if (
typeof config === 'object') {
            $.
extend(_configconfig);
          }

          var 
action typeof config === 'string' config _config.slide;

          if (!
data) {
            
data = new Carousel(this_config);
            $(
this).data(DATA_KEYdata);
          }

          if (
typeof config === 'number') {
            
data.to(config);
          } else if (
action) {
            
data[action]();
          } else if (
_config.interval) {
            
data.pause();
            
data.cycle();
          }
        });
      }
    }, {
      
key'_dataApiClickHandler',
      
value: function _dataApiClickHandler(event) {
        var 
selector Util.getSelectorFromElement(this);

        if (!
selector) {
          return;
        }

        var 
target = $(selector)[0];

        if (!
target || !$(target).hasClass(ClassName.CAROUSEL)) {
          return;
        }

        var 
config = $.extend({}, $(target).data(), $(this).data());
        var 
slideIndex this.getAttribute('data-slide-to');

        if (
slideIndex) {
          
config.interval false;
        }

        
Carousel._jQueryInterface.call($(target), config);

        if (
slideIndex) {
          $(
target).data(DATA_KEY).to(slideIndex);
        }

        
event.preventDefault();
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
Carousel;
  })();

  $(
document).on(Event.CLICK_DATA_APISelector.DATA_SLIDECarousel._dataApiClickHandler);

  $(
window).on(Event.LOAD_DATA_API, function () {
    $(
Selector.DATA_RIDE).each(function () {
      var 
$carousel = $(this);
      
Carousel._jQueryInterface.call($carousel$carousel.data());
    });
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Carousel._jQueryInterface;
  $.fn[
NAME].Constructor Carousel;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Carousel._jQueryInterface;
  };

  return 
Carousel;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): collapse.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Collapse = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'collapse';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.collapse';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION 600;

  var Default = {
    
toggletrue,
    
parent''
  
};

  var 
DefaultType = {
    
toggle'boolean',
    
parent'string'
  
};

  var 
Event = {
    
SHOW'show' EVENT_KEY,
    
SHOWN'shown' EVENT_KEY,
    
HIDE'hide' EVENT_KEY,
    
HIDDEN'hidden' EVENT_KEY,
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
IN'in',
    
COLLAPSE'collapse',
    
COLLAPSING'collapsing',
    
COLLAPSED'collapsed'
  
};

  var 
Dimension = {
    
WIDTH'width',
    
HEIGHT'height'
  
};

  var 
Selector = {
    
ACTIVES'.panel > .in, .panel > .collapsing',
    
DATA_TOGGLE'[data-toggle="collapse"]'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Collapse = (function () {
    function 
Collapse(elementconfig) {
      
_classCallCheck(thisCollapse);

      
this._isTransitioning false;
      
this._element element;
      
this._config this._getConfig(config);
      
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' element.id '"],' + ('[data-toggle="collapse"][data-target="#' element.id '"]')));

      
this._parent this._config.parent this._getParent() : null;

      if (!
this._config.parent) {
        
this._addAriaAndCollapsedClass(this._elementthis._triggerArray);
      }

      if (
this._config.toggle) {
        
this.toggle();
      }
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Collapse, [{
      
key'toggle',

      
// public

      
value: function toggle() {
        if ($(
this._element).hasClass(ClassName.IN)) {
          
this.hide();
        } else {
          
this.show();
        }
      }
    }, {
      
key'show',
      
value: function show() {
        var 
_this4 this;

        if (
this._isTransitioning || $(this._element).hasClass(ClassName.IN)) {
          return;
        }

        var 
actives undefined;
        var 
activesData undefined;

        if (
this._parent) {
          
actives = $.makeArray($(Selector.ACTIVES));
          if (!
actives.length) {
            
actives null;
          }
        }

        if (
actives) {
          
activesData = $(actives).data(DATA_KEY);
          if (
activesData && activesData._isTransitioning) {
            return;
          }
        }

        var 
startEvent = $.Event(Event.SHOW);
        $(
this._element).trigger(startEvent);
        if (
startEvent.isDefaultPrevented()) {
          return;
        }

        if (
actives) {
          
Collapse._jQueryInterface.call($(actives), 'hide');
          if (!
activesData) {
            $(
actives).data(DATA_KEYnull);
          }
        }

        var 
dimension this._getDimension();

        $(
this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);

        
this._element.style[dimension] = 0;
        
this._element.setAttribute('aria-expanded'true);

        if (
this._triggerArray.length) {
          $(
this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded'true);
        }

        
this.setTransitioning(true);

        var 
complete = function complete() {
          $(
_this4._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.IN);

          
_this4._element.style[dimension] = '';

          
_this4.setTransitioning(false);

          $(
_this4._element).trigger(Event.SHOWN);
        };

        if (!
Util.supportsTransitionEnd()) {
          
complete();
          return;
        }

        var 
capitalizedDimension dimension[0].toUpperCase() + dimension.slice(1);
        var 
scrollSize 'scroll' capitalizedDimension;

        $(
this._element).one(Util.TRANSITION_ENDcomplete).emulateTransitionEnd(TRANSITION_DURATION);

        
this._element.style[dimension] = this._element[scrollSize] + 'px';
      }
    }, {
      
key'hide',
      
value: function hide() {
        var 
_this5 this;

        if (
this._isTransitioning || !$(this._element).hasClass(ClassName.IN)) {
          return;
        }

        var 
startEvent = $.Event(Event.HIDE);
        $(
this._element).trigger(startEvent);
        if (
startEvent.isDefaultPrevented()) {
          return;
        }

        var 
dimension this._getDimension();
        var 
offsetDimension dimension === Dimension.WIDTH 'offsetWidth' 'offsetHeight';

        
this._element.style[dimension] = this._element[offsetDimension] + 'px';

        
Util.reflow(this._element);

        $(
this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.IN);

        
this._element.setAttribute('aria-expanded'false);

        if (
this._triggerArray.length) {
          $(
this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded'false);
        }

        
this.setTransitioning(true);

        var 
complete = function complete() {
          
_this5.setTransitioning(false);
          $(
_this5._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
        };

        
this._element.style[dimension] = 0;

        if (!
Util.supportsTransitionEnd()) {
          
complete();
          return;
        }

        $(
this._element).one(Util.TRANSITION_ENDcomplete).emulateTransitionEnd(TRANSITION_DURATION);
      }
    }, {
      
key'setTransitioning',
      
value: function setTransitioning(isTransitioning) {
        
this._isTransitioning isTransitioning;
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeData(this._elementDATA_KEY);

        
this._config null;
        
this._parent null;
        
this._element null;
        
this._triggerArray null;
        
this._isTransitioning null;
      }

      
// private

    
}, {
      
key'_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);
        
config.toggle Boolean(config.toggle); // coerce string values
        
Util.typeCheckConfig(NAMEconfigDefaultType);
        return 
config;
      }
    }, {
      
key'_getDimension',
      
value: function _getDimension() {
        var 
hasWidth = $(this._element).hasClass(Dimension.WIDTH);
        return 
hasWidth Dimension.WIDTH Dimension.HEIGHT;
      }
    }, {
      
key'_getParent',
      
value: function _getParent() {
        var 
_this6 this;

        var 
parent = $(this._config.parent)[0];
        var 
selector '[data-toggle="collapse"][data-parent="' this._config.parent '"]';

        $(
parent).find(selector).each(function (ielement) {
          
_this6._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
        });

        return 
parent;
      }
    }, {
      
key'_addAriaAndCollapsedClass',
      
value: function _addAriaAndCollapsedClass(elementtriggerArray) {
        if (
element) {
          var 
isOpen = $(element).hasClass(ClassName.IN);
          
element.setAttribute('aria-expanded'isOpen);

          if (
triggerArray.length) {
            $(
triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded'isOpen);
          }
        }
      }

      
// static

    
}], [{
      
key'_getTargetFromElement',
      
value: function _getTargetFromElement(element) {
        var 
selector Util.getSelectorFromElement(element);
        return 
selector ? $(selector)[0] : null;
      }
    }, {
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
$this = $(this);
          var 
data $this.data(DATA_KEY);
          var 
_config = $.extend({}, Default, $this.data(), typeof config === 'object' && config);

          if (!
data && _config.toggle && /show|hide/.test(config)) {
            
_config.toggle false;
          }

          if (!
data) {
            
data = new Collapse(this_config);
            
$this.data(DATA_KEYdata);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
Collapse;
  })();

  $(
document).on(Event.CLICK_DATA_APISelector.DATA_TOGGLE, function (event) {
    
event.preventDefault();

    var 
target Collapse._getTargetFromElement(this);
    var 
data = $(target).data(DATA_KEY);
    var 
config data 'toggle' : $(this).data();

    
Collapse._jQueryInterface.call($(target), config);
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Collapse._jQueryInterface;
  $.fn[
NAME].Constructor Collapse;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Collapse._jQueryInterface;
  };

  return 
Collapse;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): dropdown.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Dropdown = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'dropdown';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.dropdown';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var 
Event = {
    
HIDE'hide' EVENT_KEY,
    
HIDDEN'hidden' EVENT_KEY,
    
SHOW'show' EVENT_KEY,
    
SHOWN'shown' EVENT_KEY,
    
CLICK'click' EVENT_KEY,
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY,
    
KEYDOWN_DATA_API'keydown' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
BACKDROP'dropdown-backdrop',
    
DISABLED'disabled',
    
OPEN'open'
  
};

  var 
Selector = {
    
BACKDROP'.dropdown-backdrop',
    
DATA_TOGGLE'[data-toggle="dropdown"]',
    
FORM_CHILD'.dropdown form',
    
ROLE_MENU'[role="menu"]',
    
ROLE_LISTBOX'[role="listbox"]',
    
NAVBAR_NAV'.navbar-nav',
    
VISIBLE_ITEMS'[role="menu"] li:not(.disabled) a, ' '[role="listbox"] li:not(.disabled) a'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Dropdown = (function () {
    function 
Dropdown(element) {
      
_classCallCheck(thisDropdown);

      
this._element element;

      
this._addEventListeners();
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Dropdown, [{
      
key'toggle',

      
// public

      
value: function toggle() {
        if (
this.disabled || $(this).hasClass(ClassName.DISABLED)) {
          return 
false;
        }

        var 
parent Dropdown._getParentFromElement(this);
        var 
isActive = $(parent).hasClass(ClassName.OPEN);

        
Dropdown._clearMenus();

        if (
isActive) {
          return 
false;
        }

        if (
'ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {

          
// if mobile we use a backdrop because click events don't delegate
          
var dropdown document.createElement('div');
          
dropdown.className ClassName.BACKDROP;
          $(
dropdown).insertBefore(this);
          $(
dropdown).on('click'Dropdown._clearMenus);
        }

        var 
relatedTarget = { relatedTargetthis };
        var 
showEvent = $.Event(Event.SHOWrelatedTarget);

        $(
parent).trigger(showEvent);

        if (
showEvent.isDefaultPrevented()) {
          return 
false;
        }

        
this.focus();
        
this.setAttribute('aria-expanded''true');

        $(
parent).toggleClass(ClassName.OPEN);
        $(
parent).trigger($.Event(Event.SHOWNrelatedTarget));

        return 
false;
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeData(this._elementDATA_KEY);
        $(
this._element).off(EVENT_KEY);
        
this._element null;
      }

      
// private

    
}, {
      
key'_addEventListeners',
      
value: function _addEventListeners() {
        $(
this._element).on(Event.CLICKthis.toggle);
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);

          if (!
data) {
            $(
this).data(DATA_KEYdata = new Dropdown(this));
          }

          if (
typeof config === 'string') {
            
data[config].call(this);
          }
        });
      }
    }, {
      
key'_clearMenus',
      
value: function _clearMenus(event) {
        if (
event && event.which === 3) {
          return;
        }

        var 
backdrop = $(Selector.BACKDROP)[0];
        if (
backdrop) {
          
backdrop.parentNode.removeChild(backdrop);
        }

        var 
toggles = $.makeArray($(Selector.DATA_TOGGLE));

        for (var 
0toggles.lengthi++) {
          var 
_parent Dropdown._getParentFromElement(toggles[i]);
          var 
relatedTarget = { relatedTargettoggles[i] };

          if (!$(
_parent).hasClass(ClassName.OPEN)) {
            continue;
          }

          if (
event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parentevent.target)) {
            continue;
          }

          var 
hideEvent = $.Event(Event.HIDErelatedTarget);
          $(
_parent).trigger(hideEvent);
          if (
hideEvent.isDefaultPrevented()) {
            continue;
          }

          
toggles[i].setAttribute('aria-expanded''false');

          $(
_parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDENrelatedTarget));
        }
      }
    }, {
      
key'_getParentFromElement',
      
value: function _getParentFromElement(element) {
        var 
parent undefined;
        var 
selector Util.getSelectorFromElement(element);

        if (
selector) {
          
parent = $(selector)[0];
        }

        return 
parent || element.parentNode;
      }
    }, {
      
key'_dataApiKeydownHandler',
      
value: function _dataApiKeydownHandler(event) {
        if (!/(
38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
          return;
        }

        
event.preventDefault();
        
event.stopPropagation();

        if (
this.disabled || $(this).hasClass(ClassName.DISABLED)) {
          return;
        }

        var 
parent Dropdown._getParentFromElement(this);
        var 
isActive = $(parent).hasClass(ClassName.OPEN);

        if (!
isActive && event.which !== 27 || isActive && event.which === 27) {

          if (
event.which === 27) {
            var 
toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
            $(
toggle).trigger('focus');
          }

          $(
this).trigger('click');
          return;
        }

        var 
items = $.makeArray($(Selector.VISIBLE_ITEMS));

        
items items.filter(function (item) {
          return 
item.offsetWidth || item.offsetHeight;
        });

        if (!
items.length) {
          return;
        }

        var 
index items.indexOf(event.target);

        if (
event.which === 38 && index 0) {
          
// up
          
index--;
        }

        if (
event.which === 40 && index items.length 1) {
          
// down
          
index++;
        }

        if (! ~
index) {
          
index 0;
        }

        
items[index].focus();
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Dropdown;
  })();

  $(
document).on(Event.KEYDOWN_DATA_APISelector.DATA_TOGGLEDropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_APISelector.ROLE_MENUDropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_APISelector.ROLE_LISTBOXDropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_APIDropdown._clearMenus).on(Event.CLICK_DATA_APISelector.DATA_TOGGLEDropdown.prototype.toggle).on(Event.CLICK_DATA_APISelector.FORM_CHILD, function (e) {
    
e.stopPropagation();
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Dropdown._jQueryInterface;
  $.fn[
NAME].Constructor Dropdown;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Dropdown._jQueryInterface;
  };

  return 
Dropdown;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): modal.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Modal = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'modal';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.modal';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION 300;
  var 
BACKDROP_TRANSITION_DURATION 150;

  var Default = {
    
backdroptrue,
    
keyboardtrue,
    
focustrue,
    
showtrue
  
};

  var 
DefaultType = {
    
backdrop'(boolean|string)',
    
keyboard'boolean',
    
focus'boolean',
    
show'boolean'
  
};

  var 
Event = {
    
HIDE'hide' EVENT_KEY,
    
HIDDEN'hidden' EVENT_KEY,
    
SHOW'show' EVENT_KEY,
    
SHOWN'shown' EVENT_KEY,
    
FOCUSIN'focusin' EVENT_KEY,
    
RESIZE'resize' EVENT_KEY,
    
CLICK_DISMISS'click.dismiss' EVENT_KEY,
    
KEYDOWN_DISMISS'keydown.dismiss' EVENT_KEY,
    
MOUSEUP_DISMISS'mouseup.dismiss' EVENT_KEY,
    
MOUSEDOWN_DISMISS'mousedown.dismiss' EVENT_KEY,
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
SCROLLBAR_MEASURER'modal-scrollbar-measure',
    
BACKDROP'modal-backdrop',
    
OPEN'modal-open',
    
FADE'fade',
    
IN'in'
  
};

  var 
Selector = {
    
DIALOG'.modal-dialog',
    
DATA_TOGGLE'[data-toggle="modal"]',
    
DATA_DISMISS'[data-dismiss="modal"]',
    
FIXED_CONTENT'.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Modal = (function () {
    function 
Modal(elementconfig) {
      
_classCallCheck(thisModal);

      
this._config this._getConfig(config);
      
this._element element;
      
this._dialog = $(element).find(Selector.DIALOG)[0];
      
this._backdrop null;
      
this._isShown false;
      
this._isBodyOverflowing false;
      
this._ignoreBackdropClick false;
      
this._originalBodyPadding 0;
      
this._scrollbarWidth 0;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Modal, [{
      
key'toggle',

      
// public

      
value: function toggle(relatedTarget) {
        return 
this._isShown this.hide() : this.show(relatedTarget);
      }
    }, {
      
key'show',
      
value: function show(relatedTarget) {
        var 
_this7 this;

        var 
showEvent = $.Event(Event.SHOW, {
          
relatedTargetrelatedTarget
        
});

        $(
this._element).trigger(showEvent);

        if (
this._isShown || showEvent.isDefaultPrevented()) {
          return;
        }

        
this._isShown true;

        
this._checkScrollbar();
        
this._setScrollbar();

        $(
document.body).addClass(ClassName.OPEN);

        
this._setEscapeEvent();
        
this._setResizeEvent();

        $(
this._element).on(Event.CLICK_DISMISSSelector.DATA_DISMISS, $.proxy(this.hidethis));

        $(
this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
          $(
_this7._element).one(Event.MOUSEUP_DISMISS, function (event) {
            if ($(
event.target).is(_this7._element)) {
              
that._ignoreBackdropClick true;
            }
          });
        });

        
this._showBackdrop($.proxy(this._showElementthisrelatedTarget));
      }
    }, {
      
key'hide',
      
value: function hide(event) {
        if (
event) {
          
event.preventDefault();
        }

        var 
hideEvent = $.Event(Event.HIDE);

        $(
this._element).trigger(hideEvent);

        if (!
this._isShown || hideEvent.isDefaultPrevented()) {
          return;
        }

        
this._isShown false;

        
this._setEscapeEvent();
        
this._setResizeEvent();

        $(
document).off(Event.FOCUSIN);

        $(
this._element).removeClass(ClassName.IN);

        $(
this._element).off(Event.CLICK_DISMISS);
        $(
this._dialog).off(Event.MOUSEDOWN_DISMISS);

        if (
Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {

          $(
this._element).one(Util.TRANSITION_END, $.proxy(this._hideModalthis)).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
this._hideModal();
        }
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeData(this._elementDATA_KEY);

        $(
window).off(EVENT_KEY);
        $(
document).off(EVENT_KEY);
        $(
this._element).off(EVENT_KEY);
        $(
this._backdrop).off(EVENT_KEY);

        
this._config null;
        
this._element null;
        
this._dialog null;
        
this._backdrop null;
        
this._isShown null;
        
this._isBodyOverflowing null;
        
this._ignoreBackdropClick null;
        
this._originalBodyPadding null;
        
this._scrollbarWidth null;
      }

      
// private

    
}, {
      
key'_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);
        
Util.typeCheckConfig(NAMEconfigDefaultType);
        return 
config;
      }
    }, {
      
key'_showElement',
      
value: function _showElement(relatedTarget) {
        var 
_this8 this;

        var 
transition Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);

        if (!
this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
          
// don't move modals dom position
          
document.body.appendChild(this._element);
        }

        
this._element.style.display 'block';
        
this._element.scrollTop 0;

        if (
transition) {
          
Util.reflow(this._element);
        }

        $(
this._element).addClass(ClassName.IN);

        if (
this._config.focus) {
          
this._enforceFocus();
        }

        var 
shownEvent = $.Event(Event.SHOWN, {
          
relatedTargetrelatedTarget
        
});

        var 
transitionComplete = function transitionComplete() {
          if (
_this8._config.focus) {
            
_this8._element.focus();
          }
          $(
_this8._element).trigger(shownEvent);
        };

        if (
transition) {
          $(
this._dialog).one(Util.TRANSITION_ENDtransitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
transitionComplete();
        }
      }
    }, {
      
key'_enforceFocus',
      
value: function _enforceFocus() {
        var 
_this9 this;

        $(
document).off(Event.FOCUSIN// guard against infinite focus loop
        
.on(Event.FOCUSIN, function (event) {
          if (
_this9._element !== event.target && !$(_this9._element).has(event.target).length) {
            
_this9._element.focus();
          }
        });
      }
    }, {
      
key'_setEscapeEvent',
      
value: function _setEscapeEvent() {
        var 
_this10 this;

        if (
this._isShown && this._config.keyboard) {
          $(
this._element).on(Event.KEYDOWN_DISMISS, function (event) {
            if (
event.which === 27) {
              
_this10.hide();
            }
          });
        } else if (!
this._isShown) {
          $(
this._element).off(Event.KEYDOWN_DISMISS);
        }
      }
    }, {
      
key'_setResizeEvent',
      
value: function _setResizeEvent() {
        if (
this._isShown) {
          $(
window).on(Event.RESIZE, $.proxy(this._handleUpdatethis));
        } else {
          $(
window).off(Event.RESIZE);
        }
      }
    }, {
      
key'_hideModal',
      
value: function _hideModal() {
        var 
_this11 this;

        
this._element.style.display 'none';
        
this._showBackdrop(function () {
          $(
document.body).removeClass(ClassName.OPEN);
          
_this11._resetAdjustments();
          
_this11._resetScrollbar();
          $(
_this11._element).trigger(Event.HIDDEN);
        });
      }
    }, {
      
key'_removeBackdrop',
      
value: function _removeBackdrop() {
        if (
this._backdrop) {
          $(
this._backdrop).remove();
          
this._backdrop null;
        }
      }
    }, {
      
key'_showBackdrop',
      
value: function _showBackdrop(callback) {
        var 
_this12 this;

        var 
animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE '';

        if (
this._isShown && this._config.backdrop) {
          var 
doAnimate Util.supportsTransitionEnd() && animate;

          
this._backdrop document.createElement('div');
          
this._backdrop.className ClassName.BACKDROP;

          if (
animate) {
            $(
this._backdrop).addClass(animate);
          }

          $(
this._backdrop).appendTo(document.body);

          $(
this._element).on(Event.CLICK_DISMISS, function (event) {
            if (
_this12._ignoreBackdropClick) {
              
_this12._ignoreBackdropClick false;
              return;
            }
            if (
event.target !== event.currentTarget) {
              return;
            }
            if (
_this12._config.backdrop === 'static') {
              
_this12._element.focus();
            } else {
              
_this12.hide();
            }
          });

          if (
doAnimate) {
            
Util.reflow(this._backdrop);
          }

          $(
this._backdrop).addClass(ClassName.IN);

          if (!
callback) {
            return;
          }

          if (!
doAnimate) {
            
callback();
            return;
          }

          $(
this._backdrop).one(Util.TRANSITION_ENDcallback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
        } else if (!
this._isShown && this._backdrop) {
          $(
this._backdrop).removeClass(ClassName.IN);

          var 
callbackRemove = function callbackRemove() {
            
_this12._removeBackdrop();
            if (
callback) {
              
callback();
            }
          };

          if (
Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
            $(
this._backdrop).one(Util.TRANSITION_ENDcallbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
          } else {
            
callbackRemove();
          }
        } else if (
callback) {
          
callback();
        }
      }

      
// ----------------------------------------------------------------------
      // the following methods are used to handle overflowing modals
      // todo (fat): these should probably be refactored out of modal.js
      // ----------------------------------------------------------------------

    
}, {
      
key'_handleUpdate',
      
value: function _handleUpdate() {
        
this._adjustDialog();
      }
    }, {
      
key'_adjustDialog',
      
value: function _adjustDialog() {
        var 
isModalOverflowing this._element.scrollHeight document.documentElement.clientHeight;

        if (!
this._isBodyOverflowing && isModalOverflowing) {
          
this._element.style.paddingLeft this._scrollbarWidth 'px';
        }

        if (
this._isBodyOverflowing && !isModalOverflowing) {
          
this._element.style.paddingRight this._scrollbarWidth 'px~';
        }
      }
    }, {
      
key'_resetAdjustments',
      
value: function _resetAdjustments() {
        
this._element.style.paddingLeft '';
        
this._element.style.paddingRight '';
      }
    }, {
      
key'_checkScrollbar',
      
value: function _checkScrollbar() {
        var 
fullWindowWidth window.innerWidth;
        if (!
fullWindowWidth) {
          
// workaround for missing window.innerWidth in IE8
          
var documentElementRect document.documentElement.getBoundingClientRect();
          
fullWindowWidth documentElementRect.right Math.abs(documentElementRect.left);
        }
        
this._isBodyOverflowing document.body.clientWidth fullWindowWidth;
        
this._scrollbarWidth this._getScrollbarWidth();
      }
    }, {
      
key'_setScrollbar',
      
value: function _setScrollbar() {
        var 
bodyPadding parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 010);

        
this._originalBodyPadding document.body.style.paddingRight || '';

        if (
this._isBodyOverflowing) {
          
document.body.style.paddingRight bodyPadding + (this._scrollbarWidth 'px');
        }
      }
    }, {
      
key'_resetScrollbar',
      
value: function _resetScrollbar() {
        
document.body.style.paddingRight this._originalBodyPadding;
      }
    }, {
      
key'_getScrollbarWidth',
      
value: function _getScrollbarWidth() {
        
// thx d.walsh
        
var scrollDiv document.createElement('div');
        
scrollDiv.className ClassName.SCROLLBAR_MEASURER;
        
document.body.appendChild(scrollDiv);
        var 
scrollbarWidth scrollDiv.offsetWidth scrollDiv.clientWidth;
        
document.body.removeChild(scrollDiv);
        return 
scrollbarWidth;
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(configrelatedTarget) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config);

          if (!
data) {
            
data = new Modal(this_config);
            $(
this).data(DATA_KEYdata);
          }

          if (
typeof config === 'string') {
            
data[config](relatedTarget);
          } else if (
_config.show) {
            
data.show(relatedTarget);
          }
        });
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
Modal;
  })();

  $(
document).on(Event.CLICK_DATA_APISelector.DATA_TOGGLE, function (event) {
    var 
_this13 this;

    var 
target undefined;
    var 
selector Util.getSelectorFromElement(this);

    if (
selector) {
      
target = $(selector)[0];
    }

    var 
config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data());

    if (
this.tagName === 'A') {
      
event.preventDefault();
    }

    var 
$target = $(target).one(Event.SHOW, function (showEvent) {
      if (
showEvent.isDefaultPrevented()) {
        
// only register focus restorer if modal will actually get shown
        
return;
      }

      
$target.one(Event.HIDDEN, function () {
        if ($(
_this13).is(':visible')) {
          
_this13.focus();
        }
      });
    });

    
Modal._jQueryInterface.call($(target), configthis);
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Modal._jQueryInterface;
  $.fn[
NAME].Constructor Modal;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Modal._jQueryInterface;
  };

  return 
Modal;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): scrollspy.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var ScrollSpy = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'scrollspy';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.scrollspy';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var Default = {
    
offset10,
    
method'auto',
    
target''
  
};

  var 
DefaultType = {
    
offset'number',
    
method'string',
    
target'(string|element)'
  
};

  var 
Event = {
    
ACTIVATE'activate' EVENT_KEY,
    
SCROLL'scroll' EVENT_KEY,
    
LOAD_DATA_API'load' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
DROPDOWN_ITEM'dropdown-item',
    
DROPDOWN_MENU'dropdown-menu',
    
NAV_LINK'nav-link',
    
NAV'nav',
    
ACTIVE'active'
  
};

  var 
Selector = {
    
DATA_SPY'[data-spy="scroll"]',
    
ACTIVE'.active',
    
LIST_ITEM'.list-item',
    
LI'li',
    
LI_DROPDOWN'li.dropdown',
    
NAV_LINKS'.nav-link',
    
DROPDOWN'.dropdown',
    
DROPDOWN_ITEMS'.dropdown-item',
    
DROPDOWN_TOGGLE'.dropdown-toggle'
  
};

  var 
OffsetMethod = {
    
OFFSET'offset',
    
POSITION'position'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var ScrollSpy = (function () {
    function 
ScrollSpy(elementconfig) {
      
_classCallCheck(thisScrollSpy);

      
this._element element;
      
this._scrollElement element.tagName === 'BODY' window element;
      
this._config this._getConfig(config);
      
this._selector this._config.target ' ' Selector.NAV_LINKS ',' + (this._config.target ' ' Selector.DROPDOWN_ITEMS);
      
this._offsets = [];
      
this._targets = [];
      
this._activeTarget null;
      
this._scrollHeight 0;

      $(
this._scrollElement).on(Event.SCROLL, $.proxy(this._processthis));

      
this.refresh();
      
this._process();
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(ScrollSpy, [{
      
key'refresh',

      
// public

      
value: function refresh() {
        var 
_this14 this;

        var 
autoMethod this._scrollElement !== this._scrollElement.window OffsetMethod.POSITION OffsetMethod.OFFSET;

        var 
offsetMethod this._config.method === 'auto' autoMethod this._config.method;

        var 
offsetBase offsetMethod === OffsetMethod.POSITION this._getScrollTop() : 0;

        
this._offsets = [];
        
this._targets = [];

        
this._scrollHeight this._getScrollHeight();

        var 
targets = $.makeArray($(this._selector));

        
targets.map(function (element) {
          var 
target undefined;
          var 
targetSelector Util.getSelectorFromElement(element);

          if (
targetSelector) {
            
target = $(targetSelector)[0];
          }

          if (
target && (target.offsetWidth || target.offsetHeight)) {
            
// todo (fat): remove sketch reliance on jQuery position/offset
            
return [$(target)[offsetMethod]().top offsetBasetargetSelector];
          }
        }).
filter(function (item) {
          return 
item;
        }).
sort(function (ab) {
          return 
a[0] - b[0];
        }).forEach(function (
item) {
          
_this14._offsets.push(item[0]);
          
_this14._targets.push(item[1]);
        });
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeData(this._elementDATA_KEY);
        $(
this._scrollElement).off(EVENT_KEY);

        
this._element null;
        
this._scrollElement null;
        
this._config null;
        
this._selector null;
        
this._offsets null;
        
this._targets null;
        
this._activeTarget null;
        
this._scrollHeight null;
      }

      
// private

    
}, {
      
key'_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, Default, config);

        if (
typeof config.target !== 'string') {
          var 
id = $(config.target).attr('id');
          if (!
id) {
            
id Util.getUID(NAME);
            $(
config.target).attr('id'id);
          }
          
config.target '#' id;
        }

        
Util.typeCheckConfig(NAMEconfigDefaultType);

        return 
config;
      }
    }, {
      
key'_getScrollTop',
      
value: function _getScrollTop() {
        return 
this._scrollElement === window this._scrollElement.scrollY this._scrollElement.scrollTop;
      }
    }, {
      
key'_getScrollHeight',
      
value: function _getScrollHeight() {
        return 
this._scrollElement.scrollHeight || Math.max(document.body.scrollHeightdocument.documentElement.scrollHeight);
      }
    }, {
      
key'_process',
      
value: function _process() {
        var 
scrollTop this._getScrollTop() + this._config.offset;
        var 
scrollHeight this._getScrollHeight();
        var 
maxScroll this._config.offset scrollHeight this._scrollElement.offsetHeight;

        if (
this._scrollHeight !== scrollHeight) {
          
this.refresh();
        }

        if (
scrollTop >= maxScroll) {
          var 
target this._targets[this._targets.length 1];

          if (
this._activeTarget !== target) {
            
this._activate(target);
          }
        }

        if (
this._activeTarget && scrollTop this._offsets[0]) {
          
this._activeTarget null;
          
this._clear();
          return;
        }

        for (var 
this._offsets.lengthi--;) {
          var 
isActiveTarget this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[1] === undefined || scrollTop this._offsets[1]);

          if (
isActiveTarget) {
            
this._activate(this._targets[i]);
          }
        }
      }
    }, {
      
key'_activate',
      
value: function _activate(target) {
        
this._activeTarget target;

        
this._clear();

        var 
queries this._selector.split(',');
        
queries queries.map(function (selector) {
          return 
selector '[data-target="' target '"],' + (selector '[href="' target '"]');
        });

        var 
$link = $(queries.join(','));

        if (
$link.hasClass(ClassName.DROPDOWN_ITEM)) {
          
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
          
$link.addClass(ClassName.ACTIVE);
        } else {
          
// todo (fat) this is kinda sus…
          // recursively add actives to tested nav-links
          
$link.parents(Selector.LI).find(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
        }

        $(
this._scrollElement).trigger(Event.ACTIVATE, {
          
relatedTargettarget
        
});
      }
    }, {
      
key'_clear',
      
value: function _clear() {
        $(
this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config typeof config === 'object' && config || null;

          if (!
data) {
            
data = new ScrollSpy(this_config);
            $(
this).data(DATA_KEYdata);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key'Default',
      
get: function get() {
        return Default;
      }
    }]);

    return 
ScrollSpy;
  })();

  $(
window).on(Event.LOAD_DATA_API, function () {
    var 
scrollSpys = $.makeArray($(Selector.DATA_SPY));

    for (var 
scrollSpys.lengthi--;) {
      var 
$spy = $(scrollSpys[i]);
      
ScrollSpy._jQueryInterface.call($spy$spy.data());
    }
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = ScrollSpy._jQueryInterface;
  $.fn[
NAME].Constructor ScrollSpy;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
ScrollSpy._jQueryInterface;
  };

  return 
ScrollSpy;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): tab.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Tab = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'tab';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.tab';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
DATA_API_KEY '.data-api';
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION 150;

  var 
Event = {
    
HIDE'hide' EVENT_KEY,
    
HIDDEN'hidden' EVENT_KEY,
    
SHOW'show' EVENT_KEY,
    
SHOWN'shown' EVENT_KEY,
    
CLICK_DATA_API'click' EVENT_KEY DATA_API_KEY
  
};

  var 
ClassName = {
    
DROPDOWN_MENU'dropdown-menu',
    
ACTIVE'active',
    
FADE'fade',
    
IN'in'
  
};

  var 
Selector = {
    
A'a',
    
LI'li',
    
DROPDOWN'.dropdown',
    
UL'ul:not(.dropdown-menu)',
    
FADE_CHILD'> .nav-item .fade, > .fade',
    
ACTIVE'.active',
    
ACTIVE_CHILD'> .nav-item > .active, > .active',
    
DATA_TOGGLE'[data-toggle="tab"], [data-toggle="pill"]',
    
DROPDOWN_TOGGLE'.dropdown-toggle',
    
DROPDOWN_ACTIVE_CHILD'> .dropdown-menu .active'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Tab = (function () {
    function 
Tab(element) {
      
_classCallCheck(thisTab);

      
this._element element;
    }

    
/**
     * ------------------------------------------------------------------------
     * Data Api implementation
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Tab, [{
      
key'show',

      
// public

      
value: function show() {
        var 
_this15 this;

        if (
this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) {
          return;
        }

        var 
target undefined;
        var 
previous undefined;
        var 
ulElement = $(this._element).closest(Selector.UL)[0];
        var 
selector Util.getSelectorFromElement(this._element);

        if (
ulElement) {
          
previous = $.makeArray($(ulElement).find(Selector.ACTIVE));
          
previous previous[previous.length 1];
        }

        var 
hideEvent = $.Event(Event.HIDE, {
          
relatedTargetthis._element
        
});

        var 
showEvent = $.Event(Event.SHOW, {
          
relatedTargetprevious
        
});

        if (
previous) {
          $(
previous).trigger(hideEvent);
        }

        $(
this._element).trigger(showEvent);

        if (
showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
          return;
        }

        if (
selector) {
          
target = $(selector)[0];
        }

        
this._activate(this._elementulElement);

        var 
complete = function complete() {
          var 
hiddenEvent = $.Event(Event.HIDDEN, {
            
relatedTarget_this15._element
          
});

          var 
shownEvent = $.Event(Event.SHOWN, {
            
relatedTargetprevious
          
});

          $(
previous).trigger(hiddenEvent);
          $(
_this15._element).trigger(shownEvent);
        };

        if (
target) {
          
this._activate(targettarget.parentNodecomplete);
        } else {
          
complete();
        }
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        $.
removeClass(this._elementDATA_KEY);
        
this._element null;
      }

      
// private

    
}, {
      
key'_activate',
      
value: function _activate(elementcontainercallback) {
        var 
active = $(container).find(Selector.ACTIVE_CHILD)[0];
        var 
isTransitioning callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0]));

        var 
complete = $.proxy(this._transitionCompletethiselementactiveisTransitioningcallback);

        if (
active && isTransitioning) {
          $(
active).one(Util.TRANSITION_ENDcomplete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
complete();
        }

        if (
active) {
          $(
active).removeClass(ClassName.IN);
        }
      }
    }, {
      
key'_transitionComplete',
      
value: function _transitionComplete(elementactiveisTransitioningcallback) {
        if (
active) {
          $(
active).removeClass(ClassName.ACTIVE);

          var 
dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];

          if (
dropdownChild) {
            $(
dropdownChild).removeClass(ClassName.ACTIVE);
          }

          
active.setAttribute('aria-expanded'false);
        }

        $(
element).addClass(ClassName.ACTIVE);
        
element.setAttribute('aria-expanded'true);

        if (
isTransitioning) {
          
Util.reflow(element);
          $(
element).addClass(ClassName.IN);
        } else {
          $(
element).removeClass(ClassName.FADE);
        }

        if (
element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {

          var 
dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
          if (
dropdownElement) {
            $(
dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
          }

          
element.setAttribute('aria-expanded'true);
        }

        if (
callback) {
          
callback();
        }
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
$this = $(this);
          var 
data $this.data(DATA_KEY);

          if (!
data) {
            
data data = new Tab(this);
            
$this.data(DATA_KEYdata);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }]);

    return 
Tab;
  })();

  $(
document).on(Event.CLICK_DATA_APISelector.DATA_TOGGLE, function (event) {
    
event.preventDefault();
    
Tab._jQueryInterface.call($(this), 'show');
  });

  
/**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  
$.fn[NAME] = Tab._jQueryInterface;
  $.fn[
NAME].Constructor Tab;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Tab._jQueryInterface;
  };

  return 
Tab;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): tooltip.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Tooltip = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'tooltip';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.tooltip';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];
  var 
TRANSITION_DURATION 150;
  var 
CLASS_PREFIX 'bs-tether';

  var Default = {
    
animationtrue,
    
template'<div class="tooltip" role="tooltip">' '<div class="tooltip-arrow"></div>' '<div class="tooltip-inner"></div></div>',
    
trigger'hover focus',
    
title'',
    
delay0,
    
htmlfalse,
    
selectorfalse,
    
placement'top',
    
offset'0 0',
    
constraints: []
  };

  var 
DefaultType = {
    
animation'boolean',
    
template'string',
    
title'(string|function)',
    
trigger'string',
    
delay'(number|object)',
    
html'boolean',
    
selector'(string|boolean)',
    
placement'(string|function)',
    
offset'string',
    
constraints'array'
  
};

  var 
AttachmentMap = {
    
TOP'bottom center',
    
RIGHT'middle left',
    
BOTTOM'top center',
    
LEFT'middle right'
  
};

  var 
HoverState = {
    
IN'in',
    
OUT'out'
  
};

  var 
Event = {
    
HIDE'hide' EVENT_KEY,
    
HIDDEN'hidden' EVENT_KEY,
    
SHOW'show' EVENT_KEY,
    
SHOWN'shown' EVENT_KEY,
    
INSERTED'inserted' EVENT_KEY,
    
CLICK'click' EVENT_KEY,
    
FOCUSIN'focusin' EVENT_KEY,
    
FOCUSOUT'focusout' EVENT_KEY,
    
MOUSEENTER'mouseenter' EVENT_KEY,
    
MOUSELEAVE'mouseleave' EVENT_KEY
  
};

  var 
ClassName = {
    
FADE'fade',
    
IN'in'
  
};

  var 
Selector = {
    
TOOLTIP'.tooltip',
    
TOOLTIP_INNER'.tooltip-inner'
  
};

  var 
TetherClass = {
    
elementfalse,
    
enabledfalse
  
};

  var 
Trigger = {
    
HOVER'hover',
    
FOCUS'focus',
    
CLICK'click',
    
MANUAL'manual'
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Tooltip = (function () {
    function 
Tooltip(elementconfig) {
      
_classCallCheck(thisTooltip);

      
// private
      
this._isEnabled true;
      
this._timeout 0;
      
this._hoverState '';
      
this._activeTrigger = {};
      
this._tether null;

      
// protected
      
this.element element;
      
this.config this._getConfig(config);
      
this.tip null;

      
this._setListeners();
    }

    
/**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */

    // getters

    
_createClass(Tooltip, [{
      
key'enable',

      
// public

      
value: function enable() {
        
this._isEnabled true;
      }
    }, {
      
key'disable',
      
value: function disable() {
        
this._isEnabled false;
      }
    }, {
      
key'toggleEnabled',
      
value: function toggleEnabled() {
        
this._isEnabled = !this._isEnabled;
      }
    }, {
      
key'toggle',
      
value: function toggle(event) {
        if (
event) {
          var 
dataKey this.constructor.DATA_KEY;
          var 
context = $(event.currentTarget).data(dataKey);

          if (!
context) {
            
context = new this.constructor(event.currentTargetthis._getDelegateConfig());
            $(
event.currentTarget).data(dataKeycontext);
          }

          
context._activeTrigger.click = !context._activeTrigger.click;

          if (
context._isWithActiveTrigger()) {
            
context._enter(nullcontext);
          } else {
            
context._leave(nullcontext);
          }
        } else {

          if ($(
this.getTipElement()).hasClass(ClassName.IN)) {
            
this._leave(nullthis);
            return;
          }

          
this._enter(nullthis);
        }
      }
    }, {
      
key'dispose',
      
value: function dispose() {
        
clearTimeout(this._timeout);

        
this.cleanupTether();

        $.
removeData(this.elementthis.constructor.DATA_KEY);

        $(
this.element).off(this.constructor.EVENT_KEY);

        if (
this.tip) {
          $(
this.tip).remove();
        }

        
this._isEnabled null;
        
this._timeout null;
        
this._hoverState null;
        
this._activeTrigger null;
        
this._tether null;

        
this.element null;
        
this.config null;
        
this.tip null;
      }
    }, {
      
key'show',
      
value: function show() {
        var 
_this16 this;

        var 
showEvent = $.Event(this.constructor.Event.SHOW);

        if (
this.isWithContent() && this._isEnabled) {
          $(
this.element).trigger(showEvent);

          var 
isInTheDom = $.contains(this.element.ownerDocument.documentElementthis.element);

          if (
showEvent.isDefaultPrevented() || !isInTheDom) {
            return;
          }

          var 
tip this.getTipElement();
          var 
tipId Util.getUID(this.constructor.NAME);

          
tip.setAttribute('id'tipId);
          
this.element.setAttribute('aria-describedby'tipId);

          
this.setContent();

          if (
this.config.animation) {
            $(
tip).addClass(ClassName.FADE);
          }

          var 
placement typeof this.config.placement === 'function' this.config.placement.call(thistipthis.element) : this.config.placement;

          var 
attachment this._getAttachment(placement);

          $(
tip).data(this.constructor.DATA_KEYthis).appendTo(document.body);

          $(
this.element).trigger(this.constructor.Event.INSERTED);

          
this._tether = new Tether({
            
attachmentattachment,
            
elementtip,
            
targetthis.element,
            
classesTetherClass,
            
classPrefixCLASS_PREFIX,
            
offsetthis.config.offset,
            
constraintsthis.config.constraints
          
});

          
Util.reflow(tip);
          
this._tether.position();

          $(
tip).addClass(ClassName.IN);

          var 
complete = function complete() {
            var 
prevHoverState _this16._hoverState;
            
_this16._hoverState null;

            $(
_this16.element).trigger(_this16.constructor.Event.SHOWN);

            if (
prevHoverState === HoverState.OUT) {
              
_this16._leave(null_this16);
            }
          };

          if (
Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
            $(
this.tip).one(Util.TRANSITION_ENDcomplete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
            return;
          }

          
complete();
        }
      }
    }, {
      
key'hide',
      
value: function hide(callback) {
        var 
_this17 this;

        var 
tip this.getTipElement();
        var 
hideEvent = $.Event(this.constructor.Event.HIDE);
        var 
complete = function complete() {
          if (
_this17._hoverState !== HoverState.IN && tip.parentNode) {
            
tip.parentNode.removeChild(tip);
          }

          
_this17.element.removeAttribute('aria-describedby');
          $(
_this17.element).trigger(_this17.constructor.Event.HIDDEN);
          
_this17.cleanupTether();

          if (
callback) {
            
callback();
          }
        };

        $(
this.element).trigger(hideEvent);

        if (
hideEvent.isDefaultPrevented()) {
          return;
        }

        $(
tip).removeClass(ClassName.IN);

        if (
Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {

          $(
tip).one(Util.TRANSITION_ENDcomplete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          
complete();
        }

        
this._hoverState '';
      }

      
// protected

    
}, {
      
key'isWithContent',
      
value: function isWithContent() {
        return 
Boolean(this.getTitle());
      }
    }, {
      
key'getTipElement',
      
value: function getTipElement() {
        return 
this.tip this.tip || $(this.config.template)[0];
      }
    }, {
      
key'setContent',
      
value: function setContent() {
        var 
tip this.getTipElement();
        var 
title this.getTitle();
        var 
method this.config.html 'innerHTML' 'innerText';

        $(
tip).find(Selector.TOOLTIP_INNER)[0][method] = title;

        $(
tip).removeClass(ClassName.FADE).removeClass(ClassName.IN);

        
this.cleanupTether();
      }
    }, {
      
key'getTitle',
      
value: function getTitle() {
        var 
title this.element.getAttribute('data-original-title');

        if (!
title) {
          
title typeof this.config.title === 'function' this.config.title.call(this.element) : this.config.title;
        }

        return 
title;
      }
    }, {
      
key'cleanupTether',
      
value: function cleanupTether() {
        if (
this._tether) {
          
this._tether.destroy();

          
// clean up after tether's junk classes
          // remove after they fix issue
          // (https://github.com/HubSpot/tether/issues/36)
          
$(this.element).removeClass(this._removeTetherClasses);
          $(
this.tip).removeClass(this._removeTetherClasses);
        }
      }

      
// private

    
}, {
      
key'_getAttachment',
      
value: function _getAttachment(placement) {
        return 
AttachmentMap[placement.toUpperCase()];
      }
    }, {
      
key'_setListeners',
      
value: function _setListeners() {
        var 
_this18 this;

        var 
triggers this.config.trigger.split(' ');

        
triggers.forEach(function (trigger) {
          if (
trigger === 'click') {
            $(
_this18.element).on(_this18.constructor.Event.CLICK_this18.config.selector, $.proxy(_this18.toggle_this18));
          } else if (
trigger !== Trigger.MANUAL) {
            var 
eventIn trigger === Trigger.HOVER _this18.constructor.Event.MOUSEENTER _this18.constructor.Event.FOCUSIN;
            var 
eventOut trigger === Trigger.HOVER _this18.constructor.Event.MOUSELEAVE _this18.constructor.Event.FOCUSOUT;

            $(
_this18.element).on(eventIn_this18.config.selector, $.proxy(_this18._enter_this18)).on(eventOut_this18.config.selector, $.proxy(_this18._leave_this18));
          }
        });

        if (
this.config.selector) {
          
this.config = $.extend({}, this.config, {
            
trigger'manual',
            
selector''
          
});
        } else {
          
this._fixTitle();
        }
      }
    }, {
      
key'_removeTetherClasses',
      
value: function _removeTetherClasses(icss) {
        return ((
css.baseVal || css).match(new RegExp('(^|\s)' CLASS_PREFIX '-\S+''g')) || []).join(' ');
      }
    }, {
      
key'_fixTitle',
      
value: function _fixTitle() {
        var 
titleType typeof this.element.getAttribute('data-original-title');
        if (
this.element.getAttribute('title') || titleType !== 'string') {
          
this.element.setAttribute('data-original-title'this.element.getAttribute('title') || '');
          
this.element.setAttribute('title''');
        }
      }
    }, {
      
key'_enter',
      
value: function _enter(eventcontext) {
        var 
dataKey this.constructor.DATA_KEY;

        
context context || $(event.currentTarget).data(dataKey);

        if (!
context) {
          
context = new this.constructor(event.currentTargetthis._getDelegateConfig());
          $(
event.currentTarget).data(dataKeycontext);
        }

        if (
event) {
          
context._activeTrigger[event.type === 'focusin' Trigger.FOCUS Trigger.HOVER] = true;
        }

        if ($(
context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) {
          
context._hoverState HoverState.IN;
          return;
        }

        
clearTimeout(context._timeout);

        
context._hoverState HoverState.IN;

        if (!
context.config.delay || !context.config.delay.show) {
          
context.show();
          return;
        }

        
context._timeout setTimeout(function () {
          if (
context._hoverState === HoverState.IN) {
            
context.show();
          }
        }, 
context.config.delay.show);
      }
    }, {
      
key'_leave',
      
value: function _leave(eventcontext) {
        var 
dataKey this.constructor.DATA_KEY;

        
context context || $(event.currentTarget).data(dataKey);

        if (!
context) {
          
context = new this.constructor(event.currentTargetthis._getDelegateConfig());
          $(
event.currentTarget).data(dataKeycontext);
        }

        if (
event) {
          
context._activeTrigger[event.type === 'focusout' Trigger.FOCUS Trigger.HOVER] = false;
        }

        if (
context._isWithActiveTrigger()) {
          return;
        }

        
clearTimeout(context._timeout);

        
context._hoverState HoverState.OUT;

        if (!
context.config.delay || !context.config.delay.hide) {
          
context.hide();
          return;
        }

        
context._timeout setTimeout(function () {
          if (
context._hoverState === HoverState.OUT) {
            
context.hide();
          }
        }, 
context.config.delay.hide);
      }
    }, {
      
key'_isWithActiveTrigger',
      
value: function _isWithActiveTrigger() {
        for (var 
trigger in this._activeTrigger) {
          if (
this._activeTrigger[trigger]) {
            return 
true;
          }
        }

        return 
false;
      }
    }, {
      
key'_getConfig',
      
value: function _getConfig(config) {
        
config = $.extend({}, this.constructor.Default, $(this.element).data(), config);

        if (
config.delay && typeof config.delay === 'number') {
          
config.delay = {
            
showconfig.delay,
            
hideconfig.delay
          
};
        }

        
Util.typeCheckConfig(NAMEconfigthis.constructor.DefaultType);

        return 
config;
      }
    }, {
      
key'_getDelegateConfig',
      
value: function _getDelegateConfig() {
        var 
config = {};

        if (
this.config) {
          for (var 
key in this.config) {
            if (
this.constructor.Default[key] !== this.config[key]) {
              
config[key] = this.config[key];
            }
          }
        }

        return 
config;
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config typeof config === 'object' config null;

          if (!
data && /destroy|hide/.test(config)) {
            return;
          }

          if (!
data) {
            
data = new Tooltip(this_config);
            $(
this).data(DATA_KEYdata);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key'VERSION',
      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key'Default',
      
get: function get() {
        return Default;
      }
    }, {
      
key'NAME',
      
get: function get() {
        return 
NAME;
      }
    }, {
      
key'DATA_KEY',
      
get: function get() {
        return 
DATA_KEY;
      }
    }, {
      
key'Event',
      
get: function get() {
        return 
Event;
      }
    }, {
      
key'EVENT_KEY',
      
get: function get() {
        return 
EVENT_KEY;
      }
    }, {
      
key'DefaultType',
      
get: function get() {
        return 
DefaultType;
      }
    }]);

    return 
Tooltip;
  })();

  $.fn[
NAME] = Tooltip._jQueryInterface;
  $.fn[
NAME].Constructor Tooltip;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Tooltip._jQueryInterface;
  };

  return 
Tooltip;
})(
jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): popover.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Popover = (function ($) {

  
/**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  
var NAME 'popover';
  var 
VERSION '4.0.0';
  var 
DATA_KEY 'bs.popover';
  var 
EVENT_KEY '.' DATA_KEY;
  var 
JQUERY_NO_CONFLICT = $.fn[NAME];

  var Default = $.
extend({}, Tooltip.Default, {
    
placement'right',
    
trigger'click',
    
content'',
    
template'<div class="popover" role="tooltip">' '<div class="popover-arrow"></div>' '<h3 class="popover-title"></h3>' '<div class="popover-content"></div></div>'
  
});

  var 
DefaultType = $.extend({}, Tooltip.DefaultType, {
    
content'(string|function)'
  
});

  var 
ClassName = {
    
FADE'fade',
    
IN'in'
  
};

  var 
Selector = {
    
TITLE'.popover-title',
    
CONTENT'.popover-content',
    
ARROW'.popover-arrow'
  
};

  var 
Event = {
    
HIDE'hide' EVENT_KEY,
    
HIDDEN'hidden' EVENT_KEY,
    
SHOW'show' EVENT_KEY,
    
SHOWN'shown' EVENT_KEY,
    
INSERTED'inserted' EVENT_KEY,
    
CLICK'click' EVENT_KEY,
    
FOCUSIN'focusin' EVENT_KEY,
    
FOCUSOUT'focusout' EVENT_KEY,
    
MOUSEENTER'mouseenter' EVENT_KEY,
    
MOUSELEAVE'mouseleave' EVENT_KEY
  
};

  
/**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  
var Popover = (function (_Tooltip) {
    
_inherits(Popover_Tooltip);

    function 
Popover() {
      
_classCallCheck(thisPopover);

      
_get(Object.getPrototypeOf(Popover.prototype), 'constructor'this).apply(thisarguments);
    }

    
/**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */

    
_createClass(Popover, [{
      
key'isWithContent',

      
// overrides

      
value: function isWithContent() {
        return 
this.getTitle() || this._getContent();
      }
    }, {
      
key'getTipElement',
      
value: function getTipElement() {
        return 
this.tip this.tip || $(this.config.template)[0];
      }
    }, {
      
key'setContent',
      
value: function setContent() {
        var 
tip this.getTipElement();
        var 
title this.getTitle();
        var 
content this._getContent();
        var 
titleElement = $(tip).find(Selector.TITLE)[0];

        if (
titleElement) {
          
titleElement[this.config.html 'innerHTML' 'innerText'] = title;
        }

        
// we use append for html objects to maintain js events
        
$(tip).find(Selector.CONTENT).children().detach().end()[this.config.html typeof content === 'string' 'html' 'append' 'text'](content);

        $(
tip).removeClass(ClassName.FADE).removeClass(ClassName.IN);

        
this.cleanupTether();
      }

      
// private

    
}, {
      
key'_getContent',
      
value: function _getContent() {
        return 
this.element.getAttribute('data-content') || (typeof this.config.content === 'function' this.config.content.call(this.element) : this.config.content);
      }

      
// static

    
}], [{
      
key'_jQueryInterface',
      
value: function _jQueryInterface(config) {
        return 
this.each(function () {
          var 
data = $(this).data(DATA_KEY);
          var 
_config typeof config === 'object' config null;

          if (!
data && /destroy|hide/.test(config)) {
            return;
          }

          if (!
data) {
            
data = new Popover(this_config);
            $(
this).data(DATA_KEYdata);
          }

          if (
typeof config === 'string') {
            
data[config]();
          }
        });
      }
    }, {
      
key'VERSION',

      
// getters

      
get: function get() {
        return 
VERSION;
      }
    }, {
      
key'Default',
      
get: function get() {
        return Default;
      }
    }, {
      
key'NAME',
      
get: function get() {
        return 
NAME;
      }
    }, {
      
key'DATA_KEY',
      
get: function get() {
        return 
DATA_KEY;
      }
    }, {
      
key'Event',
      
get: function get() {
        return 
Event;
      }
    }, {
      
key'EVENT_KEY',
      
get: function get() {
        return 
EVENT_KEY;
      }
    }, {
      
key'DefaultType',
      
get: function get() {
        return 
DefaultType;
      }
    }]);

    return 
Popover;
  })(
Tooltip);

  $.fn[
NAME] = Popover._jQueryInterface;
  $.fn[
NAME].Constructor Popover;
  $.fn[
NAME].noConflict = function () {
    $.fn[
NAME] = JQUERY_NO_CONFLICT;
    return 
Popover._jQueryInterface;
  };

  return 
Popover;
})(
jQuery);

}(
jQuery);
?>
Онлайн: 1
Реклама