{"version":3,"file":"bootstrap.min.js","sources":["bootstrap.js"],"names":["jQuery","Error","$","version","fn","jquery","split","transitionEnd","el","document","createElement","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","name","undefined","style","end","emulateTransitionEnd","duration","called","$el","this","one","callback","trigger","support","setTimeout","event","special","bsTransitionEnd","bindType","delegateType","handle","e","target","is","handleObj","handler","apply","arguments","Plugin","option","each","$this","data","Alert","call","dismiss","on","close","VERSION","TRANSITION_DURATION","prototype","removeElement","$parent","detach","remove","selector","attr","replace","preventDefault","length","closest","Event","isDefaultPrevented","removeClass","hasClass","old","alert","Constructor","noConflict","options","Button","toggle","setState","element","$element","extend","DEFAULTS","isLoading","loadingText","state","d","val","resetText","proxy","addClass","removeAttr","changed","$input","find","prop","toggleClass","button","$btn","test","type","Carousel","action","slide","to","interval","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","documentElement","wrap","tagName","which","prev","next","clearInterval","setInterval","getItemIndex","item","parent","children","index","getItemForDirection","direction","active","activeIndex","willWrap","delta","itemIndex","eq","pos","that","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","join","carousel","clickHandler","href","$target","slideIndex","window","$carousel","getTargetFromTrigger","$trigger","Collapse","id","transitioning","getParent","addAriaAndCollapsedClass","dimension","hasWidth","show","activesData","actives","startEvent","complete","scrollSize","camelCase","hide","offsetHeight","i","isOpen","collapse","clearMenus","backdrop","Dropdown","isActive","insertAfter","stopPropagation","desc","dropdown","_relatedTarget","Modal","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","BACKDROP_TRANSITION_DURATION","checkScrollbar","setScrollbar","escape","resize","appendTo","scrollTop","adjustDialog","enforceFocus","off","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","animate","doAnimate","currentTarget","focus","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","Math","abs","left","clientWidth","measureScrollbar","bodyPad","parseInt","scrollDiv","className","append","removeChild","modal","showEvent","Tooltip","enabled","timeout","hoverState","init","animation","placement","template","title","delay","html","container","viewport","padding","getOptions","$viewport","constructor","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","defaults","key","value","obj","self","$tip","clearTimeout","hasContent","inDom","contains","ownerDocument","tip","tipId","getUID","setContent","autoToken","autoPlace","top","display","getPosition","actualWidth","actualHeight","orgPlacement","$container","containerDim","bottom","width","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","offset","height","marginTop","marginLeft","isNaN","setOffset","using","props","round","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","arrow","getTitle","$e","isBody","elRect","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","random","getElementById","$arrow","enable","disable","toggleEnabled","destroy","removeData","tooltip","Popover","content","getContent","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","max","offsetMethod","offsetBase","isWindow","map","$href","sort","a","b","push","maxScroll","activate","clear","parents","parentsUntil","scrollspy","$spy","Tab","$ul","$previous","hideEvent","tab","Affix","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","offsetTop","offsetBottom","position","targetHeight","initializing","colliderTop","colliderHeight","getPinnedOffset","affix","affixType"],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\nif (typeof jQuery === 'undefined') {\n  throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n  'use strict';\n  var version = $.fn.jquery.split(' ')[0].split('.')\n  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {\n    throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')\n  }\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: transition.js v3.3.4\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // http://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: alert.js v3.3.4\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.3.4'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = $(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: button.js v3.3.4\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // BUTTON PUBLIC CLASS DEFINITION\n  // ==============================\n\n  var Button = function (element, options) {\n    this.$element  = $(element)\n    this.options   = $.extend({}, Button.DEFAULTS, options)\n    this.isLoading = false\n  }\n\n  Button.VERSION  = '3.3.4'\n\n  Button.DEFAULTS = {\n    loadingText: 'loading...'\n  }\n\n  Button.prototype.setState = function (state) {\n    var d    = 'disabled'\n    var $el  = this.$element\n    var val  = $el.is('input') ? 'val' : 'html'\n    var data = $el.data()\n\n    state = state + 'Text'\n\n    if (data.resetText == null) $el.data('resetText', $el[val]())\n\n    // push to event loop to allow forms to submit\n    setTimeout($.proxy(function () {\n      $el[val](data[state] == null ? this.options[state] : data[state])\n\n      if (state == 'loadingText') {\n        this.isLoading = true\n        $el.addClass(d).attr(d, d)\n      } else if (this.isLoading) {\n        this.isLoading = false\n        $el.removeClass(d).removeAttr(d)\n      }\n    }, this), 0)\n  }\n\n  Button.prototype.toggle = function () {\n    var changed = true\n    var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n    if ($parent.length) {\n      var $input = this.$element.find('input')\n      if ($input.prop('type') == 'radio') {\n        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n        else $parent.find('.active').removeClass('active')\n      }\n      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n    } else {\n      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n    }\n\n    if (changed) this.$element.toggleClass('active')\n  }\n\n\n  // BUTTON PLUGIN DEFINITION\n  // ========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.button')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n      if (option == 'toggle') data.toggle()\n      else if (option) data.setState(option)\n    })\n  }\n\n  var old = $.fn.button\n\n  $.fn.button             = Plugin\n  $.fn.button.Constructor = Button\n\n\n  // BUTTON NO CONFLICT\n  // ==================\n\n  $.fn.button.noConflict = function () {\n    $.fn.button = old\n    return this\n  }\n\n\n  // BUTTON DATA-API\n  // ===============\n\n  $(document)\n    .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      var $btn = $(e.target)\n      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n      Plugin.call($btn, 'toggle')\n      e.preventDefault()\n    })\n    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n    })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: carousel.js v3.3.4\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CAROUSEL CLASS DEFINITION\n  // =========================\n\n  var Carousel = function (element, options) {\n    this.$element    = $(element)\n    this.$indicators = this.$element.find('.carousel-indicators')\n    this.options     = options\n    this.paused      = null\n    this.sliding     = null\n    this.interval    = null\n    this.$active     = null\n    this.$items      = null\n\n    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n  }\n\n  Carousel.VERSION  = '3.3.4'\n\n  Carousel.TRANSITION_DURATION = 600\n\n  Carousel.DEFAULTS = {\n    interval: 5000,\n    pause: 'hover',\n    wrap: true,\n    keyboard: true\n  }\n\n  Carousel.prototype.keydown = function (e) {\n    if (/input|textarea/i.test(e.target.tagName)) return\n    switch (e.which) {\n      case 37: this.prev(); break\n      case 39: this.next(); break\n      default: return\n    }\n\n    e.preventDefault()\n  }\n\n  Carousel.prototype.cycle = function (e) {\n    e || (this.paused = false)\n\n    this.interval && clearInterval(this.interval)\n\n    this.options.interval\n      && !this.paused\n      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n    return this\n  }\n\n  Carousel.prototype.getItemIndex = function (item) {\n    this.$items = item.parent().children('.item')\n    return this.$items.index(item || this.$active)\n  }\n\n  Carousel.prototype.getItemForDirection = function (direction, active) {\n    var activeIndex = this.getItemIndex(active)\n    var willWrap = (direction == 'prev' && activeIndex === 0)\n                || (direction == 'next' && activeIndex == (this.$items.length - 1))\n    if (willWrap && !this.options.wrap) return active\n    var delta = direction == 'prev' ? -1 : 1\n    var itemIndex = (activeIndex + delta) % this.$items.length\n    return this.$items.eq(itemIndex)\n  }\n\n  Carousel.prototype.to = function (pos) {\n    var that        = this\n    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n    if (pos > (this.$items.length - 1) || pos < 0) return\n\n    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n    if (activeIndex == pos) return this.pause().cycle()\n\n    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n  }\n\n  Carousel.prototype.pause = function (e) {\n    e || (this.paused = true)\n\n    if (this.$element.find('.next, .prev').length && $.support.transition) {\n      this.$element.trigger($.support.transition.end)\n      this.cycle(true)\n    }\n\n    this.interval = clearInterval(this.interval)\n\n    return this\n  }\n\n  Carousel.prototype.next = function () {\n    if (this.sliding) return\n    return this.slide('next')\n  }\n\n  Carousel.prototype.prev = function () {\n    if (this.sliding) return\n    return this.slide('prev')\n  }\n\n  Carousel.prototype.slide = function (type, next) {\n    var $active   = this.$element.find('.item.active')\n    var $next     = next || this.getItemForDirection(type, $active)\n    var isCycling = this.interval\n    var direction = type == 'next' ? 'left' : 'right'\n    var that      = this\n\n    if ($next.hasClass('active')) return (this.sliding = false)\n\n    var relatedTarget = $next[0]\n    var slideEvent = $.Event('slide.bs.carousel', {\n      relatedTarget: relatedTarget,\n      direction: direction\n    })\n    this.$element.trigger(slideEvent)\n    if (slideEvent.isDefaultPrevented()) return\n\n    this.sliding = true\n\n    isCycling && this.pause()\n\n    if (this.$indicators.length) {\n      this.$indicators.find('.active').removeClass('active')\n      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n      $nextIndicator && $nextIndicator.addClass('active')\n    }\n\n    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n    if ($.support.transition && this.$element.hasClass('slide')) {\n      $next.addClass(type)\n      $next[0].offsetWidth // force reflow\n      $active.addClass(direction)\n      $next.addClass(direction)\n      $active\n        .one('bsTransitionEnd', function () {\n          $next.removeClass([type, direction].join(' ')).addClass('active')\n          $active.removeClass(['active', direction].join(' '))\n          that.sliding = false\n          setTimeout(function () {\n            that.$element.trigger(slidEvent)\n          }, 0)\n        })\n        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n    } else {\n      $active.removeClass('active')\n      $next.addClass('active')\n      this.sliding = false\n      this.$element.trigger(slidEvent)\n    }\n\n    isCycling && this.cycle()\n\n    return this\n  }\n\n\n  // CAROUSEL PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.carousel')\n      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n      var action  = typeof option == 'string' ? option : options.slide\n\n      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n      if (typeof option == 'number') data.to(option)\n      else if (action) data[action]()\n      else if (options.interval) data.pause().cycle()\n    })\n  }\n\n  var old = $.fn.carousel\n\n  $.fn.carousel             = Plugin\n  $.fn.carousel.Constructor = Carousel\n\n\n  // CAROUSEL NO CONFLICT\n  // ====================\n\n  $.fn.carousel.noConflict = function () {\n    $.fn.carousel = old\n    return this\n  }\n\n\n  // CAROUSEL DATA-API\n  // =================\n\n  var clickHandler = function (e) {\n    var href\n    var $this   = $(this)\n    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n    if (!$target.hasClass('carousel')) return\n    var options = $.extend({}, $target.data(), $this.data())\n    var slideIndex = $this.attr('data-slide-to')\n    if (slideIndex) options.interval = false\n\n    Plugin.call($target, options)\n\n    if (slideIndex) {\n      $target.data('bs.carousel').to(slideIndex)\n    }\n\n    e.preventDefault()\n  }\n\n  $(document)\n    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n  $(window).on('load', function () {\n    $('[data-ride=\"carousel\"]').each(function () {\n      var $carousel = $(this)\n      Plugin.call($carousel, $carousel.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: collapse.js v3.3.4\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.3.4'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: dropdown.js v3.3.4\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.3.4'\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $('<div class=\"dropdown-backdrop\"/>').insertAfter($(this)).on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger('shown.bs.dropdown', relatedTarget)\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--                        // up\n    if (e.which == 40 && index < $items.length - 1) index++                        // down\n    if (!~index)                                      index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n    })\n  }\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector && $(selector)\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: modal.js v3.3.4\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options             = options\n    this.$body               = $(document.body)\n    this.$element            = $(element)\n    this.$dialog             = this.$element.find('.modal-dialog')\n    this.$backdrop           = null\n    this.isShown             = null\n    this.originalBodyPad     = null\n    this.scrollbarWidth      = 0\n    this.ignoreBackdropClick = false\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION  = '3.3.4'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element\n        .addClass('in')\n        .attr('aria-hidden', false)\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .attr('aria-hidden', true)\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $('<div class=\"modal-backdrop ' + animate + '\" />')\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal             = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this   = $(this)\n    var href    = $this.attr('href')\n    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tooltip.js v3.3.4\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.3.4'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    }\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (self && self.$tip && self.$tip.is(':visible')) {\n      self.hoverState = 'in'\n      return\n    }\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var $container   = this.options.container ? $(this.options.container) : this.$element.parent()\n        var containerDim = this.getPosition($container)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  = offset.top  + marginTop\n    offset.left = offset.left + marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      that.$element\n        .removeAttr('aria-describedby')\n        .trigger('hidden.bs.' + that.type)\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    return (this.$tip = this.$tip || $(this.options.template))\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n    })\n  }\n\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: popover.js v3.3.4\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.3.4'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n    ](content)\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n            o.content.call($e[0]) :\n            o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.4\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // SCROLLSPY CLASS DEFINITION\n  // ==========================\n\n  function ScrollSpy(element, options) {\n    this.$body          = $(document.body)\n    this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)\n    this.selector       = (this.options.target || '') + ' .nav li > a'\n    this.offsets        = []\n    this.targets        = []\n    this.activeTarget   = null\n    this.scrollHeight   = 0\n\n    this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n    this.refresh()\n    this.process()\n  }\n\n  ScrollSpy.VERSION  = '3.3.4'\n\n  ScrollSpy.DEFAULTS = {\n    offset: 10\n  }\n\n  ScrollSpy.prototype.getScrollHeight = function () {\n    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n  }\n\n  ScrollSpy.prototype.refresh = function () {\n    var that          = this\n    var offsetMethod  = 'offset'\n    var offsetBase    = 0\n\n    this.offsets      = []\n    this.targets      = []\n    this.scrollHeight = this.getScrollHeight()\n\n    if (!$.isWindow(this.$scrollElement[0])) {\n      offsetMethod = 'position'\n      offsetBase   = this.$scrollElement.scrollTop()\n    }\n\n    this.$body\n      .find(this.selector)\n      .map(function () {\n        var $el   = $(this)\n        var href  = $el.data('target') || $el.attr('href')\n        var $href = /^#./.test(href) && $(href)\n\n        return ($href\n          && $href.length\n          && $href.is(':visible')\n          && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n      })\n      .sort(function (a, b) { return a[0] - b[0] })\n      .each(function () {\n        that.offsets.push(this[0])\n        that.targets.push(this[1])\n      })\n  }\n\n  ScrollSpy.prototype.process = function () {\n    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset\n    var scrollHeight = this.getScrollHeight()\n    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()\n    var offsets      = this.offsets\n    var targets      = this.targets\n    var activeTarget = this.activeTarget\n    var i\n\n    if (this.scrollHeight != scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n    }\n\n    if (activeTarget && scrollTop < offsets[0]) {\n      this.activeTarget = null\n      return this.clear()\n    }\n\n    for (i = offsets.length; i--;) {\n      activeTarget != targets[i]\n        && scrollTop >= offsets[i]\n        && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n        && this.activate(targets[i])\n    }\n  }\n\n  ScrollSpy.prototype.activate = function (target) {\n    this.activeTarget = target\n\n    this.clear()\n\n    var selector = this.selector +\n      '[data-target=\"' + target + '\"],' +\n      this.selector + '[href=\"' + target + '\"]'\n\n    var active = $(selector)\n      .parents('li')\n      .addClass('active')\n\n    if (active.parent('.dropdown-menu').length) {\n      active = active\n        .closest('li.dropdown')\n        .addClass('active')\n    }\n\n    active.trigger('activate.bs.scrollspy')\n  }\n\n  ScrollSpy.prototype.clear = function () {\n    $(this.selector)\n      .parentsUntil(this.options.target, '.active')\n      .removeClass('active')\n  }\n\n\n  // SCROLLSPY PLUGIN DEFINITION\n  // ===========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.scrollspy')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.scrollspy\n\n  $.fn.scrollspy             = Plugin\n  $.fn.scrollspy.Constructor = ScrollSpy\n\n\n  // SCROLLSPY NO CONFLICT\n  // =====================\n\n  $.fn.scrollspy.noConflict = function () {\n    $.fn.scrollspy = old\n    return this\n  }\n\n\n  // SCROLLSPY DATA-API\n  // ==================\n\n  $(window).on('load.bs.scrollspy.data-api', function () {\n    $('[data-spy=\"scroll\"]').each(function () {\n      var $spy = $(this)\n      Plugin.call($spy, $spy.data())\n    })\n  })\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: tab.js v3.3.4\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    this.element = $(element)\n  }\n\n  Tab.VERSION = '3.3.4'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n          .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n            .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n            .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* ========================================================================\n * Bootstrap: affix.js v3.3.4\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // AFFIX CLASS DEFINITION\n  // ======================\n\n  var Affix = function (element, options) {\n    this.options = $.extend({}, Affix.DEFAULTS, options)\n\n    this.$target = $(this.options.target)\n      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))\n\n    this.$element     = $(element)\n    this.affixed      = null\n    this.unpin        = null\n    this.pinnedOffset = null\n\n    this.checkPosition()\n  }\n\n  Affix.VERSION  = '3.3.4'\n\n  Affix.RESET    = 'affix affix-top affix-bottom'\n\n  Affix.DEFAULTS = {\n    offset: 0,\n    target: window\n  }\n\n  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n    var scrollTop    = this.$target.scrollTop()\n    var position     = this.$element.offset()\n    var targetHeight = this.$target.height()\n\n    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n    if (this.affixed == 'bottom') {\n      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n    }\n\n    var initializing   = this.affixed == null\n    var colliderTop    = initializing ? scrollTop : position.top\n    var colliderHeight = initializing ? targetHeight : height\n\n    if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n    return false\n  }\n\n  Affix.prototype.getPinnedOffset = function () {\n    if (this.pinnedOffset) return this.pinnedOffset\n    this.$element.removeClass(Affix.RESET).addClass('affix')\n    var scrollTop = this.$target.scrollTop()\n    var position  = this.$element.offset()\n    return (this.pinnedOffset = position.top - scrollTop)\n  }\n\n  Affix.prototype.checkPositionWithEventLoop = function () {\n    setTimeout($.proxy(this.checkPosition, this), 1)\n  }\n\n  Affix.prototype.checkPosition = function () {\n    if (!this.$element.is(':visible')) return\n\n    var height       = this.$element.height()\n    var offset       = this.options.offset\n    var offsetTop    = offset.top\n    var offsetBottom = offset.bottom\n    var scrollHeight = $(document.body).height()\n\n    if (typeof offset != 'object')         offsetBottom = offsetTop = offset\n    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)\n    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n    if (this.affixed != affix) {\n      if (this.unpin != null) this.$element.css('top', '')\n\n      var affixType = 'affix' + (affix ? '-' + affix : '')\n      var e         = $.Event(affixType + '.bs.affix')\n\n      this.$element.trigger(e)\n\n      if (e.isDefaultPrevented()) return\n\n      this.affixed = affix\n      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n      this.$element\n        .removeClass(Affix.RESET)\n        .addClass(affixType)\n        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n    }\n\n    if (affix == 'bottom') {\n      this.$element.offset({\n        top: scrollHeight - height - offsetBottom\n      })\n    }\n  }\n\n\n  // AFFIX PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.affix')\n      var options = typeof option == 'object' && option\n\n      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.affix\n\n  $.fn.affix             = Plugin\n  $.fn.affix.Constructor = Affix\n\n\n  // AFFIX NO CONFLICT\n  // =================\n\n  $.fn.affix.noConflict = function () {\n    $.fn.affix = old\n    return this\n  }\n\n\n  // AFFIX DATA-API\n  // ==============\n\n  $(window).on('load', function () {\n    $('[data-spy=\"affix\"]').each(function () {\n      var $spy = $(this)\n      var data = $spy.data()\n\n      data.offset = data.offset || {}\n\n      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n      if (data.offsetTop    != null) data.offset.top    = data.offsetTop\n\n      Plugin.call($spy, data)\n    })\n  })\n\n}(jQuery);\n"]}