From 5a38a5775f8a3c58c09df0a0f3afc058c820c238 Mon Sep 17 00:00:00 2001 From: Arnold Daniels Date: Tue, 22 Oct 2013 13:31:23 +0200 Subject: Scrollspy acting up when targets are hidden If elements are hidden using `display: none;` which are targets mapped by scrollspy, the plugin might select an incorrect or no menu item. Checking if the target is visible solved this. --- js/scrollspy.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/scrollspy.js b/js/scrollspy.js index 10f95f249..08319dd18 100644 --- a/js/scrollspy.js +++ b/js/scrollspy.js @@ -62,6 +62,7 @@ return ($href && $href.length + && $href.is(':visible') && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null }) .sort(function (a, b) { return a[0] - b[0] }) -- cgit v1.2.3 From ed5dbf1b2b8187b6939ab10d75573118d346f970 Mon Sep 17 00:00:00 2001 From: Chris Ziogas Date: Mon, 4 Nov 2013 19:09:48 +0200 Subject: Update affix properly on scrollspy speedy scroll to top of page #11310 Fix scrollspy.js so as affix is updated properly when user scrolls fast to top of page. A fix for issue #11310. --- dist/js/bootstrap.js | 4 ++++ dist/js/bootstrap.min.js | 2 +- js/scrollspy.js | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dist/js/bootstrap.js b/dist/js/bootstrap.js index 3b05bb9f7..23ebf4c7d 100644 --- a/dist/js/bootstrap.js +++ b/dist/js/bootstrap.js @@ -1665,6 +1665,10 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" return activeTarget != (i = targets.last()[0]) && this.activate(i) } + if (activeTarget && scrollTop <= offsets[0]) { + return activeTarget != (i = targets.first()[0]) && this.activate(i) + } + for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] diff --git a/dist/js/bootstrap.min.js b/dist/js/bootstrap.min.js index e64572519..289b30254 100644 --- a/dist/js/bootstrap.min.js +++ b/dist/js/bootstrap.min.js @@ -6,4 +6,4 @@ * Designed and built with all the love in the world by @mdo and @fat. */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery); \ No newline at end of file +if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f.first()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery); \ No newline at end of file diff --git a/js/scrollspy.js b/js/scrollspy.js index 19ed6fcd5..cc52e153a 100644 --- a/js/scrollspy.js +++ b/js/scrollspy.js @@ -84,6 +84,10 @@ return activeTarget != (i = targets.last()[0]) && this.activate(i) } + if (activeTarget && scrollTop <= offsets[0]) { + return activeTarget != (i = targets.first()[0]) && this.activate(i) + } + for (i = offsets.length; i--;) { activeTarget != targets[i] && scrollTop >= offsets[i] -- cgit v1.2.3 From bbe551044c00bf89fdc9bdfac809fead62767bdb Mon Sep 17 00:00:00 2001 From: Scott Plumlee Date: Tue, 10 Dec 2013 11:17:43 -0500 Subject: Allow listbox AIRA role on dropdown component. --- js/dropdown.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/dropdown.js b/js/dropdown.js index 3f71c7569..0a210ef35 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -77,7 +77,8 @@ return $this.click() } - var $items = $('[role=menu] li:not(.divider):visible a', $parent) + var desc = ' li:not(.divider):visible a' + var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc) if (!$items.length) return @@ -149,6 +150,6 @@ .on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]' , Dropdown.prototype.keydown) }(jQuery); -- cgit v1.2.3 From 120dce43e830c56225fbccb1e8a20091452b2b5a Mon Sep 17 00:00:00 2001 From: tomByrer Date: Sat, 28 Dec 2013 12:01:32 -0700 Subject: fixed .clearfix example, + doc link --- examples/grid/index.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/grid/index.html b/examples/grid/index.html index be1e39c1f..e05ba9ff5 100644 --- a/examples/grid/index.html +++ b/examples/grid/index.html @@ -112,9 +112,13 @@

Column clearing

-

Clear floats at specific breakpoints to prevent awkward wrapping with uneven content.

+

Clear floats at specific breakpoints to prevent awkward wrapping with uneven content.

-
.col-xs-6 .col-sm-3
+
+ .col-xs-6 .col-sm-3 +
+ Resize your viewport or check it out on your phone for an example. +
.col-xs-6 .col-sm-3
-- cgit v1.2.3 From 0016b508cb0b07e943e96dd227e76d8eabb7ce2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zlatan=20Vasovi=C4=87?= Date: Sat, 28 Dec 2013 23:33:32 +0100 Subject: Merge two fs variable declarations into one One is enough. --- Gruntfile.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 6107ecafd..46d5184b0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -9,7 +9,10 @@ module.exports = function (grunt) { RegExp.quote = function (string) { return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&') } + + var fs = require('fs') var btoa = require('btoa') + // Project configuration. grunt.initConfig({ @@ -320,8 +323,6 @@ module.exports = function (grunt) { grunt.registerTask('change-version-number', ['sed']); grunt.registerTask('build-glyphicons-data', function () { - var fs = require('fs') - // Pass encoding, utf8, so `readFileSync` will return a string instead of a // buffer var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8') @@ -347,8 +348,6 @@ module.exports = function (grunt) { // task for building customizer grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', function () { - var fs = require('fs') - function getFiles(type) { var files = {} fs.readdirSync(type) -- cgit v1.2.3 From 6405442e66194329cafb3dad9936131fc8fe6677 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Sat, 28 Dec 2013 18:47:32 -0800 Subject: drop the title --- examples/grid/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/grid/index.html b/examples/grid/index.html index 48baf6acd..30093254e 100644 --- a/examples/grid/index.html +++ b/examples/grid/index.html @@ -112,7 +112,7 @@

Column clearing

-

Clear floats at specific breakpoints to prevent awkward wrapping with uneven content.

+

Clear floats at specific breakpoints to prevent awkward wrapping with uneven content.

.col-xs-6 .col-sm-3 -- cgit v1.2.3 From 5bf13914e49942409c0b21aeaf2ed756c41bd498 Mon Sep 17 00:00:00 2001 From: fat Date: Sat, 28 Dec 2013 20:59:45 -0800 Subject: fixes #10658 jQuery Popover content loses bound events on second setContent call. --- dist/js/bootstrap.js | 4 +++- dist/js/bootstrap.min.js | 2 +- docs-assets/js/raw-files.js | 2 +- js/popover.js | 4 +++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/dist/js/bootstrap.js b/dist/js/bootstrap.js index e1a7a7d0d..a62bc17bc 100644 --- a/dist/js/bootstrap.js +++ b/dist/js/bootstrap.js @@ -1448,7 +1448,9 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" var content = this.getContent() $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content) + $tip.find('.popover-content')[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) $tip.removeClass('fade top bottom left right in') diff --git a/dist/js/bootstrap.min.js b/dist/js/bootstrap.min.js index 85ad5e6e8..91a7da1ac 100644 --- a/dist/js/bootstrap.min.js +++ b/dist/js/bootstrap.min.js @@ -4,4 +4,4 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(!e.hasClass("active")){var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(this.$element.trigger(j),!j.isDefaultPrevented())return this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); \ No newline at end of file +if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(!e.hasClass("active")){var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(this.$element.trigger(j),!j.isDefaultPrevented())return this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); \ No newline at end of file diff --git a/docs-assets/js/raw-files.js b/docs-assets/js/raw-files.js index 6fd238e60..70238b0ba 100644 --- a/docs-assets/js/raw-files.js +++ b/docs-assets/js/raw-files.js @@ -1,3 +1,3 @@ -var __js = {"affix.js":"/* ========================================================================\n * Bootstrap: affix.js v3.0.3\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n this.$window = $(window)\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 =\n this.unpin =\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0\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.$window.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 scrollHeight = $(document).height()\n var scrollTop = this.$window.scrollTop()\n var position = this.$element.offset()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n\n if (this.affixed == 'top') position.top += scrollTop\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.unpin != null && (scrollTop + this.unpin <= position.top) ? false :\n offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :\n offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false\n\n if (this.affixed === affix) return\n if (this.unpin) 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($.Event(affixType.replace('affix', 'affixed')))\n\n if (affix == 'bottom') {\n this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.affix\n\n $.fn.affix = function (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 $.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) data.offset.bottom = data.offsetBottom\n if (data.offsetTop) data.offset.top = data.offsetTop\n\n $spy.affix(data)\n })\n })\n\n}(jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.0.3\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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.hasClass('alert') ? $this : $this.parent()\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 $parent.trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one($.support.transition.end, removeElement)\n .emulateTransitionEnd(150) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.alert\n\n $.fn.alert = function (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 $.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","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.0.3\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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) $el.data('resetText', $el[val]())\n\n $el[val](data[state] || this.options[state])\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\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 }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n var old = $.fn.button\n\n $.fn.button = function (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 $.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).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 $btn.button('toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n","carousel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.0.3\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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 =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.pause == 'hover' && this.$element\n .on('mouseenter', $.proxy(this.pause, this))\n .on('mouseleave', $.proxy(this.cycle, this))\n }\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true\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.getActiveIndex = function () {\n this.$active = this.$element.find('.item.active')\n this.$items = this.$active.parent().children()\n\n return this.$items.index(this.$active)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getActiveIndex()\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) })\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[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.end) {\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 || $active[type]()\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n if ($next.hasClass('active')) return\n\n var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n this.$element.trigger(e)\n if (e.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 this.$element.one('slid.bs.carousel', function () {\n var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n $nextIndicator && $nextIndicator.addClass('active')\n })\n }\n\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($.support.transition.end, function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)\n })\n .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger('slid.bs.carousel')\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.carousel\n\n $.fn.carousel = function (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 $.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 $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n var $this = $(this), href\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n $target.carousel(options)\n\n if (slideIndex = $this.attr('data-slide-to')) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n })\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n $carousel.carousel($carousel.data())\n })\n })\n\n}(jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.0.3\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.transitioning = null\n\n if (this.options.parent) this.$parent = $(this.options.parent)\n if (this.options.toggle) this.toggle()\n }\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 startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n if (actives && actives.length) {\n var hasData = actives.data('bs.collapse')\n if (hasData && hasData.transitioning) return\n actives.collapse('hide')\n hasData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')\n [dimension](0)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')\n [dimension]('auto')\n this.transitioning = 0\n this.$element.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($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n [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\n [dimension](this.$element[dimension]())\n [0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse')\n .removeClass('in')\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .trigger('hidden.bs.collapse')\n .removeClass('collapsing')\n .addClass('collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.collapse\n\n $.fn.collapse = function (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) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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), href\n var target = $this.attr('data-target')\n || e.preventDefault()\n || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n var $target = $(target)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n var parent = $this.attr('data-parent')\n var $parent = parent && $(parent)\n\n if (!data || !data.transitioning) {\n if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n }\n\n $target.collapse(option)\n })\n\n}(jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.0.3\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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 $('
').insertAfter($(this)).on('click', clearMenus)\n }\n\n $parent.trigger(e = $.Event('show.bs.dropdown'))\n\n if (e.isDefaultPrevented()) return\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown')\n\n $this.focus()\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27)/.test(e.keyCode)) 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 || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).focus()\n return $this.click()\n }\n\n var $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n if (!$items.length) return\n\n var index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).focus()\n }\n\n function clearMenus() {\n $(backdrop).remove()\n $(toggle).each(function (e) {\n var $parent = getParent($(this))\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown'))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown')\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 var old = $.fn.dropdown\n\n $.fn.dropdown = function (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 $.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 + ', [role=menu]', Dropdown.prototype.keydown)\n\n}(jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.js v3.0.3\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n\n if (this.options.remote) this.$element.find('.modal-content').load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this[!this.isShown ? 'show' : 'hide'](_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.escape()\n\n this.$element.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\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(document.body) // don't move modals dom position\n }\n\n that.$element.show()\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.$element.find('.modal-dialog') // wait for modal to slide in\n .one($.support.transition.end, function () {\n that.$element.focus().trigger(e)\n })\n .emulateTransitionEnd(300) :\n that.$element.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\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one($.support.transition.end, $.proxy(this.hideModal, this))\n .emulateTransitionEnd(300) :\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.focus()\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keyup.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.removeBackdrop()\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 animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
')\n .appendTo(document.body)\n\n this.$element.on('click.dismiss.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\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($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (callback) {\n callback()\n }\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.modal\n\n $.fn.modal = function (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 $.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\n .modal(option, this)\n .one('hide', function () {\n $this.is(':visible') && $this.focus()\n })\n })\n\n $(document)\n .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.0.3\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\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')[this.options.html ? 'html' : 'text'](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 Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.popover\n\n $.fn.popover = function (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 && option == 'destroy') return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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","scrollspy.js":"/* ========================================================================\n * Bootstrap: scrollspy.js v3.0.3\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var href\n var process = $.proxy(this.process, this)\n\n this.$element = $(element).is('body') ? $(window) : $(element)\n this.$body = $('body')\n this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target\n || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n || '') + ' .nav li > a'\n this.offsets = $([])\n this.targets = $([])\n this.activeTarget = null\n\n this.refresh()\n this.process()\n }\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n this.offsets = $([])\n this.targets = $([])\n\n var self = this\n var $targets = 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[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.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.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n var maxScroll = 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 (scrollTop >= maxScroll) {\n return activeTarget != (i = targets.last()[0]) && this.activate(i)\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || 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.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\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\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = function (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 $.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', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n $spy.scrollspy($spy.data())\n })\n })\n\n}(jQuery);\n","tab.js":"/* ========================================================================\n * Bootstrap: tab.js v3.0.3\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\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')[0]\n var e = $.Event('show.bs.tab', {\n relatedTarget: previous\n })\n\n $this.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.parent('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: previous\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.hasClass('fade')\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n\n element.addClass('active')\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')) {\n element.closest('li.dropdown').addClass('active')\n }\n\n callback && callback()\n }\n\n transition ?\n $active\n .one($.support.transition.end, next)\n .emulateTransitionEnd(150) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n var old = $.fn.tab\n\n $.fn.tab = function ( 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 $.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 $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n e.preventDefault()\n $(this).tab('show')\n })\n\n}(jQuery);\n","tooltip.js":"/* ========================================================================\n * Bootstrap: tooltip.js v3.0.3\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false\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\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)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\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)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\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 if (e.isDefaultPrevented()) return\n var that = this;\n\n var $tip = this.tip()\n\n this.setContent()\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\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 $parent = this.$element.parent()\n\n var orgPlacement = placement\n var docScroll = document.documentElement.scrollTop || document.body.scrollTop\n var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()\n var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left\n\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :\n placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :\n placement == 'left' && pos.left - actualWidth < parentLeft ? '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 this.hoverState = null\n\n var complete = function() {\n that.$element.trigger('shown.bs.' + that.type)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var replace\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 jQuery.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 replace = true\n offset.top = offset.top + height - actualHeight\n }\n\n if (/bottom|top/.test(placement)) {\n var delta = 0\n\n if (offset.left < 0) {\n delta = offset.left * -2\n offset.left = 0\n\n $tip.offset(offset)\n\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n }\n\n this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n } else {\n this.replaceArrow(actualHeight - height, actualHeight, 'top')\n }\n\n if (replace) $tip.offset(offset)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\n this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\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 () {\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.trigger('hidden.bs.' + that.type)\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\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 () {\n var el = this.$element[0]\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n width: el.offsetWidth,\n height: el.offsetHeight\n }, this.$element.offset())\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 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.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.validate = function () {\n if (!this.$element[0].parentNode) {\n this.hide()\n this.$element = null\n this.options = null\n }\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 = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n clearTimeout(this.timeout)\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = function (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 && option == 'destroy') return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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","transition.js":"/* ========================================================================\n * Bootstrap: transition.js v3.0.3\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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, $el = this\n $(this).one($.support.transition.end, 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\n}(jQuery);\n"} +var __js = {"affix.js":"/* ========================================================================\n * Bootstrap: affix.js v3.0.3\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n this.$window = $(window)\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 =\n this.unpin =\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0\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.$window.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 scrollHeight = $(document).height()\n var scrollTop = this.$window.scrollTop()\n var position = this.$element.offset()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n\n if (this.affixed == 'top') position.top += scrollTop\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.unpin != null && (scrollTop + this.unpin <= position.top) ? false :\n offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :\n offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false\n\n if (this.affixed === affix) return\n if (this.unpin) 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($.Event(affixType.replace('affix', 'affixed')))\n\n if (affix == 'bottom') {\n this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.affix\n\n $.fn.affix = function (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 $.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) data.offset.bottom = data.offsetBottom\n if (data.offsetTop) data.offset.top = data.offsetTop\n\n $spy.affix(data)\n })\n })\n\n}(jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.0.3\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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.hasClass('alert') ? $this : $this.parent()\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 $parent.trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one($.support.transition.end, removeElement)\n .emulateTransitionEnd(150) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.alert\n\n $.fn.alert = function (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 $.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","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.0.3\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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) $el.data('resetText', $el[val]())\n\n $el[val](data[state] || this.options[state])\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\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 }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n var old = $.fn.button\n\n $.fn.button = function (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 $.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).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 $btn.button('toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n","carousel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.0.3\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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 =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.pause == 'hover' && this.$element\n .on('mouseenter', $.proxy(this.pause, this))\n .on('mouseleave', $.proxy(this.cycle, this))\n }\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true\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.getActiveIndex = function () {\n this.$active = this.$element.find('.item.active')\n this.$items = this.$active.parent().children()\n\n return this.$items.index(this.$active)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getActiveIndex()\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) })\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[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.end) {\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 || $active[type]()\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n if ($next.hasClass('active')) return\n\n var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n this.$element.trigger(e)\n if (e.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 this.$element.one('slid.bs.carousel', function () {\n var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n $nextIndicator && $nextIndicator.addClass('active')\n })\n }\n\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($.support.transition.end, function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)\n })\n .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger('slid.bs.carousel')\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.carousel\n\n $.fn.carousel = function (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 $.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 $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n var $this = $(this), href\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n $target.carousel(options)\n\n if (slideIndex = $this.attr('data-slide-to')) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n })\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n $carousel.carousel($carousel.data())\n })\n })\n\n}(jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.0.3\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.transitioning = null\n\n if (this.options.parent) this.$parent = $(this.options.parent)\n if (this.options.toggle) this.toggle()\n }\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 startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n if (actives && actives.length) {\n var hasData = actives.data('bs.collapse')\n if (hasData && hasData.transitioning) return\n actives.collapse('hide')\n hasData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')\n [dimension](0)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')\n [dimension]('auto')\n this.transitioning = 0\n this.$element.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($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n [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\n [dimension](this.$element[dimension]())\n [0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse')\n .removeClass('in')\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .trigger('hidden.bs.collapse')\n .removeClass('collapsing')\n .addClass('collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.collapse\n\n $.fn.collapse = function (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) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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), href\n var target = $this.attr('data-target')\n || e.preventDefault()\n || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n var $target = $(target)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n var parent = $this.attr('data-parent')\n var $parent = parent && $(parent)\n\n if (!data || !data.transitioning) {\n if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n }\n\n $target.collapse(option)\n })\n\n}(jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.0.3\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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 $('
').insertAfter($(this)).on('click', clearMenus)\n }\n\n $parent.trigger(e = $.Event('show.bs.dropdown'))\n\n if (e.isDefaultPrevented()) return\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown')\n\n $this.focus()\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27)/.test(e.keyCode)) 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 || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).focus()\n return $this.click()\n }\n\n var $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n if (!$items.length) return\n\n var index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).focus()\n }\n\n function clearMenus() {\n $(backdrop).remove()\n $(toggle).each(function (e) {\n var $parent = getParent($(this))\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown'))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown')\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 var old = $.fn.dropdown\n\n $.fn.dropdown = function (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 $.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 + ', [role=menu]', Dropdown.prototype.keydown)\n\n}(jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.js v3.0.3\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n\n if (this.options.remote) this.$element.find('.modal-content').load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this[!this.isShown ? 'show' : 'hide'](_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.escape()\n\n this.$element.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\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(document.body) // don't move modals dom position\n }\n\n that.$element.show()\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.$element.find('.modal-dialog') // wait for modal to slide in\n .one($.support.transition.end, function () {\n that.$element.focus().trigger(e)\n })\n .emulateTransitionEnd(300) :\n that.$element.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\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one($.support.transition.end, $.proxy(this.hideModal, this))\n .emulateTransitionEnd(300) :\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.focus()\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keyup.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.removeBackdrop()\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 animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
')\n .appendTo(document.body)\n\n this.$element.on('click.dismiss.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\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($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (callback) {\n callback()\n }\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.modal\n\n $.fn.modal = function (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 $.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\n .modal(option, this)\n .one('hide', function () {\n $this.is(':visible') && $this.focus()\n })\n })\n\n $(document)\n .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.0.3\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

'\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')[ // 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 Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.popover\n\n $.fn.popover = function (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 && option == 'destroy') return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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","scrollspy.js":"/* ========================================================================\n * Bootstrap: scrollspy.js v3.0.3\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var href\n var process = $.proxy(this.process, this)\n\n this.$element = $(element).is('body') ? $(window) : $(element)\n this.$body = $('body')\n this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target\n || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n || '') + ' .nav li > a'\n this.offsets = $([])\n this.targets = $([])\n this.activeTarget = null\n\n this.refresh()\n this.process()\n }\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n this.offsets = $([])\n this.targets = $([])\n\n var self = this\n var $targets = 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[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.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.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n var maxScroll = 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 (scrollTop >= maxScroll) {\n return activeTarget != (i = targets.last()[0]) && this.activate(i)\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || 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.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\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\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = function (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 $.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', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n $spy.scrollspy($spy.data())\n })\n })\n\n}(jQuery);\n","tab.js":"/* ========================================================================\n * Bootstrap: tab.js v3.0.3\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\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')[0]\n var e = $.Event('show.bs.tab', {\n relatedTarget: previous\n })\n\n $this.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.parent('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: previous\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.hasClass('fade')\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n\n element.addClass('active')\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')) {\n element.closest('li.dropdown').addClass('active')\n }\n\n callback && callback()\n }\n\n transition ?\n $active\n .one($.support.transition.end, next)\n .emulateTransitionEnd(150) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n var old = $.fn.tab\n\n $.fn.tab = function ( 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 $.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 $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n e.preventDefault()\n $(this).tab('show')\n })\n\n}(jQuery);\n","tooltip.js":"/* ========================================================================\n * Bootstrap: tooltip.js v3.0.3\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false\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\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)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\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)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\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 if (e.isDefaultPrevented()) return\n var that = this;\n\n var $tip = this.tip()\n\n this.setContent()\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\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 $parent = this.$element.parent()\n\n var orgPlacement = placement\n var docScroll = document.documentElement.scrollTop || document.body.scrollTop\n var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()\n var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left\n\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :\n placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :\n placement == 'left' && pos.left - actualWidth < parentLeft ? '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 this.hoverState = null\n\n var complete = function() {\n that.$element.trigger('shown.bs.' + that.type)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var replace\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 jQuery.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 replace = true\n offset.top = offset.top + height - actualHeight\n }\n\n if (/bottom|top/.test(placement)) {\n var delta = 0\n\n if (offset.left < 0) {\n delta = offset.left * -2\n offset.left = 0\n\n $tip.offset(offset)\n\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n }\n\n this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n } else {\n this.replaceArrow(actualHeight - height, actualHeight, 'top')\n }\n\n if (replace) $tip.offset(offset)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\n this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\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 () {\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.trigger('hidden.bs.' + that.type)\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\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 () {\n var el = this.$element[0]\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n width: el.offsetWidth,\n height: el.offsetHeight\n }, this.$element.offset())\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 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.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.validate = function () {\n if (!this.$element[0].parentNode) {\n this.hide()\n this.$element = null\n this.options = null\n }\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 = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n clearTimeout(this.timeout)\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = function (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 && option == 'destroy') return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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","transition.js":"/* ========================================================================\n * Bootstrap: transition.js v3.0.3\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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, $el = this\n $(this).one($.support.transition.end, 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\n}(jQuery);\n"} var __less = {"alerts.less":"//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","badges.less":"//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Hover state, but only for links\na.badge {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n","bootstrap.less":"// Core variables and mixins\n@import \"variables.less\";\n@import \"mixins.less\";\n\n// Reset\n@import \"normalize.less\";\n@import \"print.less\";\n\n// Core CSS\n@import \"scaffolding.less\";\n@import \"type.less\";\n@import \"code.less\";\n@import \"grid.less\";\n@import \"tables.less\";\n@import \"forms.less\";\n@import \"buttons.less\";\n\n// Components\n@import \"component-animations.less\";\n@import \"glyphicons.less\";\n@import \"dropdowns.less\";\n@import \"button-groups.less\";\n@import \"input-groups.less\";\n@import \"navs.less\";\n@import \"navbar.less\";\n@import \"breadcrumbs.less\";\n@import \"pagination.less\";\n@import \"pager.less\";\n@import \"labels.less\";\n@import \"badges.less\";\n@import \"jumbotron.less\";\n@import \"thumbnails.less\";\n@import \"alerts.less\";\n@import \"progress-bars.less\";\n@import \"media.less\";\n@import \"list-group.less\";\n@import \"panels.less\";\n@import \"wells.less\";\n@import \"close.less\";\n\n// Components w/ JavaScript\n@import \"modals.less\";\n@import \"tooltip.less\";\n@import \"popovers.less\";\n@import \"carousel.less\";\n\n// Utility classes\n@import \"utilities.less\";\n@import \"responsive-utilities.less\";\n","breadcrumbs.less":"//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","button-groups.less":"//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n &:focus {\n // Remove focus outline when dropdown JS adds it after closing the menu\n outline: none;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { .btn-xs(); }\n.btn-group-sm > .btn { .btn-sm(); }\n.btn-group-lg > .btn { .btn-lg(); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n display: none;\n}\n","buttons.less":"//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &:focus {\n .tab-focus();\n }\n\n &:hover,\n &:focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n cursor: pointer;\n border-radius: 0;\n\n &,\n &:active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","carousel.less":"//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n .img-responsive();\n line-height: 1;\n }\n }\n\n > .active,\n > .next,\n > .prev { display: block; }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: none;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n font-family: serif;\n }\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicons-chevron-left,\n .glyphicons-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n margin-left: -15px;\n font-size: 30px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","close.less":"//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","code.less":"//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n white-space: nowrap;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","component-animations.less":"//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.in {\n display: block;\n }\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition(height .35s ease);\n}\n","dropdowns.less":"//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: not-allowed;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n\n","forms.less":"//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; /* IE8-9 */\n line-height: normal;\n}\n\n// Set the height of select and file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611\nselect optgroup {\n font-size: inherit;\n font-style: inherit;\n font-family: inherit;\n}\n\n// Focus for select, file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Fix for Chrome number input\n// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.\n// See https://github.com/twbs/bootstrap/issues/8350 for more.\ninput[type=\"number\"] {\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n height: auto;\n }\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n //\n // Placeholder text gets special styles because when browsers invalidate entire\n // lines if it doesn't understand a selector/\n .placeholder();\n\n // Disabled and read-only inputs\n // Note: HTML5 says that controls under a fieldset > legend:first-child won't\n // be disabled if the fieldset is disabled. Due to implementation difficulty,\n // we don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: not-allowed;\n background-color: @input-bg-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\ninput[type=\"date\"] {\n line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n display: block;\n min-height: @line-height-computed; // clear the floating input if there is no label text\n margin-top: 10px;\n margin-bottom: 10px;\n padding-left: 20px;\n label {\n display: inline;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n float: left;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n\n // Feedback icon (requires .glyphicon classes)\n .form-control-feedback {\n position: absolute;\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n right: 0;\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n }\n}\n\n// Feedback states\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n vertical-align: middle;\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n float: none;\n margin-left: 0;\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of labels, radios, and checkboxes\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n .form-control-static {\n padding-top: (@padding-base-vertical + 1);\n }\n\n // Only right align form labels here when the columns stop stacking\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n right: (@grid-gutter-width / 2);\n }\n}\n","glyphicons.less":"//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.svg#glyphicons-halflingsregular') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","grid.less":"//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid-columns-float(xs);\n.make-grid(@grid-columns, xs, width);\n.make-grid(@grid-columns, xs, pull);\n.make-grid(@grid-columns, xs, push);\n.make-grid(@grid-columns, xs, offset);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid-columns-float(sm);\n .make-grid(@grid-columns, sm, width);\n .make-grid(@grid-columns, sm, pull);\n .make-grid(@grid-columns, sm, push);\n .make-grid(@grid-columns, sm, offset);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid-columns-float(md);\n .make-grid(@grid-columns, md, width);\n .make-grid(@grid-columns, md, pull);\n .make-grid(@grid-columns, md, push);\n .make-grid(@grid-columns, md, offset);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid-columns-float(lg);\n .make-grid(@grid-columns, lg, width);\n .make-grid(@grid-columns, lg, pull);\n .make-grid(@grid-columns, lg, push);\n .make-grid(@grid-columns, lg, offset);\n}\n","input-groups.less":"//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","jumbotron.less":"//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n .container & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","labels.less":"//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n &[href] {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","list-group.less":"//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
    ,
      , or
      .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Align badges within list items\n > .badge {\n float: right;\n }\n > .badge + .badge {\n margin-right: 5px;\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","media.less":"// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n > .pull-left {\n margin-right: 10px;\n }\n > .pull-right {\n margin-left: 10px;\n }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","mixins.less":"//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; } // Firefox 4-18\n &::-moz-placeholder { color: @color; // Firefox 19+\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n -o-user-select: @select;\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n &,\n tr&,\n th&,\n td& { display: none !important; }\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.make-grid-columns-float(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.make-grid(@index, @class, @type) when (@index >= 0) {\n .calc-grid(@index, @class, @type);\n // next iteration\n .make-grid((@index - 1), @class, @type);\n}\n\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedack icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. ` -
      -
      -
      - - .00 -
      -
      -
      - $ - - .00 -
      - -{% highlight html %} -
      - @ - -
      - -
      - - .00 -
      - -
      - $ - - .00 -
      -{% endhighlight %} - - -

      Sizing

      -

      Add the relative form sizing classes to the .input-group itself and contents within will automatically resize—no need for repeating the form control size classes on each element.

      -
      -
      - @ - -
      -
      -
      - @ - -
      -
      -
      - @ - -
      -
      -{% highlight html %} -
      - @ - -
      - -
      - @ - -
      - -
      - @ - -
      -{% endhighlight %} - - -

      Checkboxes and radio addons

      -

      Place any checkbox or radio option within an input group's addon instead of text.

      -
      -
      -
      -
      - - - - -
      -
      -
      -
      - - - - -
      -
      -
      -
      -{% highlight html %} -
      -
      -
      - - - - -
      -
      -
      -
      - - - - -
      -
      -
      -{% endhighlight %} - - -

      Button addons

      -

      Buttons in input groups are a bit different and require one extra level of nesting. Instead of .input-group-addon, you'll need to use .input-group-btn to wrap the buttons. This is required due to default browser styles that cannot be overridden.

      -
      -
      -
      -
      - - - - -
      -
      -
      -
      - - - - -
      -
      -
      -
      -{% highlight html %} -
      -
      -
      - - - - -
      -
      -
      -
      - - - - -
      -
      -
      -{% endhighlight %} - -

      Buttons with dropdowns

      -

      -
      -
      -
      -
      - - -
      -
      -
      -
      - - -
      -
      -
      -
      -{% highlight html %} -
      -
      -
      - - -
      -
      -
      -
      - - -
      -
      -
      -{% endhighlight %} - -

      Segmented buttons

      -
      -
      -
      -
      -
      - - - -
      - -
      -
      -
      -
      - -
      - - - -
      -
      -
      -
      -
      -{% highlight html %} -
      -
      - -
      - -
      - -
      - -
      - -
      -
      -{% endhighlight %} - -
- - - - -
- - -

Navs available in Bootstrap have shared markup, starting with the base .nav class, as well as shared states. Swap modifier classes to switch between each style.

- - -

Note the .nav-tabs class requires the .nav base class.

-
- -
-{% highlight html %} - -{% endhighlight %} -
-

Requires JavaScript tabs plugin

-

For tabs with tabbable areas, you must use the tabs JavaScript plugin.

-
- - -

Take that same HTML, but use .nav-pills instead:

-
- -
-{% highlight html %} - -{% endhighlight %} -

Pills are also vertically stackable. Just add .nav-stacked.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Easily make tabs or pills equal widths of their parent at screens wider than 768px with .nav-justified. On smaller screens, the nav links are stacked.

-
-

Safari and responsive justified navs

-

Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the justified nav example.

-
-
- -
- -
-{% highlight html %} - - -{% endhighlight %} - - - -

For any nav component (tabs, pills, or list), add .disabled for gray links and no hover effects.

- -
-

Link functionality not impacted

-

This class will only change the <a>'s appearance, not its functionality. Use custom JavaScript to disable links here.

-
- - -{% highlight html %} - -{% endhighlight %} - - - -

Add dropdown menus with a little extra HTML and the dropdowns JavaScript plugin.

- -

Tabs with dropdowns

- -{% highlight html %} - -{% endhighlight %} - -

Pills with dropdowns

- -{% highlight html %} - -{% endhighlight %} - -
- - - - -
- - - -

Navbars are responsive meta components that serve as navigation headers for your application or site. They begin collapsed (and are toggleable) in mobile views and become horizontal as the available viewport width increases.

- -
-

Customize the collapsing point

-

Depending on the content in your navbar, you might need to change the point at which your navbar switches between collapsed and horizontal mode. Customize the @grid-float-breakpoint variable or add your own media query.

-
-
-

Requires JavaScript

-

If JavaScript is disabled and the viewport is narrow enough that the navbar collapses, it will be impossible to expand the navbar and view the content within the .navbar-collapse.

-
- -
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Plugin dependency

-

The responsive navbar requires the collapse plugin to be included in your version of Bootstrap.

-
- -
-

Make navbars accessible

-

Be sure to add a role="navigation" to every navbar to help with accessibility.

-
- - - -

Place form content within .navbar-form for proper vertical alignment and collapsed behavior in narrow viewports. Use the alignment options to decide where it resides within the navbar content.

-

As a heads up, .navbar-form shares much of its code with .form-inline via mixin. Some form controls, like input groups, may require fixed widths to be show up properly within a navbar.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Mobile device caveats

-

There are some caveats regarding using form controls within fixed elements on mobile devices. See our browser support docs for details.

-
- -
-

Always add labels

-

Screen readers will have trouble with your forms if you don't include a label for every input. For these inline navbar forms, you can hide the labels using the .sr-only class.

-
- - - -

Add the .navbar-btn class to <button> elements not residing in a <form> to vertically center them in the navbar.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Context-specific usage

-

Like the standard button classes, .navbar-btn can be used on <a> and <input> elements. However, neither .navbar-btn nor the standard button classes should be used on <a> elements within .navbar-nav.

-
- - -

Wrap strings of text in an element with .navbar-text, usually on a <p> tag for proper leading and color.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

For folks using standard links that are not within the regular navbar navigation component, use the .navbar-link class to add the proper colors for the default and inverse navbar options.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Align nav links, forms, buttons, or text, using the .navbar-left or .navbar-right utility classes. Both classes will add a CSS float in the specified direction. For example, to align nav links, put them in a separate <ul> with the respective utility class applied.

-

These classes are mixin-ed versions of .pull-left and .pull-right, but they're scoped to media queries for easier handling of navbar components across device sizes.

- - - -

Add .navbar-fixed-top and include a .container or .container-fluid to center and pad navbar content.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Body padding required

-

The fixed navbar will overlay your other content, unless you add padding to the top of the <body>. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

-{% highlight css %} -body { padding-top: 70px; } -{% endhighlight %} -

Make sure to include this after the core Bootstrap CSS.

-
- - - -

Add .navbar-fixed-bottom and include a .container or .container-fluid to center and pad navbar content.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Body padding required

-

The fixed navbar will overlay your other content, unless you add padding to the bottom of the <body>. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

-{% highlight css %} -body { padding-bottom: 70px; } -{% endhighlight %} -

Make sure to include this after the core Bootstrap CSS.

-
- - - -

Create a full-width navbar that scrolls away with the page by adding .navbar-static-top and include a .container or .container-fluid to center and pad navbar content.

-

Unlike the .navbar-fixed-* classes, you do not need to change any padding on the body.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Modify the look of the navbar by adding .navbar-inverse.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
- - - - -
- -

Indicate the current page's location within a navigational hierarchy.

-

Separators are automatically added in CSS through :before and content.

-
- - - -
-{% highlight html %} - -{% endhighlight %} -
- - - - -
- -

Provide pagination links for your site or app with the multi-page pagination component, or the simpler pager alternative.

- -

Default pagination

-

Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Disabled and active states

-

Links are customizable for different circumstances. Use .disabled for unclickable links and .active to indicate the current page.

-
- -
-{% highlight html %} - -{% endhighlight %} -

You can optionally swap out active or disabled anchors for <span> to remove click functionality while retaining intended styles.

-{% highlight html %} -
    -
  • «
  • -
  • 1 (current)
  • - ... -
-{% endhighlight %} - - -

Sizing

-

Fancy larger or smaller pagination? Add .pagination-lg or .pagination-sm for additional sizes.

-
-
- -
-
- -
-
- -
-
-{% highlight html %} -
    ...
-
    ...
-
    ...
-{% endhighlight %} - - -

Pager

-

Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.

- -

Default example

-

By default, the pager centers links.

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Aligned links

-

Alternatively, you can align each link to the sides:

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

Optional disabled state

-

Pager links also use the general .disabled utility class from the pagination.

-
- -
-{% highlight html %} - -{% endhighlight %} -
- - - - -
- -

- -

Example

-
-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-
Example heading New
-
Example heading New
-
-{% highlight html %} -

Example heading New

-{% endhighlight %} - -

Available variations

-

Add any of the below mentioned modifier classes to change the appearance of a label.

-
- Default - Primary - Success - Info - Warning - Danger -
-{% highlight html %} -Default -Primary -Success -Info -Warning -Danger -{% endhighlight %} - -
- - - - -
- -

Easily highlight new or unread items by adding a <span class="badge"> to links, Bootstrap navs, and more.

- -
- Inbox 42 -
-{% highlight html %} -Inbox 42 -{% endhighlight %} - -

Self collapsing

-

When there are no new or unread items, badges will simply collapse (via CSS's :empty selector) provided no content exists within.

- -
-

Cross-browser compatibility

-

Badges won't self collapse in Internet Explorer 8 because it lacks support for the :empty selector.

-
- -

Adapts to active nav states

-

Built-in styles are included for placing badges in active states in pill and list navigations.

-
- -
- -
- -
-{% highlight html %} - -{% endhighlight %} -
- - - - -
- -

A lightweight, flexible component that can optionally extend the entire viewport to showcase key content on your site.

-
-
-

Hello, world!

-

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

-

Learn more

-
-
-{% highlight html %} -
-

Hello, world!

-

...

-

Learn more

-
-{% endhighlight %} -

To make the jumbotron full width, and without rounded corners, place it outside all .containers and instead add a .container within.

-{% highlight html %} -
-
- ... -
-
-{% endhighlight %} - -
- - - - -
- -

A simple shell for an h1 to appropriately space out and segment sections of content on a page. It can utilize the h1's default small element, as well as most other components (with additional styles).

-
- -
-{% highlight html %} - -{% endhighlight %} -
- - - - -
- -

Extend Bootstrap's grid system with the thumbnail component to easily display grids of images, videos, text, and more.

- -

Default example

-

By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.

-
-
-
- - Generic placeholder thumbnail - -
-
- - Generic placeholder thumbnail - -
-
- - Generic placeholder thumbnail - -
-
- - Generic placeholder thumbnail - -
-
-
-{% highlight html %} -
-
- - ... - -
- ... -
-{% endhighlight %} - -

Custom content

-

With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.

-
-
-
-
- Generic placeholder thumbnail -
-

Thumbnail label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Button Button

-
-
-
-
-
- Generic placeholder thumbnail -
-

Thumbnail label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Button Button

-
-
-
-
-
- Generic placeholder thumbnail -
-

Thumbnail label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Button Button

-
-
-
-
-
-{% highlight html %} -
-
-
- ... -
-

Thumbnail label

-

...

-

Button Button

-
-
-
-
-{% endhighlight %} -
- - - - - -
- -

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. For inline dismissal, use the alerts jQuery plugin.

- -

Examples

-

Wrap any text and an optional dismiss button in .alert and one of the four contextual classes (e.g., .alert-success) for basic alert messages.

- -
-

No default class

-

Alerts don't have default classes, only base and modifier classes. A default gray alert doesn't make too much sense, so you're required to specify a type via contextual class. Choose from success, info, warning, or danger.

-
- -
-
- Well done! You successfully read this important alert message. -
-
- Heads up! This alert needs your attention, but it's not super important. -
-
- Warning! Better check yourself, you're not looking too good. -
-
- Oh snap! Change a few things up and try submitting again. -
-
-{% highlight html %} -
...
-
...
-
...
-
...
-{% endhighlight %} - -

Dismissable alerts

-

Build on any alert by adding an optional .alert-dismissable and close button.

-
-
- - Warning! Better check yourself, you're not looking too good. -
-
-{% highlight html %} -
- - Warning! Better check yourself, you're not looking too good. -
-{% endhighlight %} - -
-

Ensure proper behavior across all devices

-

Be sure to use the <button> element with the data-dismiss="alert" data attribute.

-
- - -

Use the .alert-link utility class to quickly provide matching colored links within any alert.

-
-
- Well done! You successfully read this important alert message. -
-
- Heads up! This alert needs your attention, but it's not super important. -
-
- Warning! Better check yourself, you're not looking too good. -
-
- Oh snap! Change a few things up and try submitting again. -
-
-{% highlight html %} -
- ... -
-
- ... -
-
- ... -
-
- ... -
-{% endhighlight %} -
- - - - - -
- -

Provide up-to-date feedback on the progress of a workflow or action with simple yet flexible progress bars.

- -
-

Cross-browser compatibility

-

Progress bars use CSS3 transitions and animations to achieve some of their effects. These features are not supported in Internet Explorer 9 and below or older versions of Firefox. Opera 12 does not support animations.

-
- -

Basic example

-

Default progress bar.

-
-
-
- 60% Complete -
-
-
-{% highlight html %} -
-
- 60% Complete -
-
-{% endhighlight %} - -

Contextual alternatives

-

Progress bars use some of the same button and alert classes for consistent styles.

-
-
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-
-{% highlight html %} -
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete -
-
-{% endhighlight %} - -

Striped

-

Uses a gradient to create a striped effect. Not available in IE8.

-
-
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-
-{% highlight html %} -
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-{% endhighlight %} - -

Animated

-

Add .active to .progress-striped to animate the stripes right to left. Not available in all versions of IE.

-
-
-
45% Complete
-
-
-{% highlight html %} -
-
- 45% Complete -
-
-{% endhighlight %} - -

Stacked

-

Place multiple bars into the same .progress to stack them.

-
-
-
- 35% Complete (success) -
-
- 20% Complete (warning) -
-
- 10% Complete (danger) -
-
-
-{% highlight html %} -
-
- 35% Complete (success) -
-
- 20% Complete (warning) -
-
- 10% Complete (danger) -
-
-{% endhighlight %} -
- - - - - -
- -

Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.

- -

Default media

-

The default media allow to float a media object (images, video, audio) to the left or right of a content block.

-
-
- - Generic placeholder image - -
-

Media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
-
- - Generic placeholder image - -
-

Media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
- - Generic placeholder image - -
-

Nested media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
-
-
-
-{% highlight html %} -
- - ... - -
-

Media heading

- ... -
-
-{% endhighlight %} - -

Media list

-

With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).

-
-
    -
  • - - Generic placeholder image - -
    -

    Media heading

    -

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

    - -
    - - Generic placeholder image - -
    -

    Nested media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. - -
    - - Generic placeholder image - -
    -

    Nested media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
    -
    -
    - -
    - - Generic placeholder image - -
    -

    Nested media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
    -
    -
  • -
  • - - Generic placeholder image - -
    -

    Media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
  • -
-
-{% highlight html %} -
    -
  • - - ... - -
    -

    Media heading

    - ... -
    -
  • -
-{% endhighlight %} -
- - - - -
- -

List groups are a flexible and powerful component for displaying not only simple lists of elements, but complex ones with custom content.

- -

Basic example

-

The most basic list group is simply an unordered list with list items, and the proper classes. Build upon it with the options that follow, or your own CSS as needed.

-
-
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-{% highlight html %} -
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-{% endhighlight %} - -

Badges

-

Add the badges component to any list group item and it will automatically be positioned on the right.

-
-
    -
  • - 14 - Cras justo odio -
  • -
  • - 2 - Dapibus ac facilisis in -
  • -
  • - 1 - Morbi leo risus -
  • -
-
-{% highlight html %} -
    -
  • - 14 - Cras justo odio -
  • -
-{% endhighlight %} - -

Linked items

-

Linkify list group items by using anchor tags instead of list items (that also means a parent <div> instead of an <ul>). No need for individual parents around each element.

- -{% highlight html %} - -{% endhighlight %} - -

Contextual classes

-

Use contextual classes to style list items, default or linked. Also includes .active state.

-
-
-
-
    -
  • Dapibus ac facilisis in
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
  • Cras sit amet nibh libero
  • -
-
- -
-
-{% highlight html %} -
    -
  • Dapibus ac facilisis in
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
  • Cras sit amet nibh libero
  • -
- -{% endhighlight %} - -

Custom content

-

Add nearly any HTML within, even for linked list groups like the one below.

- -{% highlight html %} - -{% endhighlight %} -
- - - - - -
- -

While not always necessary, sometimes you need to put your DOM in a box. For those situations, try the panel component.

- -

Basic example

-

By default, all the .panel does is apply some basic border and padding to contain some content.

-
-
-
- Basic panel example -
-
-
-{% highlight html %} -
-
- Basic panel example -
-
-{% endhighlight %} - -

Panel with heading

-

Easily add a heading container to your panel with .panel-heading. You may also include any <h1>-<h6> with a .panel-title class to add a pre-styled heading.

-
-
-
Panel heading without title
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-{% highlight html %} -
-
Panel heading without title
-
- Panel content -
-
- -
-
-

Panel title

-
-
- Panel content -
-
-{% endhighlight %} - - -

Wrap buttons or secondary text in .panel-footer. Note that panel footers do not inherit colors and borders when using contextual variations as they are not meant to be in the foreground.

-
-
-
- Panel content -
- -
-
-{% highlight html %} -
-
- Panel content -
- -
-{% endhighlight %} - -

Contextual alternatives

-

Like other components, easily make a panel more meaningful to a particular context by adding any of the contextual state classes.

-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-{% highlight html %} -
...
-
...
-
...
-
...
-
...
-{% endhighlight %} - -

With tables

-

Add any non-bordered .table within a panel for a seamless design. If there is a .panel-body, we add an extra border to the top of the table for separation.

-
-
- -
Panel heading
-
-

Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-
-{% highlight html %} -
- -
Panel heading
-
-

...

-
- - - - ... -
-
-{% endhighlight %} - -

If there is no panel body, the component moves from panel header to table without interruption.

-
-
- -
Panel heading
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-
-{% highlight html %} -
- -
Panel heading
- - - - ... -
-
-{% endhighlight %} - - - -

With list groups

-

Easily include full-width list groups within any panel.

-
-
- -
Panel heading
-
-

Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

-
- - -
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-
-{% highlight html %} -
- -
Panel heading
-
-

...

-
- - -
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-{% endhighlight %} - -
- - - - - - -
- - -

Default well

-

Use the well as a simple effect on an element to give it an inset effect.

-
-
- Look, I'm in a well! -
-
-{% highlight html %} -
...
-{% endhighlight %} -

Optional classes

-

Control padding and rounded corners with two optional modifier classes.

-
-
- Look, I'm in a large well! -
-
-{% highlight html %} -
...
-{% endhighlight %} - -
-
- Look, I'm in a small well! -
-
-{% highlight html %} -
...
-{% endhighlight %} -
diff --git a/css.html b/css.html deleted file mode 100644 index 6520efdfa..000000000 --- a/css.html +++ /dev/null @@ -1,3511 +0,0 @@ ---- -layout: default -title: CSS -slug: css -lead: "Global CSS settings, fundamental HTML elements styled and enhanced with extensible classes, and an advanced grid system." -base_url: "../" ---- - - - -
- -

Get the lowdown on the key pieces of Bootstrap's infrastructure, including our approach to better, faster, stronger web development.

- -

HTML5 doctype

-

Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.

-{% highlight html %} - - - ... - -{% endhighlight %} - -

Mobile first

-

With Bootstrap 2, we added optional mobile friendly styles for key aspects of the framework. With Bootstrap 3, we've rewritten the project to be mobile friendly from the start. Instead of adding on optional mobile styles, they're baked right into the core. In fact, Bootstrap is mobile first. Mobile first styles can be found throughout the entire library instead of in separate files.

-

To ensure proper rendering and touch zooming, add the viewport meta tag to your <head>.

-{% highlight html %} - -{% endhighlight %} -

You can disable zooming capabilities on mobile devices by adding user-scalable=no to the viewport meta tag. This disables zooming, meaning users are only able to scroll, and results in your site feeling a bit more like a native application. Overall we don't recommend this on every site, so use caution!

-{% highlight html %} - -{% endhighlight %} - -

Responsive images

-

Images in Bootstrap 3 can be made responsive-friendly via the addition of the .img-responsive class. This applies max-width: 100%; and height: auto; to the image so that it scales nicely to the parent element.

-{% highlight html %} -Responsive image -{% endhighlight %} - - -

Bootstrap sets basic global display, typography, and link styles. Specifically, we:

-
    -
  • Set background-color: #fff; on the body
  • -
  • Use the @font-family-base, @font-size-base, and @line-height-base attributes as our typographic base
  • -
  • Set the global link color via @link-color and apply link underlines only on :hover
  • -
-

These styles can be found within scaffolding.less.

- -

Normalize

-

For improved cross-browser rendering, we use Normalize, a project by Nicolas Gallagher and Jonathan Neal.

- -

Containers

-

Easily center a page's contents by wrapping its contents in a .container. Containers set width at various media query breakpoints to match our grid system.

-

Note that, due to padding and fixed widths, containers are not nestable by default.

-{% highlight html %} -
- ... -
-{% endhighlight %} -
- - - - -
- -

Bootstrap includes a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. It includes predefined classes for easy layout options, as well as powerful mixins for generating more semantic layouts.

- -

Introduction

-

Grid systems are used for creating page layouts through a series of rows and columns that house your content. Here's how the Bootstrap grid system works:

-
    -
  • Rows must be placed within a .container (fixed-width) or .container-fluid (full-width) for proper alignment and padding.
  • -
  • Use rows to create horizontal groups of columns.
  • -
  • Content should be placed within columns, and only columns may be immediate children of rows.
  • -
  • Predefined grid classes like .row and .col-xs-4 are available for quickly making grid layouts. Less mixins can also be used for more semantic layouts.
  • -
  • Columns create gutters (gaps between column content) via padding. That padding is offset in rows for the first and last column via negative margin on .rows.
  • -
  • Grid columns are created by specifying the number of twelve available columns you wish to span. For example, three equal columns would use three .col-xs-4.
  • -
-

Look to the examples for applying these principles to your code.

- -
-

Grids and full-width layouts

-

Folks looking to create fully fluid layouts (meaning your site stretches the entire width of the viewport) must wrap their grid content in a containing element with padding: 0 15px; to offset the margin: 0 -15px; used on .rows.

-
- -

Media queries

-

We use the following media queries in our Less files to create the key breakpoints in our grid system.

-{% highlight css %} -/* Extra small devices (phones, less than 768px) */ -/* No media query since this is the default in Bootstrap */ - -/* Small devices (tablets, 768px and up) */ -@media (min-width: @screen-sm-min) { ... } - -/* Medium devices (desktops, 992px and up) */ -@media (min-width: @screen-md-min) { ... } - -/* Large devices (large desktops, 1200px and up) */ -@media (min-width: @screen-lg-min) { ... } -{% endhighlight %} -

We occasionally expand on these media queries to include a max-width to limit CSS to a narrower set of devices.

-{% highlight css %} -@media (max-width: @screen-xs-max) { ... } -@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... } -@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... } -@media (min-width: @screen-lg-min) { ... } -{% endhighlight %} - -

Grid options

-

See how aspects of the Bootstrap grid system work across multiple devices with a handy table.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Extra small devices - Phones (<768px) - - Small devices - Tablets (≥768px) - - Medium devices - Desktops (≥992px) - - Large devices - Desktops (≥1200px) -
Grid behaviorHorizontal at all timesCollapsed to start, horizontal above breakpoints
Container widthNone (auto)750px970px1170px
Class prefix.col-xs-.col-sm-.col-md-.col-lg-
# of columns12
Max column widthAuto60px78px95px
Gutter width30px (15px on each side of a column)
NestableYes
OffsetsYes
Column orderingYes
-
-

Grid classes apply to devices with screen widths greater than or equal to the breakpoint sizes, and override grid classes targeted at smaller devices. Therefore, applying any .col-md- class to an element will not only affect its styling on medium devices but also on large devices if a .col-lg- class is not present.

- -

Example: Stacked-to-horizontal

-

Using a single set of .col-md-* grid classes, you can create a basic grid system that starts out stacked on mobile devices and tablet devices (the extra small to small range) before becoming horizontal on desktop (medium) devices. Place grid columns in any .row.

-
-
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
-
-
.col-md-8
-
.col-md-4
-
-
-
.col-md-4
-
.col-md-4
-
.col-md-4
-
-
-
.col-md-6
-
.col-md-6
-
-
-{% highlight html %} -
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
-
-
.col-md-8
-
.col-md-4
-
-
-
.col-md-4
-
.col-md-4
-
.col-md-4
-
-
-
.col-md-6
-
.col-md-6
-
-{% endhighlight %} - -

Example: Fluid container

-

Turn any fixed-width grid layout into a full-width layout by changing your outermost .container to .container-fluid.

-{% highlight html %} -
-
- ... -
-
-{% endhighlight %} - -

Example: Mobile and desktop

-

Don't want your columns to simply stack in smaller devices? Use the extra small and medium device grid classes by adding .col-xs-* .col-md-* to your columns. See the example below for a better idea of how it all works.

-
-
-
.col-xs-12 .col-md-8
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6
-
.col-xs-6
-
-
-{% highlight html %} - -
-
.col-xs-12 .col-md-8
-
.col-xs-6 .col-md-4
-
- - -
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
- - -
-
.col-xs-6
-
.col-xs-6
-
-{% endhighlight %} - -

Example: Mobile, tablet, desktops

-

Build on the previous example by creating even more dynamic and powerful layouts with tablet .col-sm-* classes.

-
-
-
.col-xs-12 .col-sm-6 .col-md-8
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6 .col-sm-4
-
.col-xs-6 .col-sm-4
- -
-
.col-xs-6 .col-sm-4
-
-
-{% highlight html %} -
-
.col-xs-12 .col-sm-6 .col-md-8
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6 .col-sm-4
-
.col-xs-6 .col-sm-4
- -
-
.col-xs-6 .col-sm-4
-
-{% endhighlight %} - -

Responsive column resets

-

With the four tiers of grids available you're bound to run into issues where, at certain breakpoints, your columns don't clear quite right as one is taller than the other. To fix that, use a combination of a .clearfix and our responsive utility classes.

-
-
-
- .col-xs-6 .col-sm-3 -
- Resize your viewport or check it out on your phone for an example. -
-
.col-xs-6 .col-sm-3
- - -
- -
.col-xs-6 .col-sm-3
-
.col-xs-6 .col-sm-3
-
-
-{% highlight html %} -
-
.col-xs-6 .col-sm-3
-
.col-xs-6 .col-sm-3
- - -
- -
.col-xs-6 .col-sm-3
-
.col-xs-6 .col-sm-3
-
-{% endhighlight %} -

In addition to column clearing at responsive breakpoints, you may need to reset offsets, pushes, or pulls. Those resets are available for medium and large grid tiers only, since they start only at the (second) small grid tier. See this in action in the grid example.

-{% highlight html %} -
-
.col-sm-5 .col-md-6
-
.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0
-
- -
-
.col-sm-6 .col-md-5 .col-lg-6
-
.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0
-
-{% endhighlight %} - - -

Offsetting columns

-

Move columns to the right using .col-md-offset-* classes. These classes increase the left margin of a column by * columns. For example, .col-md-offset-4 moves .col-md-4 over four columns.

-
-
-
.col-md-4
-
.col-md-4 .col-md-offset-4
-
-
-
.col-md-3 .col-md-offset-3
-
.col-md-3 .col-md-offset-3
-
-
-
.col-md-6 .col-md-offset-3
-
-
-{% highlight html %} -
-
.col-md-4
-
.col-md-4 .col-md-offset-4
-
-
-
.col-md-3 .col-md-offset-3
-
.col-md-3 .col-md-offset-3
-
-
-
.col-md-6 .col-md-offset-3
-
-{% endhighlight %} - - -

Nesting columns

-

To nest your content with the default grid, add a new .row and set of .col-md-* columns within an existing .col-md-* column. Nested rows should include a set of columns that add up to 12 or less.

-
-
- Level 1: .col-md-9 -
-
- Level 2: .col-md-6 -
-
- Level 2: .col-md-6 -
-
-
-
-{% highlight html %} -
-
- Level 1: .col-md-9 -
-
- Level 2: .col-md-6 -
-
- Level 2: .col-md-6 -
-
-
-
-{% endhighlight %} - -

Column ordering

-

Easily change the order of our built-in grid columns with .col-md-push-* and .col-md-pull-* modifier classes.

-
-
.col-md-9 .col-md-push-3
-
.col-md-3 .col-md-pull-9
-
- -{% highlight html %} -
-
.col-md-9 .col-md-push-3
-
.col-md-3 .col-md-pull-9
-
-{% endhighlight %} - -

Less mixins and variables

-

In addition to prebuilt grid classes for fast layouts, Bootstrap includes Less variables and mixins for quickly generating your own simple, semantic layouts.

- -

Variables

-

Variables determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.

-{% highlight css %} -@grid-columns: 12; -@grid-gutter-width: 30px; -@grid-float-breakpoint: 768px; -{% endhighlight %} - -

Mixins

-

Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.

-{% highlight css %} -// Creates a wrapper for a series of columns -.make-row(@gutter: @grid-gutter-width) { - // Then clear the floated columns - .clearfix(); - - @media (min-width: @screen-sm-min) { - margin-left: (@gutter / -2); - margin-right: (@gutter / -2); - } - - // Negative margin nested rows out to align the content of columns - .row { - margin-left: (@gutter / -2); - margin-right: (@gutter / -2); - } -} - -// Generate the extra small columns -.make-xs-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @grid-float-breakpoint) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the small columns -.make-sm-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @screen-sm-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the small column offsets -.make-sm-column-offset(@columns) { - @media (min-width: @screen-sm-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-push(@columns) { - @media (min-width: @screen-sm-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-pull(@columns) { - @media (min-width: @screen-sm-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the medium columns -.make-md-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @screen-md-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the medium column offsets -.make-md-column-offset(@columns) { - @media (min-width: @screen-md-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-push(@columns) { - @media (min-width: @screen-md-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-pull(@columns) { - @media (min-width: @screen-md-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the large columns -.make-lg-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @screen-lg-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the large column offsets -.make-lg-column-offset(@columns) { - @media (min-width: @screen-lg-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-push(@columns) { - @media (min-width: @screen-lg-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-pull(@columns) { - @media (min-width: @screen-lg-min) { - right: percentage((@columns / @grid-columns)); - } -} -{% endhighlight %} - -

Example usage

-

You can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.

-{% highlight css %} -.wrapper { - .make-row(); -} -.content-main { - .make-lg-column(8); -} -.content-secondary { - .make-lg-column(3); - .make-lg-column-offset(1); -} -{% endhighlight %} -{% highlight html %} -
-
...
-
...
-
-{% endhighlight %} - -
- - - - - -
- - - -

Headings

-

All HTML headings, <h1> through <h6>, are available. .h1 through .h6 classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

h1. Bootstrap heading

Semibold 36px

h2. Bootstrap heading

Semibold 30px

h3. Bootstrap heading

Semibold 24px

h4. Bootstrap heading

Semibold 18px
h5. Bootstrap heading
Semibold 14px
h6. Bootstrap heading
Semibold 12px
-
-{% highlight html %} -

h1. Bootstrap heading

-

h2. Bootstrap heading

-

h3. Bootstrap heading

-

h4. Bootstrap heading

-
h5. Bootstrap heading
-
h6. Bootstrap heading
-{% endhighlight %} - -

Create lighter, secondary text in any heading with a generic <small> tag or the .small class.

-
- - - - - - - - - - - - - - - - - - - - - -

h1. Bootstrap heading Secondary text

h2. Bootstrap heading Secondary text

h3. Bootstrap heading Secondary text

h4. Bootstrap heading Secondary text

h5. Bootstrap heading Secondary text
h6. Bootstrap heading Secondary text
-
-{% highlight html %} -

h1. Bootstrap heading Secondary text

-

h2. Bootstrap heading Secondary text

-

h3. Bootstrap heading Secondary text

-

h4. Bootstrap heading Secondary text

-
h5. Bootstrap heading Secondary text
-
h6. Bootstrap heading Secondary text
-{% endhighlight %} - - - -

Body copy

-

Bootstrap's global default font-size is 14px, with a line-height of 1.428. This is applied to the <body> and all paragraphs. In addition, <p> (paragraphs) receive a bottom margin of half their computed line-height (10px by default).

-
-

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

-

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

-

Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

-
-{% highlight html %} -

...

-{% endhighlight %} - - -

Lead body copy

-

Make a paragraph stand out by adding .lead.

-
-

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

-
-{% highlight html %} -

...

-{% endhighlight %} - - -

Built with Less

-

The typographic scale is based on two Less variables in variables.less: @font-size-base and @line-height-base. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.

- - - -

Emphasis

-

Make use of HTML's default emphasis tags with lightweight styles.

- -

Small text

-

For de-emphasizing inline or blocks of text, use the <small> tag to set text at 85% the size of the parent. Heading elements receive their own font-size for nested <small> elements.

-

You may alternatively use an inline element with .small in place of any <small>

-
-

This line of text is meant to be treated as fine print.

-
-{% highlight html %} -This line of text is meant to be treated as fine print. -{% endhighlight %} - - -

Bold

-

For emphasizing a snippet of text with a heavier font-weight.

-
-

The following snippet of text is rendered as bold text.

-
-{% highlight html %} -rendered as bold text -{% endhighlight %} - -

Italics

-

For emphasizing a snippet of text with italics.

-
-

The following snippet of text is rendered as italicized text.

-
-{% highlight html %} -rendered as italicized text -{% endhighlight %} - -
-

Alternate elements

-

Feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance while <i> is mostly for voice, technical terms, etc.

-
- -

Alignment classes

-

Easily realign text to components with text alignment classes.

-
-

Left aligned text.

-

Center aligned text.

-

Right aligned text.

-
-{% highlight html %} -

Left aligned text.

-

Center aligned text.

-

Right aligned text.

-{% endhighlight %} - - - -

Abbreviations

-

Stylized implementation of HTML's <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a title attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.

- -

Basic abbreviation

-

For expanded text on long hover of an abbreviation, include the title attribute with the <abbr> element.

-
-

An abbreviation of the word attribute is attr.

-
-{% highlight html %} -attr -{% endhighlight %} - -

Initialism

-

Add .initialism to an abbreviation for a slightly smaller font-size.

-
-

HTML is the best thing since sliced bread.

-
-{% highlight html %} -HTML -{% endhighlight %} - - - -

Addresses

-

Present contact information for the nearest ancestor or the entire body of work. Preserve formatting by ending all lines with <br>.

-
-
- Twitter, Inc.
- 795 Folsom Ave, Suite 600
- San Francisco, CA 94107
- P: (123) 456-7890 -
-
- Full Name
- first.last@example.com -
-
-{% highlight html %} -
- Twitter, Inc.
- 795 Folsom Ave, Suite 600
- San Francisco, CA 94107
- P: (123) 456-7890 -
- -
- Full Name
- first.last@example.com -
-{% endhighlight %} - - - -

Blockquotes

-

For quoting blocks of content from another source within your document.

- -

Default blockquote

-

Wrap <blockquote> around any HTML as the quote. For straight quotes, we recommend a <p>.

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
-
-{% highlight html %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
-{% endhighlight %} - -

Blockquote options

-

Style and content changes for simple variations on a standard <blockquote>.

- -

Naming a source

-

Add a <footer> for identifying the source. Wrap the name of the source work in <cite>.

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
Someone famous in Source Title
-
-
-{% highlight html %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
Someone famous in Source Title
-
-{% endhighlight %} - -

Alternate displays

-

Add .blockquote-reverse for blockquote with right-aligned content.

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
Someone famous in Source Title
-
-
-{% highlight html %} -
- ... -
-{% endhighlight %} - - - -

Lists

- -

Unordered

-

A list of items in which the order does not explicitly matter.

-
-
    -
  • Lorem ipsum dolor sit amet
  • -
  • Consectetur adipiscing elit
  • -
  • Integer molestie lorem at massa
  • -
  • Facilisis in pretium nisl aliquet
  • -
  • Nulla volutpat aliquam velit -
      -
    • Phasellus iaculis neque
    • -
    • Purus sodales ultricies
    • -
    • Vestibulum laoreet porttitor sem
    • -
    • Ac tristique libero volutpat at
    • -
    -
  • -
  • Faucibus porta lacus fringilla vel
  • -
  • Aenean sit amet erat nunc
  • -
  • Eget porttitor lorem
  • -
-
-{% highlight html %} -
    -
  • ...
  • -
-{% endhighlight %} - -

Ordered

-

A list of items in which the order does explicitly matter.

-
-
    -
  1. Lorem ipsum dolor sit amet
  2. -
  3. Consectetur adipiscing elit
  4. -
  5. Integer molestie lorem at massa
  6. -
  7. Facilisis in pretium nisl aliquet
  8. -
  9. Nulla volutpat aliquam velit
  10. -
  11. Faucibus porta lacus fringilla vel
  12. -
  13. Aenean sit amet erat nunc
  14. -
  15. Eget porttitor lorem
  16. -
-
-{% highlight html %} -
    -
  1. ...
  2. -
-{% endhighlight %} - -

Unstyled

-

Remove the default list-style and left margin on list items (immediate children only). This only applies to immediate children list items, meaning you will need to add the class for any nested lists as well.

-
-
    -
  • Lorem ipsum dolor sit amet
  • -
  • Consectetur adipiscing elit
  • -
  • Integer molestie lorem at massa
  • -
  • Facilisis in pretium nisl aliquet
  • -
  • Nulla volutpat aliquam velit -
      -
    • Phasellus iaculis neque
    • -
    • Purus sodales ultricies
    • -
    • Vestibulum laoreet porttitor sem
    • -
    • Ac tristique libero volutpat at
    • -
    -
  • -
  • Faucibus porta lacus fringilla vel
  • -
  • Aenean sit amet erat nunc
  • -
  • Eget porttitor lorem
  • -
-
-{% highlight html %} -
    -
  • ...
  • -
-{% endhighlight %} - -

Inline

-

Place all list items on a single line with display: inline-block; and some light padding.

-
-
    -
  • Lorem ipsum
  • -
  • Phasellus iaculis
  • -
  • Nulla volutpat
  • -
-
-{% highlight html %} -
    -
  • ...
  • -
-{% endhighlight %} - -

Description

-

A list of terms with their associated descriptions.

-
-
-
Description lists
-
A description list is perfect for defining terms.
-
Euismod
-
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
-
Donec id elit non mi porta gravida at eget metus.
-
Malesuada porta
-
Etiam porta sem malesuada magna mollis euismod.
-
-
-{% highlight html %} -
-
...
-
...
-
-{% endhighlight %} - -

Horizontal description

-

Make terms and descriptions in <dl> line up side-by-side. Starts off stacked like default <dl>s, but when the navbar expands, so do these.

-
-
-
Description lists
-
A description list is perfect for defining terms.
-
Euismod
-
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
-
Donec id elit non mi porta gravida at eget metus.
-
Malesuada porta
-
Etiam porta sem malesuada magna mollis euismod.
-
Felis euismod semper eget lacinia
-
Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
-
-
-{% highlight html %} -
-
...
-
...
-
-{% endhighlight %} - -
-

Auto-truncating

-

Horizontal description lists will truncate terms that are too long to fit in the left column with text-overflow. In narrower viewports, they will change to the default stacked layout.

-
-
- - - -
- - -

Inline

-

Wrap inline snippets of code with <code>.

-
- For example, <section> should be wrapped as inline. -
-{% highlight html %} -For example, <section> should be wrapped as inline. -{% endhighlight %} - -

User input

-

Use the <kbd> to indicate input that is typically entered via keyboard.

-
- To switch directories, type cd followed the name of the directory. -
-{% highlight html %} - To switch directories, type cd followed the name of the directory. -{% endhighlight %} - -

Basic block

-

Use <pre> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.

-
-
<p>Sample text here...</p>
-
-{% highlight html %} -
<p>Sample text here...</p>
-{% endhighlight %} - -

You may optionally add the .pre-scrollable class, which will set a max-height of 350px and provide a y-axis scrollbar.

-
- - - - -
- - -

Basic example

-

For basic styling—light padding and only horizontal dividers—add the base class .table to any <table>. It may seem super redundant, but given the widespread use of tables for other plugins like calendars and date pickers, we've opted to isolate our custom table styles.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Striped rows

-

Use .table-striped to add zebra-striping to any table row within the <tbody>.

-
-

Cross-browser compatibility

-

Striped tables are styled via the :nth-child CSS selector, which is not available in Internet Explorer 8.

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Bordered table

-

Add .table-bordered for borders on all sides of the table and cells.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
MarkOtto@TwBootstrap
2JacobThornton@fat
3Larry the Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Hover rows

-

Add .table-hover to enable a hover state on table rows within a <tbody>.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Condensed table

-

Add .table-condensed to make tables more compact by cutting cell padding in half.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Contextual classes

-

Use contextual classes to color table rows or individual cells.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- .active - Applies the hover color to a particular row or cell
- .success - Indicates a successful or positive action
- .warning - Indicates a warning that might need attention
- .danger - Indicates a dangerous or potentially negative action
- .info - Indicates a neutral informative change or action
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
8Column contentColumn contentColumn content
9Column contentColumn contentColumn content
-
-{% highlight html %} - -... -... -... -... -... - - - - ... - ... - ... - ... - ... - -{% endhighlight %} - - -

Responsive tables

-

Create responsive tables by wrapping any .table in .table-responsive to make them scroll horizontally up to small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables.

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
-
-
-{% highlight html %} -
- - ... -
-
-{% endhighlight %} - -
- - - - -
- - -

Basic example

-

Individual form controls automatically receive some global styling. All textual <input>, <textarea>, and <select> elements with .form-control are set to width: 100%; by default. Wrap labels and controls in .form-group for optimum spacing.

-
-
-
- - -
-
- - -
-
- - -

Example block-level help text here.

-
-
- -
- -
-
-{% highlight html %} -
-
- - -
-
- - -
-
- - -

Example block-level help text here.

-
-
- -
- -
-{% endhighlight %} - - -

Inline form

-

Add .form-inline to your <form> for left-aligned and inline-block controls. This only applies to forms within viewports that are at least 768px wide.

-
-

Requires custom widths

-

Inputs, selects, and textareas are 100% wide by default in Bootstrap. To use the inline form, you'll have to set a width on the form controls used within.

-
-
-

Always add labels

-

Screen readers will have trouble with your forms if you don't include a label for every input. For these inline forms, you can hide the labels using the .sr-only class.

-
-
-
-
- - -
-
- - -
-
- -
- -
-
-{% highlight html %} -
-
- - -
-
- - -
-
- -
- -
-{% endhighlight %} - - -

Horizontal form

-

Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout by adding .form-horizontal to the form. Doing so changes .form-groups to behave as grid rows, so no need for .row.

-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-{% highlight html %} -
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-{% endhighlight %} - - -

Supported controls

-

Examples of standard form controls supported in an example form layout.

- -

Inputs

-

Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.

-
-

Type declaration required

-

Inputs will only be fully styled if their type is properly declared.

-
-
-
- -
-
-{% highlight html %} - -{% endhighlight %} -
-

Input groups

-

To add integrated text or buttons before and/or after any text-based <input>, check out the input group component.

-
- -

Textarea

-

Form control which supports multiple lines of text. Change rows attribute as necessary.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - -

Checkboxes and radios

-

Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.

-

Default (stacked)

-
-
-
- -
-
-
- -
-
- -
-
-
-{% highlight html %} -
- -
- -
- -
-
- -
-{% endhighlight %} - -

Inline checkboxes

-

Use the .checkbox-inline or .radio-inline classes on a series of checkboxes or radios for controls that appear on the same line.

-
-
- - - -
-
-{% highlight html %} - - - -{% endhighlight %} - -

Selects

-

Use the default option, or add multiple to show multiple options at once.

-
-
- -
- -
-
-{% highlight html %} - - - -{% endhighlight %} - - -

Static control

-

When you need to place plain text next to a form label within a horizontal form, use the .form-control-static class on a <p>.

-
-
-
- -
-

email@example.com

-
-
-
- -
- -
-
-
-
-{% highlight html %} -
-
- -
-

email@example.com

-
-
-
- -
- -
-
-
-{% endhighlight %} - - -

Input focus

-

We remove the default outline styles on some form controls and apply a box-shadow in its place for :focus.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - - -

Disabled inputs

-

Add the disabled attribute on an input to prevent user input and trigger a slightly different look.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - -

Disabled fieldsets

-

Add the disabled attribute to a <fieldset> to disable all the controls within the <fieldset> at once.

- -
-

Link functionality of <a> not impacted

-

This class will only change the appearance of <a class="btn btn-default"> buttons, not their functionality. Use custom JavaScript to disable links here.

-
- -
-

Cross-browser compatibility

-

While Bootstrap will apply these styles in all browsers, Internet Explorer 9 and below don't actually support the disabled attribute on a <fieldset>. Use custom JavaScript to disable the fieldset in these browsers.

-
- -
-
-
-
- - -
-
- - -
-
- -
- -
-
-
-{% highlight html %} -
-
-
- - -
-
- - -
-
- -
- -
-
-{% endhighlight %} - - -

Validation states

-

Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add .has-warning, .has-error, or .has-success to the parent element. Any .control-label, .form-control, and .help-block within that element will receive the validation styles.

- -
-
-
- - -
-
- - -
-
- - -
-
-
-{% highlight html %} -
- - -
-
- - -
-
- - -
-{% endhighlight %} - -

With optional icons

-

You can also add optional feedback icons with the addition of an extra class and the right icon.

-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-{% highlight html %} -
- - - -
-
- - - -
-
- - - -
-{% endhighlight %} - -

Optional icons also work on horizontal and inline forms.

-
-
-
- -
- - -
-
-
-
-{% highlight html %} -
-
- -
- - -
-
-
-{% endhighlight %} - -
-
-
- - - -
-
-
-{% highlight html %} -
-
- - - -
-
-{% endhighlight %} - - - -

Control sizing

-

Set heights using classes like .input-lg, and set widths using grid column classes like .col-lg-*.

- -

Height sizing

-

Create larger or smaller form controls that match button sizes.

-
-
-
- - - - - - - -
-
-
-{% highlight html %} - - - - - - - -{% endhighlight %} - -

Column sizing

-

Wrap inputs in grid columns, or any custom parent element, to easily enforce desired widths.

-
-
-
-
- -
-
- -
-
- -
-
-
-
-{% highlight html %} -
-
- -
-
- -
-
- -
-
-{% endhighlight %} - -

Help text

-

Block level help text for form controls.

-
-
- - A block of help text that breaks onto a new line and may extend beyond one line. -
-
-{% highlight html %} -A block of help text that breaks onto a new line and may extend beyond one line. -{% endhighlight %} - -
- - - - -
- - -

Options

-

Use any of the available button classes to quickly create a styled button.

-
- - - - - - - -
-{% highlight html %} - - - - - - - - - - - - - - - - - - - - -{% endhighlight %} - -

Sizes

-

Fancy larger or smaller buttons? Add .btn-lg, .btn-sm, or .btn-xs for additional sizes.

-
-

- - -

-

- - -

-

- - -

-

- - -

-
-{% highlight html %} -

- - -

-

- - -

-

- - -

-

- - -

-{% endhighlight %} - -

Create block level buttons—those that span the full width of a parent— by adding .btn-block.

-
-
- - -
-
-{% highlight html %} - - -{% endhighlight %} - - -

Active state

-

Buttons will appear pressed (with a darker background, darker border, and inset shadow) when active. For <button> elements, this is done via :active. For <a> elements, it's done with .active. However, you may use .active <button>s should you need to replicate the active state progammatically.

- -

Button element

-

No need to add :active as it's a pseudo-class, but if you need to force the same appearance, go ahead and add .active.

-

- - -

-{% highlight html %} - - -{% endhighlight %} - -

Anchor element

-

Add the .active class to <a> buttons.

-

- Primary link - Link -

-{% highlight html %} -Primary link -Link -{% endhighlight %} - - -

Disabled state

-

Make buttons look unclickable by fading them back 50%.

- -

Button element

-

Add the disabled attribute to <button> buttons.

-

- - -

-{% highlight html %} - - -{% endhighlight %} - -
-

Cross-browser compatibility

-

If you add the disabled attribute to a <button>, Internet Explorer 9 and below will render text gray with a nasty text-shadow that we cannot fix.

-
- -

Anchor element

-

Add the .disabled class to <a> buttons.

-

- Primary link - Link -

-{% highlight html %} -Primary link -Link -{% endhighlight %} -

- We use .disabled as a utility class here, similar to the common .active class, so no prefix is required. -

-
-

Link functionality not impacted

-

This class will only change the <a>'s appearance, not its functionality. Use custom JavaScript to disable links here.

-
-
-

Context-specific usage

-

While button classes can be used on <a> and <button> elements, only <button> elements are supported within our nav and navbar components.

-
- - -

Button tags

-

Use the button classes on an <a>, <button>, or <input> element.

-
- Link - - - -
-{% highlight html %} -Link - - - -{% endhighlight %} - -
-

Cross-browser rendering

-

As a best practice, we highly recommend using the <button> element whenever possible to ensure matching cross-browser rendering.

-

Among other things, there's a Firefox bug that prevents us from setting the line-height of <input>-based buttons, causing them to not exactly match the height of other buttons on Firefox.

-
- -
- - - - -
- - -

Add classes to an <img> element to easily style images in any project.

-
-

Cross-browser compatibility

-

Keep in mind that Internet Explorer 8 lacks support for rounded corners.

-
-
- A generic square placeholder image with rounded corners - A generic square placeholder image where only the portion within the circle circumscribed about said square is visible - A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera -
-{% highlight html %} -... -... -... -{% endhighlight %} - -
-

Responsive images

-

Looking for how to make images more responsive? Check out the responsive images section up top.

-
- -
- - - -
- - -

Contextual colors

-

Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles.

-
-

Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

-

Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

-

Maecenas sed diam eget risus varius blandit sit amet non magna.

-

Etiam porta sem malesuada magna mollis euismod.

-

Donec ullamcorper nulla non metus auctor fringilla.

-
-{% highlight html %} -

...

-

...

-

...

-

...

-

...

-

...

-{% endhighlight %} -
-

Dealing with specificity

-

Sometimes emphasis classes cannot be applied due to the specificity of another selector. In most cases, a sufficient workaround is to wrap your text in a <span> with the class.

-
- -

Contextual backgrounds

-

Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes.

-
-

Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

-

Maecenas sed diam eget risus varius blandit sit amet non magna.

-

Etiam porta sem malesuada magna mollis euismod.

-

Donec ullamcorper nulla non metus auctor fringilla.

-
-{% highlight html %} -

...

-

...

-

...

-

...

-

...

-

...

-{% endhighlight %} - - -

Close icon

-

Use the generic close icon for dismissing content like modals and alerts.

-
-

-
-{% highlight html %} - -{% endhighlight %} - - -

Carets

-

Use carets to indicate dropdown functionality and direction. Note that the default caret will reverse automatically in dropup menus.

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

Quick floats

-

Float an element to the left or right with a class. !important is included to avoid specificity issues. Classes can also be used as mixins.

-{% highlight html %} -
...
-
...
-{% endhighlight %} -{% highlight css %} -// Classes -.pull-left { - float: left !important; -} -.pull-right { - float: right !important; -} - -// Usage as mixins -.element { - .pull-left(); -} -.another-element { - .pull-right(); -} -{% endhighlight %} - -
-

Not for use in navbars

-

To align components in navbars with utility classes, use .navbar-left or .navbar-right instead. See the navbar docs for details.

-
- - -

Center content blocks

-

Set an element to display: block and center via margin. Available as a mixin and class.

-{% highlight html %} -
...
-{% endhighlight %} -{% highlight css %} -// Classes -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} - -// Usage as mixins -.element { - .center-block(); -} -{% endhighlight %} - - - -

Clearfix

-

Clear the float on any element with the .clearfix class. Utilizes the micro clearfix as popularized by Nicolas Gallagher. Can also be used as a mixin.

-{% highlight html %} - -
...
-{% endhighlight %} -{% highlight css %} -// Mixin itself -.clearfix() { - &:before, - &:after { - content: " "; - display: table; - } - &:after { - clear: both; - } -} - -// Usage as a Mixin -.element { - .clearfix(); -} -{% endhighlight %} - - -

Showing and hiding content

-

Force an element to be shown or hidden (including for screen readers) with the use of .show and .hidden classes. These classes use !important to avoid specificity conflicts, just like the quick floats. They are only available for block level toggling. They can also be used as mixins.

-

.hide is available, but it does not always affect screen readers and is deprecated as of v3.0.1. Use .hidden or .sr-only instead.

-

Furthermore, .invisible can be used to toggle only the visibility of an element, meaning its display is not modified and the element can still affect the flow of the document.

-{% highlight html %} -
...
- -{% endhighlight %} -{% highlight css %} -// Classes -.show { - display: block !important; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.invisible { - visibility: hidden; -} - -// Usage as mixins -.element { - .show(); -} -.another-element { - .hidden(); -} -{% endhighlight %} - - -

Screen reader content

-

Hide an element to all devices except screen readers with .sr-only. Necessary for following accessibility best practices. Can also be used as a mixin.

-{% highlight html %} -Skip to main content -{% endhighlight %} -{% highlight css %} -// Usage as a Mixin -.skip-navigation { - .sr-only(); -} -{% endhighlight %} - - -

Image replacement

-

Utilize the .text-hide class or mixin to help replace an element's text content with a background image.

-{% highlight html %} -

Custom heading

-{% endhighlight %} - {% highlight css %} -// Usage as a Mixin -.heading { - .text-hide(); -} -{% endhighlight %} -
- - - - -
- -

For faster mobile-friendly development, use these utility classes for showing and hiding content by device via media query. Also included are utility classes for toggling content when printed.

-

Try to use these on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities are currently only available for block and table toggling. Use with inline and table elements is currently not supported.

- - -

Available classes

-

Use a single or combination of the available classes for toggling content across viewport breakpoints.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Extra small devices - Phones (<768px) - - Small devices - Tablets (≥768px) - - Medium devices - Desktops (≥992px) - - Large devices - Desktops (≥1200px) -
.visible-xsVisible
.visible-smVisible
.visible-mdVisible
.visible-lgVisible
.hidden-xsVisibleVisibleVisible
.hidden-smVisibleVisibleVisible
.hidden-mdVisibleVisibleVisible
.hidden-lgVisibleVisibleVisible
-
- - -

Print classes

-

Similar to the regular responsive classes, use these for toggling content for print.

-
- - - - - - - - - - - - - - - - - - - - -
ClassBrowserPrint
.visible-printVisible
.hidden-printVisible
-
- - -

Test cases

-

Resize your browser or load on different devices to test the responsive utility classes.

- -

Visible on...

-

Green checkmarks indicate the element is visible in your current viewport.

-
-
- - ✔ Visible on x-small -
-
- - ✔ Visible on small -
-
-
- Medium - ✔ Visible on medium -
-
- - ✔ Visible on large -
-
-
-
- - ✔ Visible on x-small and small -
-
- - ✔ Visible on medium and large -
-
-
- - ✔ Visible on x-small and medium -
-
- - ✔ Visible on small and large -
-
-
- - ✔ Visible on x-small and large -
-
- - ✔ Visible on small and medium -
-
- -

Hidden on...

-

Here, green checkmarks also indicate the element is hidden in your current viewport.

-
-
- - ✔ Hidden on x-small -
-
- - ✔ Hidden on small -
-
-
- Medium - ✔ Hidden on medium -
-
- - ✔ Hidden on large -
-
-
-
- - ✔ Hidden on x-small and small -
-
- - ✔ Hidden on medium and large -
-
-
- - ✔ Hidden on x-small and medium -
-
- - ✔ Hidden on small and large -
-
-
- - ✔ Hidden on x-small and large -
-
- - ✔ Hidden on small and medium -
-
- -
- - - - -
- -

Bootstrap's CSS is built on Less, a preprocessor with additional functionality like variables, mixins, and functions for compiling CSS. Those looking to use the source Less files instead of our compiled CSS files can make use of the numerous variables and mixins we use throughout the framework.

- -

Grid variables and mixins are covered within the Grid system section.

- - -

Variables

-

Variables are used throughout the entire project as a way to centralize and share commonly used values like colors, spacing, or font stacks. For a complete breakdown, please see the Customizer.

- -

Colors

-

Easily make use of two color schemes: grayscale and semantic. Grayscale colors provide quick access to commonly used shades of black while semantic include various colors assigned to meaningful contextual values.

-
-
-
-
-
-
-
-
-
-{% highlight css %} -@gray-darker: lighten(#000, 13.5%); // #222 -@gray-dark: lighten(#000, 20%); // #333 -@gray: lighten(#000, 33.5%); // #555 -@gray-light: lighten(#000, 60%); // #999 -@gray-lighter: lighten(#000, 93.5%); // #eee -{% endhighlight %} - -
-
-
-
-
-
-
-
-
-{% highlight css %} -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; -@brand-info: #5bc0de; -{% endhighlight %} - -

Use any of these color variables as they are or reassign them to more meaningful variables for your project.

-{% highlight css %} -// Use as-is -.masthead { - background-color: @brand-primary; -} - -// Reassigned variables in Less -@alert-message-background: @brand-info; -.alert { - background-color: @alert-message-background; -} -{% endhighlight %} - -

Scaffolding

-

A handful of variables for quickly customizing key elements of your site's skeleton.

-{% highlight css %} -// Scaffolding -@body-bg: #fff; -@text-color: @black-50; -{% endhighlight %} - - -

Easily style your links with the right color with only one value.

-{% highlight css %} -// Variables -@link-color: @brand-primary; -@link-color-hover: darken(@link-color, 15%); - -// Usage -a { - color: @link-color; - text-decoration: none; - - &:hover { - color: @link-color-hover; - text-decoration: underline; - } -} -{% endhighlight %} -

Note that the @link-color-hover uses a function, another awesome tool from Less, to automagically create the right hover color. You can use darken, lighten, saturate, and desaturate.

- -

Typography

-

Easily set your type face, text size, leading, and more with a few quick variables. Bootstrap makes use of these as well to provide easy typographic mixins.

-{% highlight css %} -@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; -@font-family-base: @font-family-sans-serif; - -@font-size-base: 14px; -@font-size-large: ceil((@font-size-base * 1.25)); // ~18px -@font-size-small: ceil((@font-size-base * 0.85)); // ~12px - -@font-size-h1: floor((@font-size-base * 2.6)); // ~36px -@font-size-h2: floor((@font-size-base * 2.15)); // ~30px -@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px -@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px -@font-size-h5: @font-size-base; -@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px - -@line-height-base: 1.428571429; // 20/14 -@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px - -@headings-font-family: inherit; -@headings-font-weight: 500; -@headings-line-height: 1.1; -@headings-color: inherit; -{% endhighlight %} - -

Icons

-

Two quick variables for customizing the location and filename of your icons.

-{% highlight css %} -@icon-font-path: "../fonts/"; -@icon-font-name: "glyphicons-halflings-regular"; -{% endhighlight %} - -

Components

-

Components throughout Bootstrap make use of some default variables for setting common values. Here are the most commonly used.

-{% highlight css %} -@padding-base-vertical: 6px; -@padding-base-horizontal: 12px; - -@padding-large-vertical: 10px; -@padding-large-horizontal: 16px; - -@padding-small-vertical: 5px; -@padding-small-horizontal: 10px; - -@padding-xs-vertical: 1px; -@padding-xs-horizontal: 5px; - -@line-height-large: 1.33; -@line-height-small: 1.5; - -@border-radius-base: 4px; -@border-radius-large: 6px; -@border-radius-small: 3px; - -@component-active-color: #fff; -@component-active-bg: @brand-primary; - -@caret-width-base: 4px; -@caret-width-large: 5px; -{% endhighlight %} - - -

Vendor mixins

-

Vendor mixins are mixins to help support multiple browsers by including all relevant vendor prefixs in your compiled CSS.

- - -

Box-sizing

-

Reset your components' box model with a single mixin. For context, see this helpful article from Mozilla.

-{% highlight css %} -.box-sizing(@box-model) { - -webkit-box-sizing: @box-model; // Safari <= 5 - -moz-box-sizing: @box-model; // Firefox <= 19 - box-sizing: @box-model; -} -{% endhighlight %} - -

Rounded corners

-

Today all modern browsers support the non-prefixed border-radius property. As such, there is no .border-radius() mixin, but Preboot does include shortcuts for quickly rounding two corners on a particular side of an object.

-{% highlight css %} -.border-top-radius(@radius) { - border-top-right-radius: @radius; - border-top-left-radius: @radius; -} -.border-right-radius(@radius) { - border-bottom-right-radius: @radius; - border-top-right-radius: @radius; -} -.border-bottom-radius(@radius) { - border-bottom-right-radius: @radius; - border-bottom-left-radius: @radius; -} -.border-left-radius(@radius) { - border-bottom-left-radius: @radius; - border-top-left-radius: @radius; -} -{% endhighlight %} - -

Box (Drop) shadows

-

If your target audience is using the latest and greatest browsers and devices, be sure to just use the box-shadow property on its own. If you need support for older Android (pre-v4) and iOS devices (pre-iOS 5), use the mixin to pick up the required -webkit prefix.

-

Be sure to use rgba() colors in your box shadows so they blend as seamlessly as possible with backgrounds.

-{% highlight css %} -.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) { - -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 - box-shadow: @shadow; -} -{% endhighlight %} - -

Transitions

-

Three mixins for flexibility. Set all transition information with one, or specify a separate delay and duration as needed.

-{% highlight css %} -.transition(@transition) { - -webkit-transition: @transition; - transition: @transition; -} -.transition-property(@transition-property) { - -webkit-transition-property: @transition-property; - transition-property: @transition-property; -} -.transition-delay(@transition-delay) { - -webkit-transition-delay: @transition-delay; - transition-delay: @transition-delay; -} -.transition-duration(@transition-duration) { - -webkit-transition-duration: @transition-duration; - transition-duration: @transition-duration; -} -.transition-transform(@transition) { - -webkit-transition: -webkit-transform @transition; - -moz-transition: -moz-transform @transition; - -o-transition: -o-transform @transition; - transition: transform @transition; -} -{% endhighlight %} - -

Transformations

-

Rorate, scale, translate (move), or skew any object.

-{% highlight css %} -.rotate(@degrees) { - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); // IE9 only - transform: rotate(@degrees); -} -.scale(@ratio; @ratio-y...) { - -webkit-transform: scale(@ratio, @ratio-y); - -ms-transform: scale(@ratio, @ratio-y); // IE9 only - transform: scale(@ratio, @ratio-y); -} -.translate(@x; @y) { - -webkit-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); // IE9 only - transform: translate(@x, @y); -} -.skew(@x; @y) { - -webkit-transform: skew(@x, @y); - -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ - transform: skew(@x, @y); -} -.translate3d(@x; @y; @z) { - -webkit-transform: translate3d(@x, @y, @z); - transform: translate3d(@x, @y, @z); -} - -.rotateX(@degrees) { - -webkit-transform: rotateX(@degrees); - -ms-transform: rotateX(@degrees); // IE9 only - transform: rotateX(@degrees); -} -.rotateY(@degrees) { - -webkit-transform: rotateY(@degrees); - -ms-transform: rotateY(@degrees); // IE9 only - transform: rotateY(@degrees); -} -.perspective(@perspective) { - -webkit-perspective: @perspective; - -moz-perspective: @perspective; - perspective: @perspective; -} -.perspective-origin(@perspective) { - -webkit-perspective-origin: @perspective; - -moz-perspective-origin: @perspective; - perspective-origin: @perspective; -} -.transform-origin(@origin) { - -webkit-transform-origin: @origin; - -moz-transform-origin: @origin; - -ms-transform-origin: @origin; // IE9 only - transform-origin: @origin; -} -{% endhighlight %} - -

Animations

-

A single mixin for using all CSS3's animation properties in one declarations and other mixins for individual properties.

-{% highlight css %} -.animation(@animation) { - -webkit-animation: @animation; - animation: @animation; -} -.animation-name(@name) { - -webkit-animation-name: @name; - animation-name: @name; -} -.animation-duration(@duration) { - -webkit-animation-duration: @duration; - animation-duration: @duration; -} -.animation-timing-function(@timing-function) { - -webkit-animation-timing-function: @timing-function; - animation-timing-function: @timing-function; -} -.animation-delay(@delay) { - -webkit-animation-delay: @delay; - animation-delay: @delay; -} -.animation-iteration-count(@iteration-count) { - -webkit-animation-iteration-count: @iteration-count; - animation-iteration-count: @iteration-count; -} -.animation-direction(@direction) { - -webkit-animation-direction: @direction; - animation-direction: @direction; -} -{% endhighlight %} - -

Opacity

-

Set the opacity for all browsers and provide a filter fallback for IE8.

-{% highlight css %} -.opacity(@opacity) { - opacity: @opacity; - // IE8 filter - @opacity-ie: (@opacity * 100); - filter: ~"alpha(opacity=@{opacity-ie})"; -} -{% endhighlight %} - -

Placeholder text

-

Provide context for form controls within each field.

-{% highlight css %} -.placeholder(@color: @input-color-placeholder) { - &:-moz-placeholder { color: @color; } // Firefox 4-18 - &::-moz-placeholder { color: @color; } // Firefox 19+ - &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ - &::-webkit-input-placeholder { color: @color; } // Safari and Chrome -} -{% endhighlight %} - -

Columns

-

Generate columns via CSS within a single element.

-{% highlight css %} -.content-columns(@width; @count; @gap) { - -webkit-column-width: @width; - -moz-column-width: @width; - column-width: @width; - -webkit-column-count: @count; - -moz-column-count: @count; - column-count: @count; - -webkit-column-gap: @gap; - -moz-column-gap: @gap; - column-gap: @gap; -} -{% endhighlight %} - -

Gradients

-

Easily turn any two colors into a background gradient. Get more advanced and set a direction, use three colors, or use a radial gradient. With a single mixin you get all the prefixed syntaxes you'll need.

-{% highlight css %} -#gradient > .vertical(#333; #000); -#gradient > .horizontal(#333; #000); -#gradient > .radial(#333; #000); -{% endhighlight %} -

You can also specify the angle of a standard two-color, linear gradient:

-{% highlight css %} -#gradient > .directional(#333; #000; 45deg); -{% endhighlight %} -

If you need a barber-stripe style gradient, that's easy, too. Just specify a single color and we'll overlay a translucent white stripe.

-{% highlight css %} -#gradient > .striped(#333; #000; 45deg); -{% endhighlight %} -

Up the ante and use three colors instead. Set the first color, the second color, the second color's color stop (a decimal value like 0.25), and the third color with these mixins:

-{% highlight css %} -#gradient > .vertical-three-colors(#777; #333; .25; #000); -#gradient > .horizontal-three-colors(#777; #333; .25; #000); -{% endhighlight %} -

Heads up! Should you ever need to remove a gradient, be sure to remove any IE-specific filter you may have added. You can do that by using .reset-filter() mixin alignside background-image: none;.

- - -

Utility mixins

-

Utility mixins are mixins that combine otherwise unrelated CSS properties to achieve a specific goal or task.

- -

Clearfix

-

Forget adding class="clearfix" to any element and instead add the .clearfix() mixin where appropriate. Uses the micro clearfix from Nicolas Gallager.

-{% highlight css %} -// Mixin -.clearfix() { - &:before, - &:after { - content: " "; - display: table; - } - &:after { - clear: both; - } -} - -// Usage -.container { - .clearfix(); -} -{% endhighlight %} - -

Horizontal centering

-

Quickly center any element within its parent. Requires width or max-width to be set.

-{% highlight css %} -// Mixin -.center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} - -// Usage -.container { - width: 940px; - .center-block(); -} -{% endhighlight %} - -

Sizing helpers

-

Specify the dimensions of an object more easily.

-{% highlight css %} -// Mixins -.size(@width; @height) { - width: @width; - height: @height; -} -.square(@size) { - .size(@size; @size); -} - -// Usage -.image { .size(400px; 300px); } -.avatar { .square(48px); } -{% endhighlight %} - -

Resizable textareas

-

Easily configure the resize options for any textarea, or any other element. Defaults to normal browser behavior (both).

-{% highlight css %} -.resizable(@direction: both) { - // Options: horizontal, vertical, both - resize: @direction; - // Safari fix - overflow: auto; -} -{% endhighlight %} - -

Truncating text

-

Easily truncate text with an ellipsis with a single mixin. Requires element to be block or inline-block level.

-{% highlight css %} -// Mixin -.text-truncate() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -// Usage -.branch-name { - display: inline-block; - max-width: 200px; - .text-truncate(); -} -{% endhighlight %} - -

Retina images

-

Specify two image paths and the @1x image dimensions, and Preboot will provide an @2x media query. If you have many images to serve, consider writing your retina image CSS manually in a single media query.

-{% highlight css %} -.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { - background-image: url("@{file-1x}"); - - @media - only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and ( min--moz-device-pixel-ratio: 2), - only screen and ( -o-min-device-pixel-ratio: 2/1), - only screen and ( min-device-pixel-ratio: 2), - only screen and ( min-resolution: 192dpi), - only screen and ( min-resolution: 2dppx) { - background-image: url("@{file-2x}"); - background-size: @width-1x @height-1x; - } -} - -// Usage -.jumbotron { - .retina-image("/img/bg-1x.png", "/img/bg-2x.png", 100px, 100px); -} -{% endhighlight %} -
- - - - -
- -

While Bootstrap is built on Less, it also has an official Sass port. We maintain it in a separate GitHub repository and handle updates with a conversion script.

- -

What's included

-

Since the Sass port has a separate repo and serves a slightly different audience, the contents of the project differ greatly from the main Bootstrap project. This ensures the Sass port is as compatible with as many Sass-based systems as possible.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathDescription
lib/Ruby gem code (Sass configuration, Rails and Compass integrations)
tasks/Converter scripts (turning upstream Less to Sass)
test/Compilation tests
templates/Compass package manifest
vendor/assets/Sass, JavaScript, and font files
RakefileInternal tasks, such as rake and convert
-
-

Visit the Sass port's GitHub repository to see this files in action.

- - -

Installation

-

Use the appropriate guide for your environment of choice.

- -

Rails

- -

bootstrap-sass is easy to drop into Rails with the asset pipeline.

- -

In your Gemfile you need to add the bootstrap-sass gem, and ensure that the sass-rails gem is present—it is added to new Rails applications by default.

- -{% highlight ruby %} -gem 'sass-rails', '>= 3.2' # sass-rails needs to be higher than 3.2 -gem 'bootstrap-sass', '~> 3.0.3.0' -{% endhighlight %} - -

bundle install and restart your server to make the files available through the pipeline.

- - -

Compass without Rails

- -

Install the gem:

- -{% highlight bash %} -gem install bootstrap-sass -{% endhighlight %} - -

If you have an existing Compass project:

- -{% highlight ruby %} -# config.rb: -require 'bootstrap-sass' -{% endhighlight %} - -{% highlight bash %} -bundle exec compass install bootstrap -{% endhighlight %} - -

If you are creating a new Compass project, you can generate it with bootstrap-sass support:

- -{% highlight bash %} -bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap -{% endhighlight %} - -

This will create a new Compass project with the following files in it:

- -
    -
  • _variables.scss — all of bootstrap variables (override them here). -
  • -
  • styles.scss — main project SCSS file, import `variables` and `bootstrap`.
  • -
- - -

Sass-only without Compass or Rails

- -

Require the gem, and load paths and Sass helpers will be configured automatically:

- -{% highlight ruby %} -require 'bootstrap-sass' -{% endhighlight %} - -

Using bootstrap-sass as a Bower package is still being tested. You can install it with:

- -{% highlight bash %} -bower install 'git://github.com/twbs/bootstrap-sass.git#v3.0.3.0' -{% endhighlight %} - -

JS and fonts

- -

If you are using Rails or Sprockets, see Usage. If none of Rails/Sprockets/Compass were detected the fonts will be referenced as:

- -{% highlight sass %} -"#{$icon-font-path}/#{$icon-font-name}.eot" -{% endhighlight %} - -

$icon-font-path defaults to bootstrap/. When not using an asset pipeline, you have to copy fonts and javascripts from the gem.

- -{% highlight bash %} -mkdir public/fonts -cp -r $(bundle show bootstrap-sass)/vendor/assets/fonts/ public/fonts/ -mkdir public/javascripts -cp -r $(bundle show bootstrap-sass)/vendor/assets/javascripts/ public/javascripts/ -{% endhighlight %} - -

In ruby you can get the assets' location in the filesystem like this:

- -{% highlight ruby %} -Bootstrap.stylesheets_path -Bootstrap.fonts_path -Bootstrap.javascripts_path -{% endhighlight %} - - -

Usage

- -

Sass

- -

Import Bootstrap into a Sass file (for example, application.css.scss) to get all of Bootstrap's styles, mixins and variables! We recommend against using //= require directives, since none of your other stylesheets will be able to access the Bootstrap mixins or variables.

- -{% highlight sass %} -@import "bootstrap"; -{% endhighlight %} - -

You can also include optional Bootstrap theme:

- -{% highlight sass %} -@import "bootstrap/theme"; -{% endhighlight %} - -

The full list of Bootstrap variables can be found in the Customizer. You can override these by simply redefining the variable before the @import directive, e.g.:

- -{% highlight sass %} -$navbar-default-bg: #312312; -$light-orange: #ff8c00; -$navbar-default-color: $light-orange; - -@import "bootstrap"; -{% endhighlight %} - -

You can also import components explicitly. To start with a full list of modules copy this file from the gem:

- -{% highlight bash %} -# copy and prepend "bootstrap/" to the @import paths: -sed 's/@import "/@import "bootstrap\//' \ -$(bundle show bootstrap-sass)/vendor/assets/stylesheets/bootstrap/bootstrap.scss > \ -app/assets/stylesheets/bootstrap-custom.scss -{% endhighlight %} - -

In your application.sass, replace @import 'bootstrap' with:

- -{% highlight sass %} -@import 'bootstrap-custom'; -{% endhighlight %} - -

Comment out any components you do not want from bootstrap-custom.

- -

JavaScript

- -

We have a helper that includes all Bootstrap javascripts. If you use Rails (or Sprockets separately), put this in your Javascript manifest (usually in application.js) to load the files in the [correct order](/vendor/assets/javascripts/bootstrap.js):

- -{% highlight js %} -// Loads all Bootstrap javascripts -//= require bootstrap -{% endhighlight %} - -

You can also load individual modules, provided you also require any dependencies. You can check dependencies in the [Bootstrap JS documentation][jsdocs].

- -{% highlight js %} -//= require bootstrap/scrollspy -//= require bootstrap/modal -//= require bootstrap/dropdown -{% endhighlight %} - - -
diff --git a/customize.html b/customize.html deleted file mode 100644 index 2b9e5d770..000000000 --- a/customize.html +++ /dev/null @@ -1,1722 +0,0 @@ ---- -layout: default -title: Customize and download -slug: customize -lead: Customize Bootstrap's components, LESS variables, and jQuery plugins to get your very own version. -base_url: "../" ---- - - -
-
- -

Choose which LESS files to compile into your custom build of Bootstrap. Not sure which files to use? Read through the CSS and Components pages in the docs.

- -
-
-

Common CSS

-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-

Components

-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-

JavaScript components

-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
- -

Utilities

-
- -
-
- -
-
-
-
- - - -
- -

Choose which jQuery plugins should be included in your custom JavaScript files. Unsure what to include? Read the JavaScript page in the docs.

-
-
-

Linked to components

-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
-

Magic

-
- -
-
- -
-
- -
-
- -
-
-
- -
-

Produces two files

-

All checked plugins will be compiled into a readable bootstrap.js and a minified bootstrap.min.js. We recommend you use the minified version in production.

-
- -
-

jQuery required

-

All plugins require the latest version of jQuery to be included.

-
-
- - - -
- -

Customize LESS variables to define colors, sizes and more inside your custom CSS stylesheets.

- -

Basics

- - -

Color system

-
-
- - - - - - -
-
- - - - -
-
- - -

Body scaffolding

-
-
- - -

Background color for <body>.

- - -

Global text color on <body>.

-
-
- - -

Global textual link color

- - -

Link hover color set via darken() function

-
-
- - -

Typography

-
-
-

Generic font variables

- - -

Default sans-serif fonts.

- - -

Default serif fonts.

- - -

Default monospace fonts for <code> and <pre>.

- -

Base type styes

- - - - - - - - - - -
-
-

Heading font sizes

- - - - - - - - - - - - -
-
- - -

Headings

-
-
- - - - -
-
- - - - -
-
- - -

Code blocks

-
-
- - - - -
-
- - - - - - -
-
- - -

Media queries breakpoints

-
-
- - -
-
- - -
-
- - -
-
- - -
-
- -

Layout and grid system

-
-
- - -

For @screen-sm-min and up.

-
-
- - -

For @screen-md-min and up.

-
-
-
- - -

For @screen-lg-min and up.

-
-
- -
-
- - -

Number of columns in the grid.

-
-
- - -

Padding between columns.

-
-
-
- - -

Point at which the navbar stops collapsing.

-
-
- - -

Components

- -

Padding

-
-
- - - - -
-
- - - - -
-
- - - - -
-
- -

Rounded corners

-
-
- - -
-
- - -
-
- - -
-
- -

Component active state

-
-
- - -

Global color for active items (e.g., navs or dropdowns)

-
-
- - -

Global background color for active items (e.g., navs or dropdowns)

-
-
- -

Carets

-
-
- - -
-
- - -
-
- - -

Buttons

-
-
- - -
-
- - -
-
-
-
-

Default

- - - - - - -

Primary

- - - - - - -

Info

- - - - - - -
-
-

Success

- - - - - - -

Warning

- - - - - - -

Danger

- - - - - - -
-
- - -

Form states and alerts

-
-
-

Success

- - - - - - -

Warning

- - - - - - -
-
-

Danger

- - - - - - -

Info

- - - - - - -
-
- - -

Alerts

- -

Base styles

-
-
- - -
-
- - -
-
- - -
-
- -
-
-

Warning

- - - - - - - -

Success

- - - - - - -
-
-

Danger

- - - - - - - -

Info

- - - - - - -
-
- - -

Navbar

- -

Base styles

-
-
- - - - -
-
- - - - -
-
- - -
-
- -
-
-

Default navbar

-

Basics

- - - - - - - -

Links

- - - - - - - - - - - - - - - -

Brand

- - - - - - - -

Toggle

- - - - - - -
- -
-

Inverted navbar

- -

Basics

- - - - - - - -

Links

- - - - - - - - - - - - - - - -

Brand

- - - - - - - -

Toggle

- - - - - - -
-
- - -

Nav

- -

Default nav

-
-
-

Common values

- - - - - - - - - - - - - -

Pills

- - - - -
-
-

Tabs

- - - - - - - - - - - - - - -
-
- - -

Tables

-
-
- - -

Default padding for <th>s and <td>s

- - -

Default padding cells in .table-condensed

-
-
- - -

Default background color used for all tables.

- - -

Background color used for .table-striped.

-
-
- - -

Background color used for .table-hover.

- - -

Border color for table and cell borders.

-
-
- - -

Forms

- -

Inputs

-
-
- - -

Text color for <input>s

- - -

<input> background color

-
-
- - -

<input> border color

- - -

<input> border radius

-
-
- - -

Placeholder text color

-
-
- -

Input states

-
-
- - -

Border color for inputs on focus

-
-
- - -

<input disabled> background color

-
-
- -

Input sizes

-
-
- - -

Default .form-control height

-
-
- - -

Large .form-control height

-
-
- - -

Small .form-control height

-
-
- -

Legend

-
-
- - -
-
- - -
-
- -

Input groups

-
-
- - -

Background color for textual input addons

-
-
- - -

Border color for textual input addons

-
-
- - -

Dropdowns

-
-
-

Dropdown menu

- - -

Dropdown menu background color

- - -

Dropdown menu border color

- - -

Dropdown menu border color for IE8

- - -

Indicator arrow for showing an element has a dropdown

- - -

Dropdown divider top border color

- - -

Text color for headers within dropdown menus

-
-
-

Dropdown items

- - -

Dropdown text color

- - - -

Hovered dropdown menu entry text color

- - -

Hovered dropdown menu entry background color

- - - -

Active dropdown menu entry text color

- - -

Active dropdown menu entry background color

- - - -

Disabled dropdown menu entry background color

-
-
- - -

Panels and wells

- -

Common panel styles

-
-
- - - - -

Border color for elements within panels

-
-
- - - - -
-
-

Contextual panel colors

-
-
-

Default

- - - - - - - -

Primary

- - - - - - - -

Success

- - - - - - -
-
-

Info

- - - - - - - -

Warning

- - - - - - - -

Danger

- - - - - - -
-
- -

Wells

- - - - - - -

Accordion

- - - - -

Badges

- -

Base styles

-
-
- - - - -
-
- - -
-
- - -
-
- -

States

-
-
- - -

Linked badge text color on hover

-
-
- - -

Badge text color in active nav link

-
-
- - -

Badge background color in active nav link

-
-
- - -

Breadcrumbs

-
-
- - -

Breadcrumb text color

- - -

Breadcrumb background color

-
-
- - -

Text color of current page in the breadcrumb

- - -

Textual separator for between breadcrumb elements

-
-
- -

Jumbotron

-
-
- - - - - - -
-
- - - - -
-
- - -

Modals

- -

Base modal

-
-
- - -

Padding applied to the modal body

-
-
- - -

Modal backdrop background color

-
-
- - -

Modal backdrop opacity

-
-
- -

Modal header and footer

-
-
- - -

Padding applied to the modal title

-
-
- - -

Modal title line-height

-
-
- - -

Modal header border color

- - -

Modal footer border color

-
-
- -

Modal content

-
-
- - -

Background color of modal content area

-
-
- - -

Modal content border color

-
-
- - -

Modal content border color for IE8

-
-
- - - -
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
- - -

List group

- -

Base styles

-
-
- - -

Background color on .list-group-item

-
-
- - -

.list-group-item border color

-
-
- - -

List group border radius

-
-
- -

Hover and active states

-
-
- - -

Background color of single list elements on hover

-
-
-
-
- - -

Text color of active list elements

-
-
- - -

Background color of active list elements

-
-
- - -

Border color of active list elements

-
-
- - -

Thumbnails

- -

Base thumbnail

-
-
- - -

Padding around the thumbnail image

- - -

Thumbnail background color

-
-
- - -

Thumbnail border color

- - -

Thumbnail border radius

-
-
- -

Thumbnail captions

-
-
- - -

Padding around the thumbnail caption

-
-
- - -

Custom text color for thumbnail captions

-
-
- - -

Progress bars

- -

Shared styles

-
-
- - -

Background color of the whole progress component

-
-
- - -

Info progress bar text color

-
-
- - -

Info progress bar text shadow

-
-
- - -

Default progress bar color

-
-
- -

Contextual states

-
-
- - -

Success progress bar color

- - -

Info progress bar color

-
-
- - -

Warning progress bar color

- - -

Danger progress bar color

-
-
- - -

Pagination

- -

Default styles

-
-
- - -

Background color

-
-
- - -

Border color

-
-
- - -

Background hover color

-
-
- -

Disabled and active states

-
-
- - -

Disabled text color

-
-
- - -

Active background color

-
-
- - -

Active text color

-
-
- - -

Pager

-
-
- - -

Pager border radius

-
-
- - -

Pager disabled state color

-
-
- - -

Labels

-
-
- - -

Default label text color

-
-
- - -

Default text color of a linked label

-
-
- - -

Default label background color

-
-
- -
-
- - -

Primary label background color

- - -

Success label background color

-
-
- - -

Info label background color

- - -

Warning label background color

-
-
- - -

Danger label background color

-
-
- - -

Tooltips and popovers

- -

Tooltip

-
-
- - -

Tooltip text color

- - -

Tooltip background color

-
-
- - -

Tooltip arrow width

- - -

Tooltip arrow color

-
-
- - -

Tooltip max width

-
-
- -

Popovers

- -

Base styles

-
-
- - -

Popover body background color

- - -

Popover maximum width

-
-
- - -

Popover border color

- - -

Popover fallback border color

-
-
- - -

Popover title background color

-
-
- -

Popover arrows

-
-
- - -

Popover arrow width

-
-
- - -

Popover arrow color

-
-
-
-
- - -

Popover outer arrow width

-
-
- - -

Popover outer arrow color

-
-
- - -

Popover outer arrow fallback color

-
-
- - -

Close button

-
-
- - -
-
- - -
-
- - -
-
- - -

Type

-
-
- - -

Text muted color

-
-
- - -

Abbreviations and acronyms border color

-
-
- - -

Headings small color

-
-
- - -

Blockquote small color

-
-
- - -

Blockquote border color

-
-
- - -

Page header border color

-
-
- - -

Other

-
-
- - -

Horizontal line color

-
-
- - -

Horizontal offset for forms and lists

-
-
-
- -
- -

Hooray! Your custom version of Bootstrap is now ready to be compiled. Just click the button below to finish the process.

-
- -
-
-
diff --git a/docs-assets/css/docs.css b/docs-assets/css/docs.css deleted file mode 100644 index 8a2f89c06..000000000 --- a/docs-assets/css/docs.css +++ /dev/null @@ -1,1230 +0,0 @@ -/*! - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ - - -/* - * Bootstrap Documentation - * Special styles for presenting Bootstrap's documentation and code examples. - * - * Table of contents: - * - * Scaffolding - * Main navigation - * Footer - * Social buttons - * Homepage - * Page headers - * Old docs callout - * Ads - * Side navigation - * Docs sections - * Callouts - * Grid styles - * Examples - * Code snippets (highlight) - * Responsive tests - * Glyphicons - * Customizer - * Miscellaneous - */ - -/*csslint ids: false, fallback-colors: false*/ - -/* - * Scaffolding - * - * Update the basics of our documents to prep for docs content. - */ - -body { - position: relative; /* For scrollyspy */ - padding-top: 50px; /* Account for fixed navbar */ -} - -/* Keep code small in tables on account of limited space */ -.table code { - font-size: 13px; - font-weight: normal; -} - -/* Outline button for use within the docs */ -.btn-outline { - color: #563d7c; - background-color: #fff; - border-color: #e5e5e5; -} -.btn-outline:hover, -.btn-outline:focus, -.btn-outline:active { - color: #fff; - background-color: #563d7c; - border-color: #563d7c; -} - -/* Inverted outline button (white on dark) */ -.btn-outline-inverse { - color: #fff; - background-color: transparent; - border-color: #cdbfe3; -} -.btn-outline-inverse:hover, -.btn-outline-inverse:focus, -.btn-outline-inverse:active { - color: #563d7c; - text-shadow: none; - background-color: #fff; - border-color: #fff; -} - - -/* - * Main navigation - * - * Turn the `.navbar` at the top of the docs purple. - */ - -.bs-docs-nav { - text-shadow: 0 -1px 0 rgba(0,0,0,.15); - background-color: #563d7c; - border-color: #463265; - box-shadow: 0 1px 0 rgba(255,255,255,.1); -} -.bs-docs-nav .navbar-collapse { - border-color: #463265; -} -.bs-docs-nav .navbar-brand { - color: #fff; -} -.bs-docs-nav .navbar-nav > li > a { - color: #cdbfe3; -} -.bs-docs-nav .navbar-nav > li > a:hover { - color: #fff; -} -.bs-docs-nav .navbar-nav > .active > a, -.bs-docs-nav .navbar-nav > .active > a:hover { - color: #fff; - background-color: #463265; -} -.bs-docs-nav .navbar-toggle { - border-color: #563d7c; -} -.bs-docs-nav .navbar-toggle:hover { - background-color: #463265; - border-color: #463265; -} - - -/* - * Footer - * - * Separated section of content at the bottom of all pages, save the homepage. - */ - -.bs-footer { - padding-top: 40px; - padding-bottom: 30px; - margin-top: 100px; - color: #777; - text-align: center; - border-top: 1px solid #e5e5e5; -} -.footer-links { - margin: 10px 0; - padding-left: 0; -} -.footer-links li { - display: inline; - padding: 0 2px; -} -.footer-links li:first-child { - padding-left: 0; -} - -@media (min-width: 768px) { - .bs-footer { - text-align: left; - } - .bs-footer p { - margin-bottom: 0; - } -} - - -/* - * Social buttons - * - * Twitter and GitHub social action buttons (for homepage and footer). - */ - -.bs-social { - margin-top: 20px; - margin-bottom: 20px; - text-align: center; -} -.bs-social-buttons { - display: inline-block; - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.bs-social-buttons li { - display: inline-block; - line-height: 1; - padding: 5px 8px; -} -.bs-social-buttons .twitter-follow-button { - width: 225px !important; -} -.bs-social-buttons .twitter-share-button { - width: 98px !important; -} -/* Style the GitHub buttons via CSS instead of inline attributes */ -.github-btn { - border: 0; - overflow: hidden; -} - -@media (min-width: 768px) { - .bs-social { - text-align: left; - } - .bs-social-buttons li:first-child { - padding-left: 0; - } -} - - -/* - * Topography, yo! - * - * Apply the map background via base64 and relevant colors where we need 'em. - */ - -.bs-docs-home, -.bs-header { - color: #cdbfe3; - background-color: #563d7c; - background-image: url(data:image/png;base64,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); -} - - -/* - * Homepage - * - * Tweaks to the custom homepage and the masthead (main jumbotron). - */ - - /* Masthead (headings and download button) */ - .bs-masthead { - position: relative; - padding: 30px 15px; - text-align: center; - text-shadow: 0 1px 0 rgba(0,0,0,.15); -} -.bs-masthead h1 { - font-size: 50px; - line-height: 1; - color: #fff; -} -.bs-masthead .btn-outline-inverse { - margin: 10px; -} - -/* Links to project-level content like the repo, Expo, etc */ -.bs-masthead-links { - margin-top: 20px; - margin-bottom: 40px; - padding: 0 15px; - list-style: none; - text-align: center; -} -.bs-masthead-links li { - display: inline; -} -.bs-masthead-links li + li { - margin-left: 20px; -} -.bs-masthead-links a { - color: #fff; -} - -@media (min-width: 768px) { - .bs-masthead { - text-align: left; - padding-top: 140px; - padding-bottom: 140px; - } - .bs-masthead h1 { - font-size: 100px; - } - .bs-masthead .lead { - margin-right: 25%; - font-size: 30px; - } - .bs-masthead .btn-outline-inverse { - width: auto; - margin: 20px 5px 20px 0; - padding: 18px 24px; - font-size: 21px; - } - .bs-masthead-links { - padding: 0; - text-align: left; - } -} - - -/* - * Page headers - * - * Jumbotron-esque headers at the top of every page that's not the homepage. - */ - - -/* Page headers */ -.bs-header { - padding: 30px 15px 40px; /* side padding builds on .container 15px, so 30px */ - font-size: 16px; - text-align: center; - text-shadow: 0 1px 0 rgba(0,0,0,.15); -} -.bs-header h1 { - color: #fff; -} -.bs-header p { - font-weight: 300; - line-height: 1.5; -} -.bs-header .container { - position: relative; -} - -@media (min-width: 768px) { - .bs-header { - font-size: 21px; - text-align: left; - } - .bs-header h1 { - font-size: 60px; - line-height: 1; - } -} - -@media (min-width: 992px) { - .bs-header h1, - .bs-header p { - margin-right: 380px; - } -} - - -/* - * Carbon ads - * - * Single display ad that shows on all pages (except homepage) in page headers. - * The hella `!important` is required for any pre-set property. - */ - -.carbonad { - width: auto !important; - margin: 50px -30px -40px !important; - padding: 20px !important; - overflow: hidden; /* clearfix */ - height: auto !important; - font-size: 13px !important; - line-height: 16px !important; - text-align: left; - background: #463265 !important; - border: 0 !important; - box-shadow: inset 0 3px 5px rgba(0,0,0,.075); -} -.carbonad-img { - margin: 0 !important; -} -.carbonad-text, -.carbonad-tag { - float: none !important; - display: block !important; - width: auto !important; - height: auto !important; - margin-left: 145px !important; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; -} -.carbonad-text { - padding-top: 0 !important; -} -.carbonad-tag { - color: #cdbfe3 !important; - text-align: left !important; -} -.carbonad-text a, -.carbonad-tag a { - color: #fff !important; -} -.carbonad #azcarbon > img { - display: none; /* hide what I assume are tracking images */ -} - -@media (min-width: 768px) { - .carbonad { - margin: 0 !important; - border-radius: 4px; - box-shadow: inset 0 3px 5px rgba(0,0,0,.075), 0 1px 0 rgba(255,255,255,.1); - } -} - -@media (min-width: 992px) { - .carbonad { - position: absolute; - top: 20px; - right: 15px; /* 15px instead of 0 since box-sizing */ - padding: 15px !important; - width: 330px !important; - } -} - -/* Homepage variations */ -.bs-docs-home .carbonad { - margin: 0 -15px 40px !important; -} -@media (min-width: 480px) { - .bs-docs-home .carbonad { - width: 330px !important; - margin: 0 auto 40px !important; - border-radius: 4px; - } -} -@media (min-width: 768px) { - .bs-docs-home .carbonad { - float: left; - width: 330px !important; - margin: 0 0 30px !important; - } - .bs-docs-home .bs-social, - .bs-docs-home .bs-masthead-links { - margin-left: 350px; - } - .bs-docs-home .bs-social { - margin-bottom: 10px; - } - .bs-docs-home .bs-masthead-links { - margin-top: 10px; - } -} -@media (min-width: 992px) { - .bs-docs-home .carbonad { - position: static; - } -} -@media (min-width: 1170px) { - .bs-docs-home .carbonad { - margin-top: -25px !important; - } -} - - -/* - * Callout for 2.3.2 docs - * - * Only appears below page headers (not on the homepage). The homepage gets its - * own link with the masthead links. - */ - -.bs-old-docs { - padding: 15px 20px; - color: #777; - background-color: #fafafa; - border-top: 1px solid #fff; - border-bottom: 1px solid #e5e5e5; -} -.bs-old-docs strong { - color: #555; -} - - -/* - * Side navigation - * - * Scrollspy and affixed enhanced navigation to highlight sections and secondary - * sections of docs content. - */ - -/* By default it's not affixed in mobile views, so undo that */ -.bs-sidebar.affix { - position: static; -} - -/* First level of nav */ -.bs-sidenav { - margin-top: 30px; - margin-bottom: 30px; - padding-top: 10px; - padding-bottom: 10px; - text-shadow: 0 1px 0 #fff; - background-color: #f7f5fa; - border-radius: 5px; -} - -/* All levels of nav */ -.bs-sidebar .nav > li > a { - display: block; - color: #716b7a; - padding: 5px 20px; -} -.bs-sidebar .nav > li > a:hover, -.bs-sidebar .nav > li > a:focus { - text-decoration: none; - background-color: #e5e3e9; - border-right: 1px solid #dbd8e0; -} -.bs-sidebar .nav > .active > a, -.bs-sidebar .nav > .active:hover > a, -.bs-sidebar .nav > .active:focus > a { - font-weight: bold; - color: #563d7c; - background-color: transparent; - border-right: 1px solid #563d7c; -} - -/* Nav: second level (shown on .active) */ -.bs-sidebar .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - margin-bottom: 8px; -} -.bs-sidebar .nav .nav > li > a { - padding-top: 3px; - padding-bottom: 3px; - padding-left: 30px; - font-size: 90%; -} - -/* Show and affix the side nav when space allows it */ -@media (min-width: 992px) { - .bs-sidebar .nav > .active > ul { - display: block; - } - /* Widen the fixed sidebar */ - .bs-sidebar.affix, - .bs-sidebar.affix-bottom { - width: 213px; - } - .bs-sidebar.affix { - position: fixed; /* Undo the static from mobile first approach */ - top: 80px; - } - .bs-sidebar.affix-bottom { - position: absolute; /* Undo the static from mobile first approach */ - } - .bs-sidebar.affix-bottom .bs-sidenav, - .bs-sidebar.affix .bs-sidenav { - margin-top: 0; - margin-bottom: 0; - } -} -@media (min-width: 1200px) { - /* Widen the fixed sidebar again */ - .bs-sidebar.affix-bottom, - .bs-sidebar.affix { - width: 263px; - } -} - - -/* - * Docs sections - * - * Content blocks for each component or feature. - */ - -/* Space things out */ -.bs-docs-section + .bs-docs-section { - padding-top: 40px; -} - -/* Janky fix for preventing navbar from overlapping */ -h1[id] { - padding-top: 80px; - margin-top: -45px; -} - - -/* - * Callouts - * - * Not quite alerts, but custom and helpful notes for folks reading the docs. - * Requires a base and modifier class. - */ - -/* Common styles for all types */ -.bs-callout { - margin: 20px 0; - padding: 20px; - border-left: 3px solid #eee; -} -.bs-callout h4 { - margin-top: 0; - margin-bottom: 5px; -} -.bs-callout p:last-child { - margin-bottom: 0; -} - -/* Variations */ -.bs-callout-danger { - background-color: #fdf7f7; - border-color: #eed3d7; -} -.bs-callout-danger h4 { - color: #b94a48; -} -.bs-callout-warning { - background-color: #faf8f0; - border-color: #faebcc; -} -.bs-callout-warning h4 { - color: #8a6d3b; -} -.bs-callout-info { - background-color: #f4f8fa; - border-color: #bce8f1; -} -.bs-callout-info h4 { - color: #34789a; -} - - -/* - * Color swatches - * - * Color swatches and associated values for our grayscale and brand colors. - */ - -.color-swatches { - margin: 0 -5px; - overflow: hidden; /* clearfix */ -} -.color-swatch { - float: left; - width: 100px; - height: 100px; - margin: 0 5px; - border-radius: 3px; -} -.color-swatches .gray-darker { background-color: #222; } -.color-swatches .gray-dark { background-color: #333; } -.color-swatches .gray { background-color: #555; } -.color-swatches .gray-light { background-color: #999; } -.color-swatches .gray-lighter { background-color: #eee; } -.color-swatches .brand-primary { background-color: #428bca; } -.color-swatches .brand-success { background-color: #5cb85c; } -.color-swatches .brand-warning { background-color: #f0ad4e; } -.color-swatches .brand-danger { background-color: #d9534f; } -.color-swatches .brand-info { background-color: #5bc0de; } - - -/* - * Team members - * - * Avatars, names, and usernames for core team. - */ - -.bs-team .team-member { - color: #555; - line-height: 32px; -} -.bs-team .team-member:hover { - color: #333; - text-decoration: none; -} -.bs-team .github-btn { - float: right; - margin-top: 6px; - width: 180px; - height: 20px; -} -.bs-team img { - float: left; - width: 32px; - margin-right: 10px; - border-radius: 4px; -} - - -/* - * Grid examples - * - * Highlight the grid columns within the docs so folks can see their padding, - * alignment, sizing, etc. - */ - -.show-grid { - margin-bottom: 15px; -} -.show-grid [class^="col-"] { - padding-top: 10px; - padding-bottom: 10px; - background-color: #eee; - background-color: rgba(86,61,124,.15); - border: 1px solid #ddd; - border: 1px solid rgba(86,61,124,.2); -} - - -/* - * Examples - * - * Isolated sections of example content for each component or feature. Usually - * followed by a code snippet. - */ - -.bs-example { - position: relative; - padding: 45px 15px 15px; - margin: 0 -15px 15px; - background-color: #fafafa; - box-shadow: inset 0 3px 6px rgba(0,0,0,.05); - border-color: #e5e5e5 #eee #eee; - border-style: solid; - border-width: 1px 0; -} -/* Echo out a label for the example */ -.bs-example:after { - content: "Example"; - position: absolute; - top: 15px; - left: 15px; - font-size: 12px; - font-weight: bold; - color: #bbb; - text-transform: uppercase; - letter-spacing: 1px; -} - -/* Tweak display of the code snippets when following an example */ -.bs-example + .highlight { - margin: -15px -15px 15px; - border-radius: 0; - border-width: 0 0 1px; -} - -/* Make the examples and snippets not full-width */ -@media (min-width: 768px) { - .bs-example { - margin-left: 0; - margin-right: 0; - background-color: #fff; - border-width: 1px; - border-color: #ddd; - border-radius: 4px 4px 0 0; - box-shadow: none; - } - .bs-example + .highlight { - margin-top: -16px; - margin-left: 0; - margin-right: 0; - border-width: 1px; - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - } -} - -/* Undo width of container */ -.bs-example .container { - width: auto; -} - -/* Tweak content of examples for optimum awesome */ -.bs-example > p:last-child, -.bs-example > ul:last-child, -.bs-example > ol:last-child, -.bs-example > blockquote:last-child, -.bs-example > .form-control:last-child, -.bs-example > .table:last-child, -.bs-example > .navbar:last-child, -.bs-example > .jumbotron:last-child, -.bs-example > .alert:last-child, -.bs-example > .panel:last-child, -.bs-example > .list-group:last-child, -.bs-example > .well:last-child, -.bs-example > .progress:last-child, -.bs-example > .table-responsive:last-child > .table { - margin-bottom: 0; -} -.bs-example > p > .close { - float: none; -} - -/* Typography */ -.bs-example-type .table .type-info { - color: #999; - vertical-align: middle; -} -.bs-example-type .table td { - padding: 15px 0; - border-color: #eee; -} -.bs-example-type .table tr:first-child td { - border-top: 0; -} -.bs-example-type h1, -.bs-example-type h2, -.bs-example-type h3, -.bs-example-type h4, -.bs-example-type h5, -.bs-example-type h6 { - margin: 0; -} - -/* Contextual background colors */ -.bs-example-bg-classes p { - padding: 15px; -} - -/* Images */ -.bs-example > .img-circle, -.bs-example > .img-rounded, -.bs-example > .img-thumbnail { - margin: 5px; -} - -/* Tables */ -.bs-example > .table-responsive > .table { - background-color: #fff; -} - -/* Buttons */ -.bs-example > .btn, -.bs-example > .btn-group { - margin-top: 5px; - margin-bottom: 5px; -} -.bs-example > .btn-toolbar + .btn-toolbar { - margin-top: 10px; -} - -/* Forms */ -.bs-example-control-sizing select, -.bs-example-control-sizing input[type="text"] + input[type="text"] { - margin-top: 10px; -} -.bs-example-form .input-group { - margin-bottom: 10px; -} -.bs-example > textarea.form-control { - resize: vertical; -} - -/* List groups */ -.bs-example > .list-group { - max-width: 400px; -} - -/* Navbars */ -.bs-example .navbar:last-child { - margin-bottom: 0; -} -.bs-navbar-top-example, -.bs-navbar-bottom-example { - z-index: 1; - padding: 0; - overflow: hidden; /* cut the drop shadows off */ -} -.bs-navbar-top-example .navbar-header, -.bs-navbar-bottom-example .navbar-header { - margin-left: 0; -} -.bs-navbar-top-example .navbar-fixed-top, -.bs-navbar-bottom-example .navbar-fixed-bottom { - position: relative; - margin-left: 0; - margin-right: 0; -} -.bs-navbar-top-example { - padding-bottom: 45px; -} -.bs-navbar-top-example:after { - top: auto; - bottom: 15px; -} -.bs-navbar-top-example .navbar-fixed-top { - top: -1px; -} -.bs-navbar-bottom-example { - padding-top: 45px; -} -.bs-navbar-bottom-example .navbar-fixed-bottom { - bottom: -1px; -} -.bs-navbar-bottom-example .navbar { - margin-bottom: 0; -} -@media (min-width: 768px) { - .bs-navbar-top-example .navbar-fixed-top, - .bs-navbar-bottom-example .navbar-fixed-bottom { - position: absolute; - } - .bs-navbar-top-example { - border-radius: 0 0 4px 4px; - } - .bs-navbar-bottom-example { - border-radius: 4px 4px 0 0; - } -} - -/* Pagination */ -.bs-example .pagination { - margin-top: 10px; - margin-bottom: 10px; -} - -/* Pager */ -.bs-example > .pager { - margin-top: 0; -} - -/* Example modals */ -.bs-example-modal { - background-color: #f5f5f5; -} -.bs-example-modal .modal { - position: relative; - top: auto; - right: auto; - left: auto; - bottom: auto; - z-index: 1; - display: block; -} -.bs-example-modal .modal-dialog { - left: auto; - margin-left: auto; - margin-right: auto; -} - -/* Example dropdowns */ -.bs-example > .dropdown > .dropdown-menu { - position: static; - display: block; - margin-bottom: 5px; -} - -/* Example tabbable tabs */ -.bs-example-tabs .nav-tabs { - margin-bottom: 15px; -} - -/* Tooltips */ -.bs-example-tooltips { - text-align: center; -} -.bs-example-tooltips > .btn { - margin-top: 5px; - margin-bottom: 5px; -} - -/* Popovers */ -.bs-example-popover { - padding-bottom: 24px; - background-color: #f9f9f9; -} -.bs-example-popover .popover { - position: relative; - display: block; - float: left; - width: 260px; - margin: 20px; -} - -/* Scrollspy demo on fixed height div */ -.scrollspy-example { - position: relative; - height: 200px; - margin-top: 10px; - overflow: auto; -} - - -/* - * Code snippets - * - * Generated via Pygments and Jekyll, these are snippets of HTML, CSS, and JS. - */ - -.highlight { - padding: 9px 14px; - margin-bottom: 14px; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - border-radius: 4px; -} -.highlight pre { - padding: 0; - margin-top: 0; - margin-bottom: 0; - background-color: transparent; - border: 0; - white-space: nowrap; -} -.highlight pre code { - font-size: inherit; - color: #333; /* Effectively the base text color */ -} -.highlight pre .lineno { - display: inline-block; - width: 22px; - padding-right: 5px; - margin-right: 10px; - text-align: right; - color: #bebec5; -} - - -/* - * Responsive tests - * - * Generate a set of tests to show the responsive utilities in action. - */ - -/* Responsive (scrollable) doc tables */ -.table-responsive .highlight pre { - white-space: normal; -} - -/* Utility classes table */ -.bs-table th small, -.responsive-utilities th small { - display: block; - font-weight: normal; - color: #999; -} -.responsive-utilities tbody th { - font-weight: normal; -} -.responsive-utilities td { - text-align: center; -} -.responsive-utilities td.is-visible { - color: #468847; - background-color: #dff0d8 !important; -} -.responsive-utilities td.is-hidden { - color: #ccc; - background-color: #f9f9f9 !important; -} - -/* Responsive tests */ -.responsive-utilities-test { - margin-top: 5px; -} -.responsive-utilities-test .col-xs-6 { - margin-bottom: 10px; -} -.responsive-utilities-test span { - display: block; - padding: 15px 10px; - font-size: 14px; - font-weight: bold; - line-height: 1.1; - text-align: center; - border-radius: 4px; -} -.visible-on .col-xs-6 .hidden-xs, -.visible-on .col-xs-6 .hidden-sm, -.visible-on .col-xs-6 .hidden-md, -.visible-on .col-xs-6 .hidden-lg, -.hidden-on .col-xs-6 .hidden-xs, -.hidden-on .col-xs-6 .hidden-sm, -.hidden-on .col-xs-6 .hidden-md, -.hidden-on .col-xs-6 .hidden-lg { - color: #999; - border: 1px solid #ddd; -} -.visible-on .col-xs-6 .visible-xs, -.visible-on .col-xs-6 .visible-sm, -.visible-on .col-xs-6 .visible-md, -.visible-on .col-xs-6 .visible-lg, -.hidden-on .col-xs-6 .visible-xs, -.hidden-on .col-xs-6 .visible-sm, -.hidden-on .col-xs-6 .visible-md, -.hidden-on .col-xs-6 .visible-lg { - color: #468847; - background-color: #dff0d8; - border: 1px solid #d6e9c6; -} - - -/* - * Glyphicons - * - * Special styles for displaying the icons and their classes in the docs. - */ - -.bs-glyphicons { - margin: 0 -19px 20px -16px; - overflow: hidden; -} -.bs-glyphicons-list { - padding-left: 0; - list-style: none; -} -.bs-glyphicons li { - float: left; - width: 25%; - height: 115px; - padding: 10px; - margin: 0 -1px -1px 0; - font-size: 10px; - line-height: 1.4; - text-align: center; - border: 1px solid #ddd; -} -.bs-glyphicons .glyphicon { - margin-top: 5px; - margin-bottom: 10px; - font-size: 24px; -} -.bs-glyphicons .glyphicon-class { - display: block; - text-align: center; - word-wrap: break-word; /* Help out IE10+ with class names */ -} -.bs-glyphicons li:hover { - background-color: rgba(86,61,124,.1); -} - -@media (min-width: 768px) { - .bs-glyphicons { - margin-left: 0; - margin-right: 0; - } - .bs-glyphicons li { - width: 12.5%; - font-size: 12px; - } -} - - -/* - * Customizer - * - * Since this is so form control heavy, we have quite a few styles to customize - * the display of inputs, headings, and more. Also included are all the download - * buttons and actions. - */ - -.bs-customizer .toggle { - float: right; - margin-top: 85px; /* On account of ghetto navbar fix */ -} - -/* Headings and form contrls */ -.bs-customizer label { - margin-top: 10px; - font-weight: 500; - color: #555; -} -.bs-customizer h2 { - margin-top: 0; - margin-bottom: 5px; - padding-top: 30px; -} -.bs-customizer h3 { - margin-bottom: 0; -} -.bs-customizer h4 { - margin-top: 15px; - margin-bottom: 0; -} -.bs-customizer .bs-callout h4 { - margin-top: 0; /* lame, but due to specificity we have to duplicate */ - margin-bottom: 5px; -} -.bs-customizer input[type="text"] { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - background-color: #fafafa; -} -.bs-customizer .help-block { - font-size: 12px; - margin-bottom: 5px; -} - -/* For the variables, use regular weight */ -#less-section label { - font-weight: normal; -} - -/* Downloads */ -.bs-customize-download .btn-outline { - padding: 20px; -} - -/* Error handling */ -.bs-customizer-alert { - position: fixed; - top: 51px; - left: 0; - right: 0; - z-index: 1030; - padding: 15px 0; - color: #fff; - background-color: #d9534f; - box-shadow: inset 0 1px 0 rgba(255,255,255,.25); - border-bottom: 1px solid #b94441; -} -.bs-customizer-alert .close { - margin-top: -4px; - font-size: 24px; -} -.bs-customizer-alert p { - margin-bottom: 0; -} -.bs-customizer-alert .glyphicon { - margin-right: 5px; -} -.bs-customizer-alert pre { - margin: 10px 0 0; - color: #fff; - background-color: #a83c3a; - border-color: #973634; - box-shadow: inset 0 2px 4px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); -} - - -/* - * Miscellaneous - * - * Odds and ends for optimum docs display. - */ - - /* About page */ - .bs-about { - font-size: 16px; - } - -/* Examples gallery: space out content better */ -.bs-examples h4 { - margin-bottom: 5px; -} -.bs-examples p { - margin-bottom: 20px; -} - -/* Pseudo :focus state for showing how it looks in the docs */ -#focusedInput { - border-color: rgba(82,168,236,.8); - outline: 0; - outline: thin dotted \9; /* IE6-9 */ - -moz-box-shadow: 0 0 8px rgba(82,168,236,.6); - box-shadow: 0 0 8px rgba(82,168,236,.6); -} - -/* Better spacing on download options in getting started */ -.bs-docs-dl-options h4 { - margin-top: 15px; - margin-bottom: 5px; -} diff --git a/docs-assets/css/pygments-manni.css b/docs-assets/css/pygments-manni.css deleted file mode 100644 index 1264b87f1..000000000 --- a/docs-assets/css/pygments-manni.css +++ /dev/null @@ -1,66 +0,0 @@ -.hll { background-color: #ffffcc } - /*{ background: #f0f3f3; }*/ -.c { color: #999; } /* Comment */ -.err { color: #AA0000; background-color: #FFAAAA } /* Error */ -.k { color: #006699; } /* Keyword */ -.o { color: #555555 } /* Operator */ -.cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ -.cp { color: #009999 } /* Comment.Preproc */ -.c1 { color: #999; } /* Comment.Single */ -.cs { color: #999; } /* Comment.Special */ -.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ -.ge { font-style: italic } /* Generic.Emph */ -.gr { color: #FF0000 } /* Generic.Error */ -.gh { color: #003300; } /* Generic.Heading */ -.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ -.go { color: #AAAAAA } /* Generic.Output */ -.gp { color: #000099; } /* Generic.Prompt */ -.gs { } /* Generic.Strong */ -.gu { color: #003300; } /* Generic.Subheading */ -.gt { color: #99CC66 } /* Generic.Traceback */ -.kc { color: #006699; } /* Keyword.Constant */ -.kd { color: #006699; } /* Keyword.Declaration */ -.kn { color: #006699; } /* Keyword.Namespace */ -.kp { color: #006699 } /* Keyword.Pseudo */ -.kr { color: #006699; } /* Keyword.Reserved */ -.kt { color: #007788; } /* Keyword.Type */ -.m { color: #FF6600 } /* Literal.Number */ -.s { color: #d44950 } /* Literal.String */ -.na { color: #4f9fcf } /* Name.Attribute */ -.nb { color: #336666 } /* Name.Builtin */ -.nc { color: #00AA88; } /* Name.Class */ -.no { color: #336600 } /* Name.Constant */ -.nd { color: #9999FF } /* Name.Decorator */ -.ni { color: #999999; } /* Name.Entity */ -.ne { color: #CC0000; } /* Name.Exception */ -.nf { color: #CC00FF } /* Name.Function */ -.nl { color: #9999FF } /* Name.Label */ -.nn { color: #00CCFF; } /* Name.Namespace */ -.nt { color: #2f6f9f; } /* Name.Tag */ -.nv { color: #003333 } /* Name.Variable */ -.ow { color: #000000; } /* Operator.Word */ -.w { color: #bbbbbb } /* Text.Whitespace */ -.mf { color: #FF6600 } /* Literal.Number.Float */ -.mh { color: #FF6600 } /* Literal.Number.Hex */ -.mi { color: #FF6600 } /* Literal.Number.Integer */ -.mo { color: #FF6600 } /* Literal.Number.Oct */ -.sb { color: #CC3300 } /* Literal.String.Backtick */ -.sc { color: #CC3300 } /* Literal.String.Char */ -.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ -.s2 { color: #CC3300 } /* Literal.String.Double */ -.se { color: #CC3300; } /* Literal.String.Escape */ -.sh { color: #CC3300 } /* Literal.String.Heredoc */ -.si { color: #AA0000 } /* Literal.String.Interpol */ -.sx { color: #CC3300 } /* Literal.String.Other */ -.sr { color: #33AAAA } /* Literal.String.Regex */ -.s1 { color: #CC3300 } /* Literal.String.Single */ -.ss { color: #FFCC33 } /* Literal.String.Symbol */ -.bp { color: #336666 } /* Name.Builtin.Pseudo */ -.vc { color: #003333 } /* Name.Variable.Class */ -.vg { color: #003333 } /* Name.Variable.Global */ -.vi { color: #003333 } /* Name.Variable.Instance */ -.il { color: #FF6600 } /* Literal.Number.Integer.Long */ - -.css .o, -.css .o + .nt, -.css .nt + .nt { color: #999; } diff --git a/docs-assets/ico/apple-touch-icon-144-precomposed.png b/docs-assets/ico/apple-touch-icon-144-precomposed.png deleted file mode 100644 index 622a865a9..000000000 Binary files a/docs-assets/ico/apple-touch-icon-144-precomposed.png and /dev/null differ diff --git a/docs-assets/ico/favicon.ico b/docs-assets/ico/favicon.ico deleted file mode 100644 index f576a4696..000000000 Binary files a/docs-assets/ico/favicon.ico and /dev/null differ diff --git a/docs-assets/js/application.js b/docs-assets/js/application.js deleted file mode 100644 index 78eed1ae9..000000000 --- a/docs-assets/js/application.js +++ /dev/null @@ -1,103 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S ALL JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ - -/*! - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ - - -!function ($) { - - $(function () { - - // IE10 viewport hack for Surface/desktop Windows 8 bug - // - // See Getting Started docs for more information - if (navigator.userAgent.match(/IEMobile\/10\.0/)) { - var msViewportStyle = document.createElement('style'); - msViewportStyle.appendChild( - document.createTextNode( - '@-ms-viewport{width:auto!important}' - ) - ); - document.getElementsByTagName('head')[0]. - appendChild(msViewportStyle); - } - - - var $window = $(window) - var $body = $(document.body) - - var navHeight = $('.navbar').outerHeight(true) + 10 - - $body.scrollspy({ - target: '.bs-sidebar', - offset: navHeight - }) - - $window.on('load', function () { - $body.scrollspy('refresh') - }) - - $('.bs-docs-container [href=#]').click(function (e) { - e.preventDefault() - }) - - // back to top - setTimeout(function () { - var $sideBar = $('.bs-sidebar') - - $sideBar.affix({ - offset: { - top: function () { - var offsetTop = $sideBar.offset().top - var sideBarMargin = parseInt($sideBar.children(0).css('margin-top'), 10) - var navOuterHeight = $('.bs-docs-nav').height() - - return (this.top = offsetTop - navOuterHeight - sideBarMargin) - }, - bottom: function () { - return (this.bottom = $('.bs-footer').outerHeight(true)) - } - } - }) - }, 100) - - setTimeout(function () { - $('.bs-top').affix() - }, 100) - - // tooltip demo - $('.tooltip-demo').tooltip({ - selector: '[data-toggle=tooltip]', - container: 'body' - }) - - $('.tooltip-test').tooltip() - $('.popover-test').popover() - - $('.bs-docs-navbar').tooltip({ - selector: 'a[data-toggle=tooltip]', - container: '.bs-docs-navbar .nav' - }) - - // popover demo - $('[data-toggle=popover]') - .popover() - - // button state demo - $('#loading-example-btn') - .click(function () { - var btn = $(this) - btn.button('loading') - setTimeout(function () { - btn.button('reset') - }, 3000) - }) - }) - -}(jQuery) diff --git a/docs-assets/js/customize.js b/docs-assets/js/customize.js deleted file mode 100644 index d4e12eb57..000000000 --- a/docs-assets/js/customize.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Bootstrap Docs (http://getbootstrap.com) - * Copyright 2013 Twitter, Inc. - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ -!function(a,b){function c(b){return a.less[b.split("/")[1]]}function d(a,b){"development"==w.env&&"undefined"!=typeof console&&w.logLevel>=b&&console.log("less: "+a)}function e(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function f(a,c){var e="{line} {content}",f=a.filename||c,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f+" ",i=function(a,c,d){a.extract[c]!==b&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(i(a,0,""),i(a,1,"line"),i(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")):a.stack&&(h+=a.stack),d(h,z.errors)}function g(a,b,c){var f=b.href||"",g="less:"+(b.title||e(f)),h=document.getElementById(g),i=!1,j=document.createElement("style");if(j.setAttribute("type","text/css"),b.media&&j.setAttribute("media",b.media),j.id=g,j.styleSheet)try{j.styleSheet.cssText=a}catch(k){throw new Error("Couldn't reassign styleSheet.cssText.")}else j.appendChild(document.createTextNode(a)),i=null!==h&&h.childNodes.length>0&&j.childNodes.length>0&&h.firstChild.nodeValue===j.firstChild.nodeValue;var l=document.getElementsByTagName("head")[0];if(null===h||i===!1){var m=b&&b.nextSibling||null;m?m.parentNode.insertBefore(j,m):l.appendChild(j)}if(h&&i===!1&&h.parentNode.removeChild(h),c&&D){d("saving "+f+" to cache.",z.info);try{D.setItem(f,a),D.setItem(f+":timestamp",c)}catch(k){d("failed to save",z.errors)}}}function h(a,c){var d,f,h="less-error-message:"+e(c||""),i='
  • {content}
  • ',j=document.createElement("div"),k=[],l=a.filename||c,m=l.match(/([^\/]+(\?.*)?)$/)[1];j.id=h,j.className="less-error-message",f="

    "+(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+'

    in '+m+" ";var n=function(a,c,d){a.extract[c]!==b&&k.push(i.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(n(a,0,""),n(a,1,"line"),n(a,2,""),f+="on line "+a.line+", column "+(a.column+1)+":

      "+k.join("")+"
    "):a.stack&&(f+="
    "+a.stack.split("\n").slice(1).join("
    ")),j.innerHTML=f,g([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),j.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"==w.env&&(d=setInterval(function(){document.body&&(document.getElementById(h)?document.body.replaceChild(j,document.getElementById(h)):document.body.insertBefore(j,document.body.firstChild),clearInterval(d))},10))}function i(a,b){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?f(a,b):"function"==typeof w.errorReporting&&w.errorReporting("add",a,b):h(a,b)}function j(a){var b=document.getElementById("less-error-message:"+e(a));b&&b.parentNode.removeChild(b)}function k(){}function l(a){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?k(a):"function"==typeof w.errorReporting&&w.errorReporting("remove",a):j(a)}function m(a){for(var b,c=document.getElementsByTagName("style"),d=0;d0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=f[1]+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g}function o(a,b){var c,d,e,f,g=n(a),h=n(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var g=p(),h=y?w.fileAsync:w.async;"function"==typeof g.overrideMimeType&&g.overrideMimeType("text/css"),d("XHR: Getting '"+a+"'",z.info),g.open("GET",a,h),g.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),g.send(null),y&&!w.fileAsync?0===g.status||g.status>=200&&g.status<300?c(g.responseText):e(g.status,a):h?g.onreadystatechange=function(){4==g.readyState&&f(g,c,e)}:f(g,c,e)}function r(b,c,d,e,f){c&&c.currentDirectory&&!/^([a-z-]+:)?\//.test(b)&&(b=c.currentDirectory+b);var g=n(b,a.location.href),h=g.url,i={currentDirectory:g.path,filename:h};if(c?(i.entryPath=c.entryPath,i.rootpath=c.rootpath,i.rootFilename=c.rootFilename,i.relativeUrls=c.relativeUrls):(i.entryPath=g.path,i.rootpath=w.rootpath||g.path,i.rootFilename=h,i.relativeUrls=e.relativeUrls),i.relativeUrls&&(i.rootpath=e.rootpath?n(e.rootpath+o(g.path,i.entryPath)).path:g.path),e.useFileCache&&E[h])try{var j=E[h];f&&(j+="\n"+f),d(null,j,h,i,{lastModified:new Date})}catch(k){d(k,null,h)}else q(h,e.mime,function(a,b){a=F+a,E[h]=a;try{d(null,a,h,i,{lastModified:b})}catch(c){d(c,null,h)}},function(a,b){d({type:"File",message:"'"+b+"' wasn't found ("+a+")"},null,h)})}function s(a,b,c,d,e){var f=new w.tree.parseEnv(w);f.mime=a.type,(e||F)&&(f.useFileCache=!0),r(a.href,null,function(e,h,i,j,k){if(k){k.remaining=d;var m=D&&D.getItem(i),n=D&&D.getItem(i+":timestamp");if(!c&&n&&k.lastModified&&new Date(k.lastModified).valueOf()===new Date(n).valueOf())return g(m,a),k.local=!0,b(null,null,h,a,k,i),void 0}l(i),h?(f.currentFileInfo=j,new w.Parser(f).parse(h,function(c,d){if(c)return b(c,null,null,a);try{b(c,d,h,a,k,i)}catch(c){b(c,null,null,a)}})):b(e,null,null,a,k,i)},f,e)}function t(a,b,c){for(var d=0;dz&&(y[s]=y[s].slice(r-z),z=r)}function g(a){var b=a.charCodeAt(0);return 32===b||10===b||9===b}function h(a){var b,c;if(a instanceof Function)return a.call(A.parsers);if("string"==typeof a)b=q.charAt(r)===a?a:null,c=1,f();else{if(f(),!(b=a.exec(y[s])))return null;c=b[0].length}return b?(i(c),"string"==typeof b?b:1===b.length?b[0]:b):void 0}function i(a){for(var b=r,c=s,d=r+y[s].length,e=r+=a;d>r&&g(q.charAt(r));)r++;return y[s]=y[s].slice(a+(r-e)),z=r,0===y[s].length&&s=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}function o(a,b,d){var e=d.currentFileInfo.filename;return"browser"!==w.mode&&"rhino"!==w.mode&&(e=c("path").resolve(e)),{lineNumber:n(a,b).line+1,fileName:e}}function p(a,b){var c=m(a,b),d=n(a.index,c),e=d.line,f=d.column,g=a.call&&n(a.call,c).line,h=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.currentFileInfo.filename,this.index=a.index,this.line="number"==typeof e?e+1:null,this.callLine=g+1,this.callExtract=h[g],this.stack=a.stack,this.column=f,this.extract=[h[e-1],h[e],h[e+1]]}var q,r,s,t,u,v,y,z,A,B=a&&a.filename;a instanceof x.parseEnv||(a=new x.parseEnv(a));var C=this.imports={paths:a.paths||[],queue:[],files:a.files,contents:a.contents,mime:a.mime,error:null,push:function(b,c,d,e){var f=this;this.queue.push(b);var g=function(a,c,d){f.queue.splice(f.queue.indexOf(b),1);var g=d in f.files||d===B;f.files[d]=c,a&&!f.error&&(f.error=a),e(a,c,g,d)};w.Parser.importer?w.Parser.importer(b,c,g,a):w.Parser.fileLoader(b,c,function(b,e,f,h){if(b)return g(b),void 0;var i=new x.parseEnv(a);i.currentFileInfo=h,i.processImports=!1,i.contents[f]=e,(c.reference||d.reference)&&(h.reference=!0),d.inline?g(null,e,f):new w.Parser(i).parse(e,function(a,b){g(a,b,f)})},a)}};return p.prototype=new Error,p.prototype.constructor=p,this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,A={imports:C,parse:function(b,d){var e,f,g,i=null;if(r=s=z=v=0,q=b.replace(/\r\n/g,"\n"),q=q.replace(/^\uFEFF/,""),A.imports.contents[a.currentFileInfo.filename]=q,y=function(b){for(var c,d,e,f,g=0,h=/(?:@\{[\w-]+\}|[^"'`\{\}\/\(\)\\])+/g,j=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,k=/"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`]|\\.)*)`/g,l=0,m=b[0],n=0;n0?"missing closing `}`":"missing opening `{`",filename:a.currentFileInfo.filename},a)),b.map(function(a){return a.join("")})}([[]]),i)return d(new p(i,a));try{e=new x.Ruleset([],h(this.parsers.primary)),e.root=!0,e.firstRoot=!0}catch(j){return d(new p(j,a))}if(e.toCSS=function(b){return function(d,e){d=d||{};var f,g,h=new x.evalEnv(d);"object"!=typeof e||Array.isArray(e)||(e=Object.keys(e).map(function(a){var b=e[a];return b instanceof x.Value||(b instanceof x.Expression||(b=new x.Expression([b])),b=new x.Value([b])),new x.Rule("@"+a,b,!1,null,0)}),h.frames=[new x.Ruleset(null,e)]);try{f=b.call(this,h),(new x.joinSelectorVisitor).run(f),(new x.processExtendsVisitor).run(f),new x.toCSSVisitor({compress:Boolean(d.compress)}).run(f),d.sourceMap&&(f=new x.sourceMapOutput({writeSourceMap:d.writeSourceMap,rootNode:f,contentsMap:A.imports.contents,sourceMapFilename:d.sourceMapFilename,sourceMapURL:d.sourceMapURL,outputFilename:d.sourceMapOutputFilename,sourceMapBasepath:d.sourceMapBasepath,sourceMapRootpath:d.sourceMapRootpath,outputSourceFiles:d.outputSourceFiles,sourceMapGenerator:d.sourceMapGenerator})),g=f.toCSS({compress:Boolean(d.compress),dumpLineNumbers:a.dumpLineNumbers,strictUnits:Boolean(d.strictUnits)})}catch(i){throw new p(i,a)}if(d.cleancss&&"node"===w.mode){var j=c("clean-css");return new j({keepSpecialComments:"*",processImport:!1,noRebase:!0,noAdvanced:!0}).minify(g)}return d.compress?g.replace(/(^(\s)+)|((\s)+$)/g,""):g}}(e.eval),r57||43>b||47===b||44==b?void 0:(a=h(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/))?new x.Dimension(a[1],a[2]):void 0},unicodeDescriptor:function(){var a;return(a=h(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))?new x.UnicodeDescriptor(a[0]):void 0},javascript:function(){var c,d,e=r;return"~"===q.charAt(e)&&(e++,d=!0),"`"===q.charAt(e)?(a.javascriptEnabled===b||a.javascriptEnabled||k("You are using JavaScript, which has been disabled."),d&&h("~"),(c=h(/^`([^`]*)`/))?new x.JavaScript(c[1],r,d):void 0):void 0}},variable:function(){var a;return"@"===q.charAt(r)&&(a=h(/^(@[\w-]+)\s*:/))?a[1]:void 0},extend:function(a){var b,c,d,e=r,f=[];if(h(a?/^&:extend\(/:/^:extend\(/)){do{for(d=null,b=[];!(d=h(/^(all)(?=\s*(\)|,))/))&&(c=h(this.element),c);)b.push(c);d=d&&d[1],f.push(new x.Extend(new x.Selector(b),d,e))}while(h(","));return j(/^\)/),a&&j(/^;/),f}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var b,c,f,g=[],i=r,k=q.charAt(r),m=!1;if("."===k||"#"===k){for(d();b=h(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/);)g.push(new x.Element(c,b,r,a.currentFileInfo)),c=h(">");return h("(")&&(f=this.mixin.args.call(this,!0).args,j(")")),f=f||[],h(this.important)&&(m=!0),g.length>0&&(h(";")||l("}"))?new x.mixin.Call(g,f,i,a.currentFileInfo,m):(e(),void 0)}},args:function(a){for(var b,c,d,e,f,g,i=[],l=[],m=[],n={args:null,variadic:!1};;){if(a)g=h(this.expression);else{if(h(this.comments),"."===q.charAt(r)&&h(/^\.{3}/)){n.variadic=!0,h(";")&&!b&&(b=!0),(b?l:m).push({variadic:!0});break}g=h(this.entities.variable)||h(this.entities.literal)||h(this.entities.keyword)}if(!g)break;e=null,g.throwAwayComments&&g.throwAwayComments(),f=g;var o=null;if(a?1==g.value.length&&(o=g.value[0]):o=g,o&&o instanceof x.Variable)if(h(":"))i.length>0&&(b&&k("Cannot mix ; and , as delimiter types"),c=!0),f=j(this.expression),e=d=o.name;else{if(!a&&h(/^\.{3}/)){n.variadic=!0,h(";")&&!b&&(b=!0),(b?l:m).push({name:g.name,variadic:!0});break}a||(d=e=o.name,f=null)}f&&i.push(f),m.push({name:e,value:f}),h(",")||(h(";")||b)&&(c&&k("Cannot mix ; and , as delimiter types"),b=!0,i.length>1&&(f=new x.Value(i)),l.push({name:d,value:f}),d=null,i=[],c=!1)}return n.args=b?l:m,n},definition:function(){var a,b,c,f,g=[],i=!1;if(!("."!==q.charAt(r)&&"#"!==q.charAt(r)||l(/^[^{]*\}/))&&(d(),b=h(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/))){a=b[1];var k=this.mixin.args.call(this,!1);if(g=k.args,i=k.variadic,h(")")||(v=r,e()),h(this.comments),h(/^when/)&&(f=j(this.conditions,"expected condition")),c=h(this.block))return new x.mixin.Definition(a,g,c,f,i);e()}}},entity:function(){return h(this.entities.literal)||h(this.entities.variable)||h(this.entities.url)||h(this.entities.call)||h(this.entities.keyword)||h(this.entities.javascript)||h(this.comment)},end:function(){return h(";")||l("}")},alpha:function(){var a;return h(/^\(opacity=/i)?(a=h(/^\d+/)||h(this.entities.variable))?(j(")"),new x.Alpha(a)):void 0:void 0},element:function(){var b,c,d;return c=h(this.combinator),b=h(/^(?:\d+\.\d+|\d+)%/)||h(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||h("*")||h("&")||h(this.attribute)||h(/^\([^()@]+\)/)||h(/^[\.#](?=@)/)||h(this.entities.variableCurly),b||h("(")&&(d=h(this.selector))&&h(")")&&(b=new x.Paren(d)),b?new x.Element(c,b,r,a.currentFileInfo):void 0},combinator:function(){var a=q.charAt(r);if(">"===a||"+"===a||"~"===a||"|"===a){for(r++;q.charAt(r).match(/\s/);)r++;return new x.Combinator(a)}return q.charAt(r-1).match(/\s/)?new x.Combinator(" "):new x.Combinator(null)},lessSelector:function(){return this.selector(!0)},selector:function(b){for(var c,d,e,f,g,i=[],l=[];(b&&(e=h(this.extend))||b&&(f=h(/^when/))||(c=h(this.element)))&&(f?g=j(this.conditions,"expected condition"):g?k("CSS guard can only be used at the end of selector"):e?l.push.apply(l,e):(l.length&&k("Extend can only be used at the end of selector"),d=q.charAt(r),i.push(c),c=null),"{"!==d&&"}"!==d&&";"!==d&&","!==d&&")"!==d););return i.length>0?new x.Selector(i,l,g,r,a.currentFileInfo):(l.length&&k("Extend must be used to extend a selector, it cannot be used on its own"),void 0)},attribute:function(){var a,b,c;return h("[")?((a=h(this.entities.variableCurly))||(a=j(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(c=h(/^[|~*$^]?=/))&&(b=h(this.entities.quoted)||h(/^[0-9]+%/)||h(/^[\w-]+/)||h(this.entities.variableCurly)),j("]"),new x.Attribute(a,c,b)):void 0},block:function(){var a;return h("{")&&(a=h(this.primary))&&h("}")?a:void 0},ruleset:function(){var b,c,f,g=[];for(d(),a.dumpLineNumbers&&(f=o(r,q,a));(b=h(this.lessSelector))&&(g.push(b),h(this.comments),h(","));)b.condition&&k("Guards are only currently allowed on a single selector."),h(this.comments);if(g.length>0&&(c=h(this.block))){var i=new x.Ruleset(g,c,a.strictImports);return a.dumpLineNumbers&&(i.debugInfo=f),i}v=r,e()},rule:function(b){var c,f,g,i=q.charAt(r),j=!1;if(d(),"."!==i&&"#"!==i&&"&"!==i&&(c=h(this.variable)||h(this.ruleProperty))){if(f=b||!a.compress&&"@"!==c.charAt(0)?h(this.anonymousValue)||h(this.value):h(this.value)||h(this.anonymousValue),g=h(this.important),"+"===c[c.length-1]&&(j=!0,c=c.substr(0,c.length-1)),f&&h(this.end))return new x.Rule(c,f,g,j,u,a.currentFileInfo);if(v=r,e(),f&&!b)return this.rule(!0)}},anonymousValue:function(){var a;return(a=/^([^@+\/'"*`(;{}-]*);/.exec(y[s]))?(r+=a[0].length-1,new x.Anonymous(a[1])):void 0},"import":function(){var b,c,f=r;d();var g=h(/^@import?\s+/),i=(g?h(this.importOptions):null)||{};return g&&(b=h(this.entities.quoted)||h(this.entities.url))&&(c=h(this.mediaFeatures),h(";"))?(c=c&&new x.Value(c),new x.Import(b,c,i,f,a.currentFileInfo)):(e(),void 0)},importOptions:function(){var a,b,c,d={};if(!h("("))return null;do if(a=h(this.importOption)){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!h(","))break}while(a);return j(")"),d},importOption:function(){var a=h(/^(less|css|multiple|once|inline|reference)/);return a?a[1]:void 0},mediaFeature:function(){var b,c,d=[];do if(b=h(this.entities.keyword)||h(this.entities.variable))d.push(b);else if(h("(")){if(c=h(this.property),b=h(this.value),!h(")"))return null;if(c&&b)d.push(new x.Paren(new x.Rule(c,b,null,null,r,a.currentFileInfo,!0)));else{if(!b)return null;d.push(new x.Paren(b))}}while(b);return d.length>0?new x.Expression(d):void 0},mediaFeatures:function(){var a,b=[];do if(a=h(this.mediaFeature)){if(b.push(a),!h(","))break}else if((a=h(this.entities.variable))&&(b.push(a),!h(",")))break;while(a);return b.length>0?b:null},media:function(){var b,c,d,e;return a.dumpLineNumbers&&(e=o(r,q,a)),h(/^@media/)&&(b=h(this.mediaFeatures),c=h(this.block))?(d=new x.Media(c,b,r,a.currentFileInfo),a.dumpLineNumbers&&(d.debugInfo=e),d):void 0},directive:function(){var b,c,f,g,i,j,k,l;if("@"===q.charAt(r)){if(c=h(this["import"])||h(this.media))return c;if(d(),b=h(/^@[a-z-]+/)){switch(g=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(g="@"+b.slice(b.indexOf("-",2)+1)),g){case"@font-face":i=!0;break;case"@viewport":case"@top-left":case"@top-left-corner":case"@top-center":case"@top-right":case"@top-right-corner":case"@bottom-left":case"@bottom-left-corner":case"@bottom-center":case"@bottom-right":case"@bottom-right-corner":case"@left-top":case"@left-middle":case"@left-bottom":case"@right-top":case"@right-middle":case"@right-bottom":i=!0;break;case"@host":case"@page":case"@document":case"@supports":case"@keyframes":i=!0,j=!0;break;case"@namespace":k=!0}if(j&&(l=(h(/^[^{]+/)||"").trim(),l&&(b+=" "+l)),i){if(f=h(this.block))return new x.Directive(b,f,r,a.currentFileInfo)}else if((c=k?h(this.expression):h(this.entity))&&h(";")){var m=new x.Directive(b,c,r,a.currentFileInfo);return a.dumpLineNumbers&&(m.debugInfo=o(r,q,a)),m}e()}}},value:function(){for(var a,b=[];(a=h(this.expression))&&(b.push(a),h(",")););return b.length>0?new x.Value(b):void 0},important:function(){return"!"===q.charAt(r)?h(/^! *important/):void 0},sub:function(){var a,b;return h("(")&&(a=h(this.addition))?(b=new x.Expression([a]),j(")"),b.parens=!0,b):void 0},multiplication:function(){var a,b,c,d,e;if(a=h(this.operand)){for(e=g(q.charAt(r-1));!l(/^\/[*\/]/)&&(c=h("/")||h("*"))&&(b=h(this.operand));)a.parensInOp=!0,b.parensInOp=!0,d=new x.Operation(c,[d||a,b],e),e=g(q.charAt(r-1));return d||a}},addition:function(){var a,b,c,d,e;if(a=h(this.multiplication)){for(e=g(q.charAt(r-1));(c=h(/^[-+]\s+/)||!e&&(h("+")||h("-")))&&(b=h(this.multiplication));)a.parensInOp=!0,b.parensInOp=!0,d=new x.Operation(c,[d||a,b],e),e=g(q.charAt(r-1));return d||a}},conditions:function(){var a,b,c,d=r;if(a=h(this.condition)){for(;l(/^,\s*(not\s*)?\(/)&&h(",")&&(b=h(this.condition));)c=new x.Condition("or",c||a,b,d);return c||a}},condition:function(){var a,b,c,d,e=r,f=!1;return h(/^not/)&&(f=!0),j("("),(a=h(this.addition)||h(this.entities.keyword)||h(this.entities.quoted))?((d=h(/^(?:>=|<=|=<|[<=>])/))?(b=h(this.addition)||h(this.entities.keyword)||h(this.entities.quoted))?c=new x.Condition(d,a,b,e,f):k("expected expression"):c=new x.Condition("=",a,new x.Keyword("true"),e,f),j(")"),h(/^and/)?new x.Condition("and",c,h(this.condition)):c):void 0},operand:function(){var a,b=q.charAt(r+1);"-"!==q.charAt(r)||"@"!==b&&"("!==b||(a=h("-"));var c=h(this.sub)||h(this.entities.dimension)||h(this.entities.color)||h(this.entities.variable)||h(this.entities.call);return a&&(c.parensInOp=!0,c=new x.Negative(c)),c},expression:function(){for(var a,b,c=[];a=h(this.addition)||h(this.entity);)c.push(a),!l(/^\/[\/*]/)&&(b=h("/"))&&c.push(new x.Anonymous(b));return c.length>0?new x.Expression(c):void 0},property:function(){var a;return(a=h(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/))?a[1]:void 0},ruleProperty:function(){var a;return(a=h(/^(\*?-?[_a-zA-Z0-9-]+)\s*(\+?)\s*:/))?a[1]+(a[2]||""):void 0}}}},function(d){function e(a){return d.functions.hsla(a.h,a.s,a.l,a.a)}function f(a,b){return a instanceof d.Dimension&&a.unit.is("%")?parseFloat(a.value*b/100):g(a)}function g(a){if(a instanceof d.Dimension)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function h(a){return Math.min(1,Math.max(0,a))}d.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(a,b,c,e){var h=[a,b,c].map(function(a){return f(a,256)});return e=g(e),new d.Color(h,e)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,c,d){function e(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?i+(f-i)*a*6:1>2*a?f:2>3*a?i+(f-i)*(2/3-a)*6:i}a=g(a)%360/360,b=h(g(b)),c=h(g(c)),d=h(g(d));var f=.5>=c?c*(b+1):c+b-c*b,i=2*c-f;return this.rgba(255*e(a+1/3),255*e(a),255*e(a-1/3),d)},hsv:function(a,b,c){return this.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=g(a)%360/360*360,b=g(b),c=g(c),d=g(d);var e,f;e=Math.floor(a/60%6),f=a/60-e;var h=[c,c*(1-b),c*(1-f*b),c*(1-(1-f)*b)],i=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(255*h[i[e][0]],255*h[i[e][1]],255*h[i[e][2]],d)},hue:function(a){return new d.Dimension(Math.round(a.toHSL().h))},saturation:function(a){return new d.Dimension(Math.round(100*a.toHSL().s),"%")},lightness:function(a){return new d.Dimension(Math.round(100*a.toHSL().l),"%")},hsvhue:function(a){return new d.Dimension(Math.round(a.toHSV().h))},hsvsaturation:function(a){return new d.Dimension(Math.round(100*a.toHSV().s),"%")},hsvvalue:function(a){return new d.Dimension(Math.round(100*a.toHSV().v),"%")},red:function(a){return new d.Dimension(a.rgb[0])},green:function(a){return new d.Dimension(a.rgb[1])},blue:function(a){return new d.Dimension(a.rgb[2])},alpha:function(a){return new d.Dimension(a.toHSL().a)},luma:function(a){return new d.Dimension(Math.round(a.luma()*a.alpha*100),"%")},saturate:function(a,b){if(!a.rgb)return null;var c=a.toHSL();return c.s+=b.value/100,c.s=h(c.s),e(c)},desaturate:function(a,b){var c=a.toHSL();return c.s-=b.value/100,c.s=h(c.s),e(c)},lighten:function(a,b){var c=a.toHSL();return c.l+=b.value/100,c.l=h(c.l),e(c)},darken:function(a,b){var c=a.toHSL();return c.l-=b.value/100,c.l=h(c.l),e(c)},fadein:function(a,b){var c=a.toHSL();return c.a+=b.value/100,c.a=h(c.a),e(c)},fadeout:function(a,b){var c=a.toHSL();return c.a-=b.value/100,c.a=h(c.a),e(c)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=h(c.a),e(c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=0>d?360+d:d,e(c)},mix:function(a,b,c){c||(c=new d.Dimension(50));var e=c.value/100,f=2*e-1,g=a.toHSL().a-b.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[a.rgb[0]*h+b.rgb[0]*i,a.rgb[1]*h+b.rgb[1]*i,a.rgb[2]*h+b.rgb[2]*i],k=a.alpha*e+b.alpha*(1-e);return new d.Color(j,k)},greyscale:function(a){return this.desaturate(a,new d.Dimension(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=this.rgba(255,255,255,1)),"undefined"==typeof b&&(b=this.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:g(d),a.luma()*a.alphai.value)&&(k[f]=g)):(l[j]=k.length,k.push(g))):k.push(g);return 1==k.length?k[0]:(c=k.map(function(a){return a.toCSS(this.env)}).join(this.env.compress?",":", "),new d.Anonymous((a?"min":"max")+"("+c+")"))},min:function(){return this._minmax(!0,arguments)},max:function(){return this._minmax(!1,arguments)},argb:function(a){return new d.Anonymous(a.toARGB())},percentage:function(a){return new d.Dimension(100*a.value,"%")},color:function(a){if(a instanceof d.Quoted){var b,c=a.value;if(b=d.Color.fromKeyword(c))return b;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(c))return new d.Color(c.slice(1));throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}}throw{type:"Argument",message:"argument must be a string"}},iscolor:function(a){return this._isa(a,d.Color)},isnumber:function(a){return this._isa(a,d.Dimension)},isstring:function(a){return this._isa(a,d.Quoted)},iskeyword:function(a){return this._isa(a,d.Keyword)},isurl:function(a){return this._isa(a,d.URL)},ispixel:function(a){return this.isunit(a,"px")},ispercentage:function(a){return this.isunit(a,"%")},isem:function(a){return this.isunit(a,"em")},isunit:function(a,b){return a instanceof d.Dimension&&a.unit.is(b.value||b)?d.True:d.False},_isa:function(a,b){return a instanceof b?d.True:d.False},multiply:function(a,b){var c=a.rgb[0]*b.rgb[0]/255,d=a.rgb[1]*b.rgb[1]/255,e=a.rgb[2]*b.rgb[2]/255;return this.rgb(c,d,e)},screen:function(a,b){var c=255-(255-a.rgb[0])*(255-b.rgb[0])/255,d=255-(255-a.rgb[1])*(255-b.rgb[1])/255,e=255-(255-a.rgb[2])*(255-b.rgb[2])/255;return this.rgb(c,d,e)},overlay:function(a,b){var c=a.rgb[0]<128?2*a.rgb[0]*b.rgb[0]/255:255-2*(255-a.rgb[0])*(255-b.rgb[0])/255,d=a.rgb[1]<128?2*a.rgb[1]*b.rgb[1]/255:255-2*(255-a.rgb[1])*(255-b.rgb[1])/255,e=a.rgb[2]<128?2*a.rgb[2]*b.rgb[2]/255:255-2*(255-a.rgb[2])*(255-b.rgb[2])/255; -return this.rgb(c,d,e)},softlight:function(a,b){var c=b.rgb[0]*a.rgb[0]/255,d=c+a.rgb[0]*(255-(255-a.rgb[0])*(255-b.rgb[0])/255-c)/255;c=b.rgb[1]*a.rgb[1]/255;var e=c+a.rgb[1]*(255-(255-a.rgb[1])*(255-b.rgb[1])/255-c)/255;c=b.rgb[2]*a.rgb[2]/255;var f=c+a.rgb[2]*(255-(255-a.rgb[2])*(255-b.rgb[2])/255-c)/255;return this.rgb(d,e,f)},hardlight:function(a,b){var c=b.rgb[0]<128?2*b.rgb[0]*a.rgb[0]/255:255-2*(255-b.rgb[0])*(255-a.rgb[0])/255,d=b.rgb[1]<128?2*b.rgb[1]*a.rgb[1]/255:255-2*(255-b.rgb[1])*(255-a.rgb[1])/255,e=b.rgb[2]<128?2*b.rgb[2]*a.rgb[2]/255:255-2*(255-b.rgb[2])*(255-a.rgb[2])/255;return this.rgb(c,d,e)},difference:function(a,b){var c=Math.abs(a.rgb[0]-b.rgb[0]),d=Math.abs(a.rgb[1]-b.rgb[1]),e=Math.abs(a.rgb[2]-b.rgb[2]);return this.rgb(c,d,e)},exclusion:function(a,b){var c=a.rgb[0]+b.rgb[0]*(255-a.rgb[0]-a.rgb[0])/255,d=a.rgb[1]+b.rgb[1]*(255-a.rgb[1]-a.rgb[1])/255,e=a.rgb[2]+b.rgb[2]*(255-a.rgb[2]-a.rgb[2])/255;return this.rgb(c,d,e)},average:function(a,b){var c=(a.rgb[0]+b.rgb[0])/2,d=(a.rgb[1]+b.rgb[1])/2,e=(a.rgb[2]+b.rgb[2])/2;return this.rgb(c,d,e)},negation:function(a,b){var c=255-Math.abs(255-b.rgb[0]-a.rgb[0]),d=255-Math.abs(255-b.rgb[1]-a.rgb[1]),e=255-Math.abs(255-b.rgb[2]-a.rgb[2]);return this.rgb(c,d,e)},tint:function(a,b){return this.mix(this.rgb(255,255,255),a,b)},shade:function(a,b){return this.mix(this.rgb(0,0,0),a,b)},extract:function(a,b){return b=b.value-1,Array.isArray(a.value)?a.value[b]:Array(a)[b]},length:function(a){var b=Array.isArray(a.value)?a.value.length:1;return new d.Dimension(b)},"data-uri":function(b,e){if("undefined"!=typeof a)return new d.URL(e||b,this.currentFileInfo).eval(this.env);var f=b.value,g=e&&e.value,h=c("fs"),i=c("path"),j=!1;if(arguments.length<2&&(g=f),this.env.isPathRelative(g)&&(g=this.currentFileInfo.relativeUrls?i.join(this.currentFileInfo.currentDirectory,g):i.join(this.currentFileInfo.entryPath,g)),arguments.length<2){var k;try{k=c("mime")}catch(l){k=d._mime}f=k.lookup(g);var m=k.charsets.lookup(f);j=["US-ASCII","UTF-8"].indexOf(m)<0,j&&(f+=";base64")}else j=/;base64$/.test(f);var n=h.readFileSync(g),o=32,p=parseInt(n.length/1024,10);if(p>=o&&this.env.ieCompat!==!1)return this.env.silent||console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!",g,p,o),new d.URL(e||b,this.currentFileInfo).eval(this.env);n=j?n.toString("base64"):encodeURIComponent(n);var q="'data:"+f+","+n+"'";return new d.URL(new d.Anonymous(q))},"svg-gradient":function(a){function c(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"}}arguments.length<3&&c();var e,f,g,h,i,j,k,l=Array.prototype.slice.call(arguments,1),m="linear",n='x="0" y="0" width="1" height="1"',o=!0,p={compress:!1},q=a.toCSS(p);switch(q){case"to bottom":e='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":e='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":e='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":e='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":m="radial",e='cx="50%" cy="50%" r="75%"',n='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(f='<'+m+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+e+">",g=0;gk?' stop-opacity="'+k+'"':"")+"/>";if(f+="',o)try{f=new Buffer(f).toString("base64")}catch(r){o=!1}return f="'data:image/svg+xml"+(o?";base64":"")+","+f+"'",new d.URL(new d.Anonymous(f))}},d._mime={_types:{".htm":"text/html",".html":"text/html",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png"},lookup:function(a){var e=c("path").extname(a),f=d._mime._types[e];if(f===b)throw new Error('Optional dependency "mime" is required for '+e);return f},charsets:{lookup:function(a){return a&&/^text\//.test(a)?"UTF-8":""}}};for(var i=[{name:"ceil"},{name:"floor"},{name:"sqrt"},{name:"abs"},{name:"tan",unit:""},{name:"sin",unit:""},{name:"cos",unit:""},{name:"atan",unit:"rad"},{name:"asin",unit:"rad"},{name:"acos",unit:"rad"}],j=function(a,b){return function(c){return null!=b&&(c=c.unify()),this._math(Math[a],b,c)}},k=0;k1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)},a.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},a.outputRuleset=function(a,b,c){b.add(a.compress?"{":" {\n"),a.tabLevel=(a.tabLevel||0)+1;for(var d=a.compress?"":Array(a.tabLevel+1).join(" "),e=a.compress?"":Array(a.tabLevel).join(" "),f=0;fb?-1:1},genCSS:function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={type:"Assignment",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Assignment(this.key,this.value.eval(b)):this},genCSS:function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d},a.Call.prototype={type:"Call",accept:function(a){this.args=a.visit(this.args)},eval:function(b){var c,d,e=this.args.map(function(a){return a.eval(b)}),f=this.name.toLowerCase();if(f in a.functions)try{if(d=new a.functionCall(b,this.currentFileInfo),c=d[f].apply(d,e),null!=c)return c}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}return new a.Call(this.name,e,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;cf;f++)e[f]=a.operate(b,c,this.rgb[f],d.rgb[f]);return new a.Color(e,this.alpha+d.alpha)},toRGB:function(){return"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},toHSL:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},toHSV:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},toARGB:function(){var a=[Math.round(255*this.alpha)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},compare:function(a){return a.rgb?a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:-1:-1}},a.Color.fromKeyword=function(c){if(a.colors.hasOwnProperty(c))return new a.Color(a.colors[c].slice(1));if(c===b){var d=new a.Color([0,0,0],0);return d.isTransparentKeyword=!0,d}}}(c("../tree")),function(a){a.Comment=function(a,b,c,d){this.value=a,this.silent=!!b,this.currentFileInfo=d},a.Comment.prototype={type:"Comment",genCSS:function(b,c){this.debugInfo&&c.add(a.debugInfo(b,this),this.currentFileInfo,this.index),c.add(this.value.trim())},toCSS:a.toCSS,isSilent:function(a){var b=this.currentFileInfo&&this.currentFileInfo.reference&&!this.isReferenced,c=a.compress&&!this.value.match(/^\/\*!/);return this.silent||b||c},eval:function(){return this},markReferenced:function(){this.isReferenced=!0}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype={type:"Condition",accept:function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},eval:function(a){var b,c=this.lvalue.eval(a),d=this.rvalue.eval(a),e=this.index;return b=function(a){switch(a){case"and":return c&&d;case"or":return c||d;default:if(c.compare)b=c.compare(d);else{if(!d.compare)throw{type:"Type",message:"Unable to perform comparison",index:e};b=d.compare(c)}switch(b){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a}}}(this.op),this.negate?!b:b}}}(c("../tree")),function(a){a.Dimension=function(c,d){this.value=parseFloat(c),this.unit=d&&d instanceof a.Unit?d:new a.Unit(d?[d]:b)},a.Dimension.prototype={type:"Dimension",accept:function(a){this.unit=a.visit(this.unit)},eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},genCSS:function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.value,d=String(c);if(0!==c&&1e-6>c&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return b.add(d),void 0;c>0&&1>c&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},toCSS:a.toCSS,operate:function(b,c,d){var e=a.operate(b,c,this.value,d.value),f=this.unit.clone();if("+"===c||"-"===c)if(0===f.numerator.length&&0===f.denominator.length)f.numerator=d.unit.numerator.slice(0),f.denominator=d.unit.denominator.slice(0);else if(0===d.unit.numerator.length&&0===f.denominator.length);else{if(d=d.convertTo(this.unit.usedUnits()),b.strictUnits&&d.unit.toString()!==f.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+f.toString()+"' and '"+d.unit.toString()+"'.");e=a.operate(b,c,this.value,d.value)}else"*"===c?(f.numerator=f.numerator.concat(d.unit.numerator).sort(),f.denominator=f.denominator.concat(d.unit.denominator).sort(),f.cancel()):"/"===c&&(f.numerator=f.numerator.concat(d.unit.denominator).sort(),f.denominator=f.denominator.concat(d.unit.numerator).sort(),f.cancel());return new a.Dimension(e,f)},compare:function(b){if(b instanceof a.Dimension){var c=this.unify(),d=b.unify(),e=c.value,f=d.value;return f>e?-1:e>f?1:d.unit.isEmpty()||0===c.unit.compare(d.unit)?0:-1}return-1},unify:function(){return this.convertTo({length:"m",duration:"s",angle:"rad"})},convertTo:function(b){var c,d,e,f,g,h=this.value,i=this.unit.clone(),j={};if("string"==typeof b){for(c in a.UnitConversions)a.UnitConversions[c].hasOwnProperty(b)&&(j={},j[c]=b);b=j}g=function(a,b){return e.hasOwnProperty(a)?(b?h/=e[a]/e[f]:h*=e[a]/e[f],f):a};for(d in b)b.hasOwnProperty(d)&&(f=b[d],e=a.UnitConversions[d],i.map(g));return i.cancel(),new a.Dimension(h,i)}},a.UnitConversions={length:{m:1,cm:.01,mm:.001,"in":.0254,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}},a.Unit=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],this.backupUnit=c},a.Unit.prototype={type:"Unit",clone:function(){return new a.Unit(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},genCSS:function(a,b){this.numerator.length>=1?b.add(this.numerator[0]):this.denominator.length>=1?b.add(this.denominator[0]):a&&a.strictUnits||!this.backupUnit||b.add(this.backupUnit)},toCSS:a.toCSS,toString:function(){var a,b=this.numerator.join("*");for(a=0;a0)for(b=0;e>b;b++)this.numerator.push(a);else if(0>e)for(b=0;-e>b;b++)this.denominator.push(a)}0===this.numerator.length&&0===this.denominator.length&&c&&(this.backupUnit=c),this.numerator.sort(),this.denominator.sort()}}}(c("../tree")),function(a){a.Directive=function(b,c,d,e){this.name=b,Array.isArray(c)?(this.rules=[new a.Ruleset([],c)],this.rules[0].allowImports=!0):this.value=c,this.currentFileInfo=e},a.Directive.prototype={type:"Directive",accept:function(a){this.rules=a.visit(this.rules),this.value=a.visit(this.value)},genCSS:function(b,c){c.add(this.name,this.currentFileInfo,this.index),this.rules?a.outputRuleset(b,c,this.rules):(c.add(" "),this.value.genCSS(b,c),c.add(";"))},toCSS:a.toCSS,eval:function(b){var c=this;return this.rules&&(b.frames.unshift(this),c=new a.Directive(this.name,null,this.index,this.currentFileInfo),c.rules=[this.rules[0].eval(b)],c.rules[0].root=!0,b.frames.shift()),c},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},markReferenced:function(){var a,b;if(this.isReferenced=!0,this.rules)for(b=this.rules[0].rules,a=0;a":" > ","|":"|"},_outputMapCompressed:{"":""," ":" ",":":" :","+":"+","~":"~",">":">","|":"|"},genCSS:function(a,b){b.add((a.compress?this._outputMapCompressed:this._outputMap)[this.value])},toCSS:a.toCSS}}(c("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={type:"Expression",accept:function(a){this.value=a.visit(this.value)},eval:function(b){var c,d=this.parens&&!this.parensInOp,e=!1;return d&&b.inParenthesis(),this.value.length>1?c=new a.Expression(this.value.map(function(a){return a.eval(b)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(e=!0),c=this.value[0].eval(b)):c=this,d&&b.outOfParenthesis(),this.parens&&this.parensInOp&&!b.isMathOn()&&!e&&(c=new a.Paren(c)),c},genCSS:function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[{elements:d}]}}}(c("../tree")),function(a){a.Import=function(a,c,d,e,f){if(this.options=d,this.index=e,this.path=a,this.features=c,this.currentFileInfo=f,this.options.less!==b||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/css([\?;].*)?$/.test(g)&&(this.css=!0)}},a.Import.prototype={type:"Import",accept:function(a){this.features=a.visit(this.features),this.path=a.visit(this.path),this.options.inline||(this.root=a.visit(this.root))},genCSS:function(a,b){this.css&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},toCSS:a.toCSS,getPath:function(){if(this.path instanceof a.Quoted){var c=this.path.value;return this.css!==b||/(\.[a-z]*$)|([\?;].*)$/.test(c)?c:c+".less"}return this.path instanceof a.URL?this.path.value.value:null},evalForImport:function(b){return new a.Import(this.path.eval(b),this.features,this.options,this.index,this.currentFileInfo)},evalPath:function(b){var c=this.path.eval(b),d=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(c instanceof a.URL)){if(d){var e=c.value;e&&b.isPathRelative(e)&&(c.value=d+e)}c.value=b.normalizePath(c.value)}return c},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.skip)return[];if(this.options.inline){var e=new a.Anonymous(this.root,0,{filename:this.importedFilename},!0);return this.features?new a.Media([e],this.features.value):[e]}if(this.css){var f=new a.Import(this.evalPath(b),d,this.options,this.index);if(!f.css&&this.error)throw this.error;return f}return c=new a.Ruleset([],this.root.rules.slice(0)),c.evalImports(b),this.features?new a.Media(c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={type:"JavaScript",eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify(new a.Variable("@"+e,d.index).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return"string"==typeof c?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={type:"Keyword",eval:function(){return this},genCSS:function(a,b){b.add(this.value)},toCSS:a.toCSS,compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.Media=function(b,c,d,e){this.index=d,this.currentFileInfo=e;var f=this.emptySelectors();this.features=new a.Value(c),this.rules=[new a.Ruleset(f,b)],this.rules[0].allowImports=!0},a.Media.prototype={type:"Media",accept:function(a){this.features=a.visit(this.features),this.rules=a.visit(this.rules)},genCSS:function(b,c){c.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(b,c),a.outputRuleset(b,c,this.rules)},toCSS:a.toCSS,eval:function(b){b.mediaBlocks||(b.mediaBlocks=[],b.mediaPath=[]);var c=new a.Media([],[],this.index,this.currentFileInfo);this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,c.debugInfo=this.debugInfo);var d=!1;b.strictMath||(d=!0,b.strictMath=!0);try{c.features=this.features.eval(b)}finally{d&&(b.strictMath=!1)}return b.mediaPath.push(c),b.mediaBlocks.push(c),b.frames.unshift(this.rules[0]),c.rules=[this.rules[0].eval(b)],b.frames.shift(),b.mediaPath.pop(),0===b.mediaPath.length?c.evalTop(b):c.evalNested(b)},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},emptySelectors:function(){var b=new a.Element("","&",this.index,this.currentFileInfo);return[new a.Selector([b],null,null,this.index,this.currentFileInfo)]},markReferenced:function(){var a,b=this.rules[0].rules;for(this.isReferenced=!0,a=0;a1){var d=this.emptySelectors();c=new a.Ruleset(d,b.mediaBlocks),c.multiMedia=!0}return delete b.mediaBlocks,delete b.mediaPath,c},evalNested:function(b){var c,d,e=b.mediaPath.concat([this]);for(c=0;c0;c--)b.splice(c,0,new a.Anonymous("and"));return new a.Expression(b)})),new a.Ruleset([],[])},permute:function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(j=!0,g=0;gthis.params.length)return!1}c=Math.min(d,this.arity);for(var e=0;c>e;e++)if(!this.params[e].name&&!this.params[e].variadic&&a[e].value.eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Negative=function(a){this.value=a},a.Negative.prototype={type:"Negative",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("-"),this.value.genCSS(a,b)},toCSS:a.toCSS,eval:function(b){return b.isMathOn()?new a.Operation("*",[new a.Dimension(-1),this.value]).eval(b):new a.Negative(this.value.eval(b))}}}(c("../tree")),function(a){a.Operation=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c},a.Operation.prototype={type:"Operation",accept:function(a){this.operands=a.visit(this.operands)},eval:function(b){var c,d=this.operands[0].eval(b),e=this.operands[1].eval(b);if(b.isMathOn()){if(d instanceof a.Dimension&&e instanceof a.Color){if("*"!==this.op&&"+"!==this.op)throw{type:"Operation",message:"Can't substract or divide a color from a number"};c=e,e=d,d=c}if(!d.operate)throw{type:"Operation",message:"Operation on an invalid type"};return d.operate(b,this.op,e)}return new a.Operation(this.op,[d,e],this.isSpaced)},genCSS:function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},toCSS:a.toCSS},a.operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={type:"Paren",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d,e){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e},a.Quoted.prototype={type:"Quoted",genCSS:function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},toCSS:a.toCSS,eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return new a.JavaScript(e,c.index,!0).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=new a.Variable("@"+e,c.index,c.currentFileInfo).eval(b,!0);return f instanceof a.Quoted?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},compare:function(a){if(!a.toCSS)return-1;var b=this.toCSS(),c=a.toCSS();return b===c?0:c>b?-1:1}}}(c("../tree")),function(a){a.Rule=function(b,c,d,e,f,g,h){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.merge=e,this.index=f,this.currentFileInfo=g,this.inline=h||!1,this.variable="@"===b.charAt(0)},a.Rule.prototype={type:"Rule",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},toCSS:a.toCSS,eval:function(b){var c=!1;"font"!==this.name||b.strictMath||(c=!0,b.strictMath=!0);try{return new a.Rule(this.name,this.value.eval(b),this.important,this.merge,this.index,this.currentFileInfo,this.inline)}finally{c&&(b.strictMath=!1)}},makeImportant:function(){return new a.Rule(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)}}}(c("../tree")),function(a){a.Ruleset=function(a,b,c){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c},a.Ruleset.prototype={type:"Ruleset",accept:function(a){if(this.paths)for(var b=0;bd?Array.prototype.push.apply(e,f.find(new a.Selector(b.elements.slice(d)),c)):e.push(f);break}}),this._lookups[f]=e)},genCSS:function(b,c){var d,e,f,g,h,i=[],j=[],k=!0;b.tabLevel=b.tabLevel||0,this.root||b.tabLevel++;var l=b.compress?"":Array(b.tabLevel+1).join(" "),m=b.compress?"":Array(b.tabLevel).join(" ");for(d=0;d0&&this.mergeElementsOnToSelectors(r,i),f=0;f0&&(k[0].elements=k[0].elements.slice(0),k[0].elements.push(new a.Element(j.combinator,"",0,j.index,j.currentFileInfo))),s.push(k);else for(g=0;g0?(m=k.slice(0),q=m.pop(),o=d.createDerived(q.elements.slice(0)),p=!1):o=d.createDerived([]),l.length>1&&(n=n.concat(l.slice(1))),l.length>0&&(p=!1,o.elements.push(new a.Element(j.combinator,l[0].elements[0].value,j.index,j.currentFileInfo)),o.elements=o.elements.concat(l[0].elements.slice(1))),p||m.push(o),m=m.concat(n),s.push(m);i=s,r=[]}for(r.length>0&&this.mergeElementsOnToSelectors(r,i),e=0;e0&&b.push(i[e])}else if(c.length>0)for(e=0;e0?e[e.length-1]=e[e.length-1].createDerived(e[e.length-1].elements.concat(b)):e.push(new a.Selector(b))}}}(c("../tree")),function(a){a.Selector=function(a,b,c,d,e,f){this.elements=a,this.extendList=b||[],this.condition=c,this.currentFileInfo=e||{},this.isReferenced=f,c||(this.evaldCondition=!0)},a.Selector.prototype={type:"Selector",accept:function(a){this.elements=a.visit(this.elements),this.extendList=a.visit(this.extendList),this.condition=a.visit(this.condition)},createDerived:function(b,c,d){d=null!=d?d:this.evaldCondition;var e=new a.Selector(b,c||this.extendList,this.condition,this.index,this.currentFileInfo,this.isReferenced);return e.evaldCondition=d,e},match:function(a){var b,c,d,e,f=this.elements,g=f.length;if(b=a.elements.slice(a.elements.length&&"&"===a.elements[0].value?1:0),c=b.length,d=Math.min(g,c),0===c||c>g)return 0;for(e=0;d>e;e++)if(f[e].value!==b[e].value)return 0;return d},eval:function(a){var b=this.condition&&this.condition.eval(a);return this.createDerived(this.elements.map(function(b){return b.eval(a)}),this.extendList.map(function(b){return b.eval(a)}),b)},genCSS:function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;c0)&&e.splice(0,0,b);else{b.paths=b.paths.filter(function(b){var c;for(" "===b[0].elements[0].combinator.value&&(b[0].elements[0].combinator=new a.Combinator("")),c=0;c0&&b.accept(this._visitor),c.visitDeeper=!1,this._mergeRules(b.rules),this._removeDuplicateRules(b.rules),b.rules.length>0&&b.paths.length>0&&e.splice(0,0,b)}return 1===e.length?e[0]:e},_removeDuplicateRules:function(b){var c,d,e,f={};for(e=b.length-1;e>=0;e--)if(d=b[e],d instanceof a.Rule)if(f[d.name]){c=f[d.name],c instanceof a.Rule&&(c=f[d.name]=[f[d.name].toCSS(this._env)]);var g=d.toCSS(this._env);-1!==c.indexOf(g)?b.splice(e,1):c.push(g)}else f[d.name]=d},_mergeRules:function(b){for(var c,d,e,f={},g=0;g1&&(d=c[0],d.value=new a.Value(c.map(function(a){return a.value})))})}}}(c("./tree")),function(a){a.extendFinderVisitor=function(){this._visitor=new a.visitor(this),this.contexts=[],this.allExtendsStack=[[]]},a.extendFinderVisitor.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(b){if(!b.root){var c,d,e,f,g=[];for(c=0;c100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,c,d+1))}return m},inInheritanceChain:function(a,b){if(a===b)return!0;if(b.parents){if(this.inInheritanceChain(a,b.parents[0]))return!0;if(this.inInheritanceChain(a,b.parents[1]))return!0}return!1},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){if(!a.root){var b,c,d,e,f=this.allExtendsStack[this.allExtendsStack.length-1],g=[],h=this;for(d=0;d0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1j&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),k=0,j++),i=f.elements.slice(k,h.index).concat([g]).concat(d.elements.slice(1)),j===h.pathIndex&&e>0?l[l.length-1].elements=l[l.length-1].elements.concat(i):(l=l.concat(c.slice(j,h.pathIndex)),l.push(new a.Selector(i))),j=h.endPathIndex,k=h.endPathElementIndex,k>=c[j].elements.length&&(k=0,j++);return j0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),j++),l=l.concat(c.slice(j,c.length))},visitRulesetOut:function(){},visitMedia:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}}}(c("./tree")),function(a){a.sourceMapOutput=function(a){this._css=[],this._rootNode=a.rootNode,this._writeSourceMap=a.writeSourceMap,this._contentsMap=a.contentsMap,this._sourceMapFilename=a.sourceMapFilename,this._outputFilename=a.outputFilename,this._sourceMapURL=a.sourceMapURL,this._sourceMapBasepath=a.sourceMapBasepath,this._sourceMapRootpath=a.sourceMapRootpath,this._outputSourceFiles=a.outputSourceFiles,this._sourceMapGeneratorConstructor=a.sourceMapGenerator||c("source-map").SourceMapGenerator,this._sourceMapRootpath&&"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/"),this._lineNumber=0,this._column=0},a.sourceMapOutput.prototype.normalizeFilename=function(a){return this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),("\\"===a.charAt(0)||"/"===a.charAt(0))&&(a=a.substring(1))),(this._sourceMapRootpath||"")+a.replace(/\\/g,"/")},a.sourceMapOutput.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename].substring(0,c);f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;i0){var c,d=JSON.stringify(this._sourceMapGenerator.toJSON());this._sourceMapURL?c=this._sourceMapURL:this._sourceMapFilename&&(c=this.normalizeFilename(this._sourceMapFilename)),this._writeSourceMap?this._writeSourceMap(d):c="data:application/json,"+encodeURIComponent(d),c&&this._css.push("/*# sourceMappingURL="+c+" */")}return this._css.join("")}}(c("./tree"));var y=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);w.env=w.env||("127.0.0.1"==location.hostname||"0.0.0.0"==location.hostname||"localhost"==location.hostname||location.port&&location.port.length>0||y?"development":"production");var z={info:2,errors:1,none:0};if(w.logLevel="undefined"!=typeof w.logLevel?w.logLevel:z.info,w.async=w.async||!1,w.fileAsync=w.fileAsync||!1,w.poll=w.poll||(y?1e3:1500),w.functions)for(var A in w.functions)w.tree.functions[A]=w.functions[A];var B=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);B&&(w.dumpLineNumbers=B[1]);var C=/^text\/(x-)?less$/,D=null,E={},F="";if(w.watch=function(){return w.watchMode||(w.env="development",u()),this.watchMode=!0},w.unwatch=function(){return clearInterval(w.watchTimer),this.watchMode=!1},/!watch/.test(location.hash)&&w.watch(),"development"!=w.env)try{D="undefined"==typeof a.localStorage?null:a.localStorage}catch(G){}var H=document.getElementsByTagName("link");w.sheets=[];for(var I=0;Ic;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},h=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},l=function(a){return"/"!=a.slice(-1)&&(a+="/"),this.files[a]||j.call(this,a,null,{dir:!0}),this.files[a]},m=function(a,b){var c,e=new JSZip.CompressedObject;return a._data instanceof JSZip.CompressedObject?(e.uncompressedSize=a._data.uncompressedSize,e.crc32=a._data.crc32,0===e.uncompressedSize||a.options.dir?(b=JSZip.compressions.STORE,e.compressedContent="",e.crc32=0):a._data.compressionMethod===b.magic?e.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),e.compressedContent=b.compress(JSZip.utils.transformTo(b.compressInputType,c)))):(c=d(a),(!c||0===c.length||a.options.dir)&&(b=JSZip.compressions.STORE,c=""),e.uncompressedSize=c.length,e.crc32=this.crc32(c),e.compressedContent=b.compress(JSZip.utils.transformTo(b.compressInputType,c))),e.compressedSize=e.compressedContent.length,e.compressionMethod=b.magic,e},n=function(a,b,c,d){var e,f,h=(c.compressedContent,this.utf8encode(b.name)),i=h!==b.name,j=b.options;e=j.date.getHours(),e<<=6,e|=j.date.getMinutes(),e<<=5,e|=j.date.getSeconds()/2,f=j.date.getFullYear()-1980,f<<=4,f|=j.date.getMonth()+1,f<<=5,f|=j.date.getDate();var k="";k+="\n\x00",k+=i?"\x00\b":"\x00\x00",k+=c.compressionMethod,k+=g(e,2),k+=g(f,2),k+=g(c.crc32,4),k+=g(c.compressedSize,4),k+=g(c.uncompressedSize,4),k+=g(h.length,2),k+="\x00\x00";var l=JSZip.signature.LOCAL_FILE_HEADER+k+h,m=JSZip.signature.CENTRAL_FILE_HEADER+"\x00"+k+"\x00\x00\x00\x00\x00\x00"+(b.options.dir===!0?"\x00\x00\x00":"\x00\x00\x00\x00")+g(d,4)+h;return{fileRecord:l,dirRecord:m,compressedObject:c}},o=function(){this.data=[]};o.prototype={append:function(a){a=JSZip.utils.transformTo("string",a),this.data.push(a)},finalize:function(){return this.data.join("")}};var p=function(a){this.data=new Uint8Array(a),this.index=0};return p.prototype={append:function(a){0!==a.length&&(a=JSZip.utils.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},{load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,g=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new f(d.name,d._data,h(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&g.push(e));return g},file:function(a,b,c){if(1===arguments.length){if(JSZip.utils.isRegExp(a)){var d=a;return this.filter(function(a,b){return!b.options.dir&&d.test(a)})}return this.filter(function(b,c){return!c.options.dir&&b===a})[0]||null}return a=this.root+a,j.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(JSZip.utils.isRegExp(a))return this.filter(function(b,c){return c.options.dir&&a.test(b)});var b=this.root+a,c=l.call(this,b),d=this.clone();return d.root=c.name,d},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b)if(b.options.dir)for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;dh;h++)g=c?a[h]:a.charCodeAt(h),f=255&(b^g),e=d[f],b=b>>>8^e;return-1^b},clone:function(){var a=new JSZip;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a},utf8encode:function(b){if(a){var c=a.encode(b);return JSZip.utils.transformTo("string",c)}if(JSZip.support.nodebuffer)return JSZip.utils.transformTo("string",new Buffer(b,"utf-8"));for(var d=[],e=0,f=0;fg?d[e++]=String.fromCharCode(g):g>127&&2048>g?(d[e++]=String.fromCharCode(g>>6|192),d[e++]=String.fromCharCode(63&g|128)):(d[e++]=String.fromCharCode(g>>12|224),d[e++]=String.fromCharCode(g>>6&63|128),d[e++]=String.fromCharCode(63&g|128))}return d.join("")},utf8decode:function(a){var c=[],d=0,e=JSZip.utils.getTypeOf(a),f="string"!==e,g=0,h=0,i=0,j=0;if(b)return b.decode(JSZip.utils.transformTo("uint8array",a));if(JSZip.support.nodebuffer)return JSZip.utils.transformTo("nodebuffer",a).toString("utf-8");for(;gh?(c[d++]=String.fromCharCode(h),g++):h>191&&224>h?(i=f?a[g+1]:a.charCodeAt(g+1),c[d++]=String.fromCharCode((31&h)<<6|63&i),g+=2):(i=f?a[g+1]:a.charCodeAt(g+1),j=f?a[g+2]:a.charCodeAt(g+2),c[d++]=String.fromCharCode((15&h)<<12|(63&i)<<6|63&j),g+=3);return c.join("")}}}(),JSZip.compressions={STORE:{magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null}},function(){function a(a){return a}function b(a,b){for(var c=0;cf&&b>1;)try{"array"===e||"nodebuffer"===e?c.push(String.fromCharCode.apply(null,a.slice(f,Math.min(f+b,d)))):c.push(String.fromCharCode.apply(null,a.subarray(f,Math.min(f+b,d)))),f+=b}catch(h){b=Math.floor(b/2)}return c.join("")}function d(a,b){for(var c=0;c>2,g=(3&c)<<4|d>>4,h=(15&d)<<2|e>>6,i=63&e,isNaN(d)?h=i=64:isNaN(e)&&(i=64),j=j+a.charAt(f)+a.charAt(g)+a.charAt(h)+a.charAt(i);return j},decode:function(b){var c,d,e,f,g,h,i,j="",k=0;for(b=b.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,d=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(c),64!=h&&(j+=String.fromCharCode(d)),64!=i&&(j+=String.fromCharCode(e));return j}}}(),function(){var a=(Object.prototype.toString,"a"!="a"[0]),b=function(b){if(null==b)throw new TypeError;return a&&"string"==typeof b&&b?b.split(""):Object(b)};Array.prototype.forEach||(Array.prototype.forEach=function(a){for(var c=b(this),d=arguments[1],e=0,f=c.length>>>0;f>e;)e in c&&a.call(d,c[e],e,c),e++}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var c=b(this),d=c.length>>>0;if(!d&&1==arguments.length)throw new TypeError;var e,f=0;if(arguments.length<2)for(;;){if(f in c){e=c[f++];break}if(++f>=d)throw new TypeError}else e=arguments[1];for(;d>f;f++)f in c&&(e=a.call(void 0,e,c[f],f,c));return e});var c,d,e;if(function(){function a(a,b){if(a&&"."===a.charAt(0)&&b){b=b.split("/"),b=b.slice(0,b.length-1),a=b.concat(a.split("/"));var c,d;for(c=0;d=a[c];c++)if("."===d)a.splice(c,1),c-=1;else if(".."===d){if(1===c&&(".."===a[2]||".."===a[0]))break;c>0&&(a.splice(c-1,2),c-=2)}a=a.join("/")}return a}function b(a,b){return function(){return j.apply(null,l.call(arguments,0).concat([a,b]))}}function f(b){return function(c){return a(c,b)}}function g(a){return function(b){k[a]=b}}function h(b,c){var d,e,g=b.indexOf("!");return-1!==g?(d=a(b.slice(0,g),c),b=b.slice(g+1),e=k[d],b=e&&e.normalize?e.normalize(b,f(c)):a(b,c)):b=a(b,c),{f:d?d+"!"+b:b,n:b,p:e}}function i(a,c,d,e){var f,i,j,l,m,n,o=[];if(e||(e=a),"function"==typeof d){if(c)for(l=0;l=48&&57>=a}function e(a){return d(a)||c(a)}function f(a){return J.non_spacing_mark.test(a)||J.space_combining_mark.test(a)}function g(a){return J.connector_punctuation.test(a)}function h(a){return"$"==a||"_"==a||c(a)}function i(a){return h(a)||f(a)||d(a)||g(a)||"‌"==a||"‍"==a}function j(a){return C.test(a)?parseInt(a.substr(2),16):D.test(a)?parseInt(a.substr(1),8):E.test(a)?parseFloat(a):void 0}function k(a,b,c,d){this.message=a,this.line=b,this.col=c,this.pos=d,this.stack=(new Error).stack}function l(a,b,c,d){throw new k(a,b,c,d)}function m(a,b,c){return a.type==b&&(null==c||a.value==c)}function n(a){function b(){return O.text.charAt(O.pos)}function c(a,b){var c=O.text.charAt(O.pos++);if(a&&!c)throw K;return"\n"==c?(O.newline_before=O.newline_before||!b,++O.line,O.col=0):++O.col,c}function f(a,b){var c=O.text.indexOf(a,O.pos);if(b&&-1==c)throw K;return c}function g(){O.tokline=O.line,O.tokcol=O.col,O.tokpos=O.pos}function k(a,b,c){O.regex_allowed="operator"==a&&!w(M,b)||"keyword"==a&&w(z,b)||"punc"==a&&w(H,b);var d={type:a,value:b,line:O.tokline,col:O.tokcol,pos:O.tokpos,nlb:O.newline_before};return c||(d.comments_before=O.comments_before,O.comments_before=[]),O.newline_before=!1,d}function m(){for(;w(G,b());)c()}function n(a){for(var d="",e=b(),f=0;e&&a(e,f++);)d+=c(),e=b();return d}function o(a){l(a,O.tokline,O.tokcol,O.tokpos)}function p(a){var b=!1,c=!1,d=!1,f="."==a,g=n(function(g,h){return"x"==g||"X"==g?d?!1:d=!0:d||"E"!=g&&"e"!=g?"-"==g?c||0==h&&!a?!0:!1:"+"==g?c:(c=!1,"."==g?f||d?!1:f=!0:e(g)):b?!1:b=c=!0});a&&(g=a+g);var h=j(g);return isNaN(h)?(o("Invalid syntax: "+g),void 0):k("num",h)}function q(a){var b=c(!0,a);switch(b){case"n":return"\n";case"r":return"\r";case"t":return" ";case"b":return"\b";case"v":return" ";case"f":return"\f";case"0":return"\x00";case"x":return String.fromCharCode(r(2));case"u":return String.fromCharCode(r(4));case"\n":return"";default:return b}}function r(a){for(var b=0;a>0;--a){var d=parseInt(c(!0),16);isNaN(d)&&o("Invalid hex-character pattern in string"),b=b<<4|d}return b}function s(){return L("Unterminated string constant",function(){for(var a=c(),b="";;){var d=c(!0);if("\\"==d){var e=0,f=null;d=n(function(a){if(a>="0"&&"7">=a){if(!f)return f=a,++e;if("3">=f&&2>=e)return++e;if(f>="4"&&1>=e)return++e}return!1}),d=e>0?String.fromCharCode(parseInt(d,8)):q(!0)}else if(d==a)break;b+=d}return k("string",b)})}function t(){c();var a,b=f("\n");return-1==b?(a=O.text.substr(O.pos),O.pos=O.text.length):(a=O.text.substring(O.pos,b),O.pos=b),k("comment1",a,!0)}function u(){return c(),L("Unterminated multiline comment",function(){var a=f("*/",!0),b=O.text.substring(O.pos,a),c=k("comment2",b,!0);return O.pos=a+2,O.line+=b.split("\n").length-1,O.newline_before=b.indexOf("\n")>=0,/^@cc_on/i.test(b)&&(R("WARNING: at line "+O.line),R('*** Found "conditional comment": '+b),R("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer.")),c})}function v(){for(var a,d=!1,e="";null!=(a=b());)if(d)"u"!=a&&o("Expecting UnicodeEscapeSequence -- uXXXX"),a=q(),i(a)||o("Unicode char: "+a.charCodeAt(0)+" is not valid in identifier"),e+=a,d=!1;else if("\\"==a)d=!0,c();else{if(!i(a))break;e+=c()}return e}function y(a){return L("Unterminated regular expression",function(){for(var b,d=!1,e=!1;b=c(!0);)if(d)a+="\\"+b,d=!1;else if("["==b)e=!0,a+=b;else if("]"==b&&e)e=!1,a+=b;else{if("/"==b&&!e)break;"\\"==b?d=!0:a+=b}var f=v();return k("regexp",[a,f])})}function C(a){function d(a){if(!b())return a;var e=a+b();return w(F,e)?(c(),d(e)):a}return k("operator",d(a||c()))}function D(){c();var a=O.regex_allowed;switch(b()){case"/":return O.comments_before.push(t()),O.regex_allowed=a,N();case"*":return O.comments_before.push(u()),O.regex_allowed=a,N()}return O.regex_allowed?y(""):C("/")}function E(){return c(),d(b())?p("."):k("punc",".")}function J(){var a=v();return w(x,a)?w(F,a)?k("operator",a):w(A,a)?k("atom",a):k("keyword",a):k("name",a)}function L(a,b){try{return b()}catch(c){if(c!==K)throw c;o(a)}}function N(a){if(null!=a)return y(a);m(),g();var e=b();return e?d(e)?p():'"'==e||"'"==e?s():w(I,e)?k("punc",c()):"."==e?E():"/"==e?D():w(B,e)?C():"\\"==e||h(e)?J():(o("Unexpected character '"+e+"'"),void 0):k("eof")}var O={text:a.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/^\uFEFF/,""),pos:0,tokpos:0,line:0,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]};return N.context=function(a){return a&&(O=a),O},N}function o(a,b,c){this.name=a,this.start=b,this.end=c}function p(a,b,c){function d(a,b){return m(gb.token,a,b)}function e(){return gb.peeked||(gb.peeked=gb.input())}function f(){return gb.prev=gb.token,gb.peeked?(gb.token=gb.peeked,gb.peeked=null):gb.token=gb.input(),gb.token}function g(){return gb.prev}function h(a,b,c,d){var e=gb.input.context();l(a,null!=b?b:e.tokline,null!=c?c:e.tokcol,null!=d?d:e.tokpos)}function i(a,b){h(b,a.line,a.col)}function j(a){null==a&&(a=gb.token),i(a,"Unexpected token: "+a.type+" ("+a.value+")")}function k(a,b){return d(a,b)?f():(i(gb.token,"Unexpected token "+gb.token.type+", expected "+a),void 0)}function p(a){return k("punc",a)}function s(){return!b&&(gb.token.nlb||d("eof")||d("punc","}"))}function u(){d("punc",";")?f():s()||j()}function x(){return t(arguments)}function y(){p("(");var a=lb();return p(")"),a}function z(a,b,c){return a instanceof o?a:new o(a,b,c)}function A(a){return c?function(){var b=gb.token,c=a.apply(this,arguments);return c[0]=z(c[0],b,g()),c}:a}function B(a){gb.labels.push(a);var c=gb.token,d=hb();return b&&!w(P,d[0])&&j(c),gb.labels.pop(),x("label",a,d)}function C(){return x("stat",r(lb,u))}function D(a){var b;return s()||(b=d("name")?gb.token.value:null),null!=b?(f(),v(b,gb.labels)||h("Label "+b+" without matching loop or statement")):0==gb.in_loop&&h(a+" not inside a loop or switch"),u(),x(a,b)}function E(){p("(");var a=null;return!d("punc",";")&&(a=d("keyword","var")?(f(),R(!0)):lb(!0,!0),d("operator","in"))?G(a):F(a)}function F(a){p(";");var b=d("punc",";")?null:lb();p(";");var c=d("punc",")")?null:lb();return p(")"),x("for",a,b,c,fb(hb))}function G(a){var b="var"==a[0]?x("name",a[1][0]):a;f();var c=lb();return p(")"),x("for-in",a,b,c,fb(hb))}function H(){var a,b=y(),c=hb();return d("keyword","else")&&(f(),a=hb()),x("if",b,c,a)}function I(){p("{");for(var a=[];!d("punc","}");)d("eof")&&j(),a.push(hb());return f(),a}function J(){var a,b,c=I();if(d("keyword","catch")){f(),p("("),d("name")||h("Name expected");var e=gb.token.value;f(),p(")"),a=[e,I()]}return d("keyword","finally")&&(f(),b=I()),!a&&!b&&h("Missing catch/finally blocks"),x("try",c,a,b)}function K(a){for(var b=[];;){d("name")||j();var c=gb.token.value;if(f(),d("operator","=")?(f(),b.push([c,lb(!1,a)])):b.push([c]),!d("punc",","))break;f()}return b}function R(a){return x("var",K(a))}function S(){return x("const",K())}function T(){var a,b=kb(!1);return d("punc","(")?(f(),a=U(")")):a=[],Z(x("new",b,a),!0)}function U(a,b,c){for(var e=!0,g=[];!d("punc",a)&&(e?e=!1:p(","),!b||!d("punc",a));)d("punc",",")&&c?g.push(["atom","undefined"]):g.push(lb(!1));return f(),g}function V(){return x("array",U("]",!b,!0))}function W(){for(var a=!0,c=[];!d("punc","}")&&(a?a=!1:p(","),b||!d("punc","}"));){var e=gb.token.type,g=X();"name"!=e||"get"!=g&&"set"!=g||d("punc",":")?(p(":"),c.push([g,lb(!1)])):c.push([Y(),ib(!1),g])}return f(),x("object",c)}function X(){switch(gb.token.type){case"num":case"string":return r(gb.token.value,f)}return Y()}function Y(){switch(gb.token.type){case"name":case"operator":case"keyword":case"atom":return r(gb.token.value,f);default:j()}}function Z(a,b){return d("punc",".")?(f(),Z(x("dot",a,Y()),b)):d("punc","[")?(f(),Z(x("sub",a,r(lb,q(p,"]"))),b)):b&&d("punc","(")?(f(),Z(x("call",a,U(")")),!0)):a}function $(a){if(d("operator")&&w(L,gb.token.value))return _("unary-prefix",r(gb.token.value,f),$(a));for(var b=kb(a);d("operator")&&w(M,gb.token.value)&&!gb.token.nlb;)b=_("unary-postfix",gb.token.value,b),f();return b}function _(a,b,c){return("++"==b||"--"==b)&&!db(c)&&h("Invalid use of "+b+" operator"),x(a,b,c)}function ab(a,b,c){var e=d("operator")?gb.token.value:null;e&&"in"==e&&c&&(e=null);var g=null!=e?O[e]:null;if(null!=g&&g>b){f();var h=ab($(!0),g,c);return ab(x("binary",e,a,h),b,c)}return a}function bb(a){return ab($(!0),0,a)}function cb(a){var b=bb(a);if(d("operator","?")){f();var c=lb(!1);return p(":"),x("conditional",b,c,lb(!1,a))}return b}function db(a){if(!b)return!0;switch(a[0]+""){case"dot":case"sub":case"new":case"call":return!0;case"name":return"this"!=a[1]}}function eb(a){var b=cb(a),c=gb.token.value;if(d("operator")&&w(N,c)){if(db(b))return f(),x("assign",N[c],b,eb(a));h("Invalid assignment")}return b}function fb(a){try{return++gb.in_loop,a()}finally{--gb.in_loop}}var gb={input:"string"==typeof a?n(a,!0):a,token:null,prev:null,peeked:null,in_function:0,in_loop:0,labels:[]};gb.token=f();var hb=A(function(){switch((d("operator","/")||d("operator","/="))&&(gb.peeked=null,gb.token=gb.input(gb.token.value.substr(1))),gb.token.type){case"num":case"string":case"regexp":case"operator":case"atom":return C();case"name":return m(e(),"punc",":")?B(r(gb.token.value,f,f)):C();case"punc":switch(gb.token.value){case"{":return x("block",I());case"[":case"(":return C();case";":return f(),x("block");default:j()}case"keyword":switch(r(gb.token.value,f)){case"break":return D("break");case"continue":return D("continue");case"debugger":return u(),x("debugger");case"do":return function(a){return k("keyword","while"),x("do",r(y,u),a)}(fb(hb));case"for":return E();case"function":return ib(!0);case"if":return H();case"return":return 0==gb.in_function&&h("'return' outside of function"),x("return",d("punc",";")?(f(),null):s()?null:r(lb,u));case"switch":return x("switch",y(),jb());case"throw":return gb.token.nlb&&h("Illegal newline after 'throw'"),x("throw",r(lb,u));case"try":return J();case"var":return r(R,u);case"const":return r(S,u);case"while":return x("while",y(),fb(hb));case"with":return x("with",y(),hb());default:j()}}}),ib=A(function(a){var b=d("name")?r(gb.token.value,f):null;return a&&!b&&j(),p("("),x(a?"defun":"function",b,function(a,b){for(;!d("punc",")");)a?a=!1:p(","),d("name")||j(),b.push(gb.token.value),f();return f(),b}(!0,[]),function(){++gb.in_function;var a=gb.in_loop;gb.in_loop=0;var b=I();return--gb.in_function,gb.in_loop=a,b}())}),jb=q(fb,function(){p("{");for(var a=[],b=null;!d("punc","}");)d("eof")&&j(),d("keyword","case")?(f(),b=[],a.push([lb(),b]),p(":")):d("keyword","default")?(f(),p(":"),b=[],a.push([null,b])):(b||j(),b.push(hb()));return f(),a}),kb=A(function(a){if(d("operator","new"))return f(),T();if(d("punc")){switch(gb.token.value){case"(":return f(),Z(r(lb,q(p,")")),a);case"[":return f(),Z(V(),a);case"{":return f(),Z(W(),a)}j()}if(d("keyword","function"))return f(),Z(ib(!1),a);if(w(Q,gb.token.type)){var b="regexp"==gb.token.type?x("regexp",gb.token.value[0],gb.token.value[1]):x(gb.token.type,gb.token.value);return Z(r(b,f),a)}j()}),lb=A(function(a,b){0==arguments.length&&(a=!0);var c=eb(b);return a&&d("punc",",")?(f(),x("seq",c,lb(!0,b))):c});return x("toplevel",function(a){for(;!d("eof");)a.push(hb());return a}([]))}function q(a){var b=t(arguments,1);return function(){return a.apply(this,b.concat(t(arguments)))}}function r(a){a instanceof Function&&(a=a());for(var b=1,c=arguments.length;--c>0;++b)arguments[b]();return a}function s(a){for(var b={},c=0;c=0;)if(b[c]===a)return!0;return!1}function w(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var x=s(["break","case","catch","const","continue","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","throw","try","typeof","var","void","while","with"]),y=s(["abstract","boolean","byte","char","class","debugger","double","enum","export","extends","final","float","goto","implements","import","int","interface","long","native","package","private","protected","public","short","static","super","synchronized","throws","transient","volatile"]),z=s(["return","new","delete","throw","else","case"]),A=s(["false","null","true","undefined"]),B=s(u("+-*&%=<>!?|~^")),C=/^0x[0-9a-f]+$/i,D=/^0[0-7]+$/,E=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,F=s(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),G=s(u(" \n\r \f ​᠎              ")),H=s(u("[{}(,.;:")),I=s(u("[]{}(),;:")),J=(s(u("gmsiy")),{letter:new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")}); -k.prototype.toString=function(){return this.message+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")\n\n"+this.stack};var K={},L=s(["typeof","void","delete","--","++","!","~","-","+"]),M=s(["--","++"]),N=function(a,b,c){for(;c>=","<<=",">>>=","|=","^=","&="],{"=":!0},0),O=function(a,b){for(var c=0,d=1;c","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),P=s(["for","do","while","switch"]),Q=s(["atom","num","string","regexp","name"]);o.prototype.toString=function(){return this.name};var R=function(){};b.tokenizer=n,b.parse=p,b.slice=t,b.curry=q,b.member=v,b.array_to_hash=s,b.PRECEDENCE=O,b.KEYWORDS_ATOM=A,b.RESERVED_WORDS=y,b.KEYWORDS=x,b.ATOMIC_START_TOKEN=Q,b.OPERATORS=F,b.is_alphanumeric_char=e,b.set_logger=function(a){R=a}}),e("lib/process",["require","exports","module","./parse-js"],function(a,b){function c(){function a(a){return[this[0],F(a,function(a){var b=[a[0]];return a.length>1&&(b[1]=c(a[1])),b})]}function b(a){var b=[this[0]];return null!=a&&b.push(F(a,c)),b}function c(a){if(null==a)return null;try{h.push(a);var b=a[0],c=g[b];if(c){var d=c.apply(a,a.slice(1));if(null!=d)return d}return c=f[b],c.apply(a,a.slice(1))}finally{h.pop()}}function d(a){if(null==a)return null;try{return h.push(a),f[a[0]].apply(a,a.slice(1))}finally{h.pop()}}function e(a,b){var c,d={};for(c in a)y(a,c)&&(d[c]=g[c],g[c]=a[c]);var e=b();for(c in d)y(d,c)&&(d[c]?g[c]=d[c]:delete g[c]);return e}var f={string:function(a){return[this[0],a]},num:function(a){return[this[0],a]},name:function(a){return[this[0],a]},toplevel:function(a){return[this[0],F(a,c)]},block:b,splice:b,"var":a,"const":a,"try":function(a,b,d){return[this[0],F(a,c),null!=b?[b[0],F(b[1],c)]:null,null!=d?F(d,c):null]},"throw":function(a){return[this[0],c(a)]},"new":function(a,b){return[this[0],c(a),F(b,c)]},"switch":function(a,b){return[this[0],c(a),F(b,function(a){return[a[0]?c(a[0]):null,F(a[1],c)]})]},"break":function(a){return[this[0],a]},"continue":function(a){return[this[0],a]},conditional:function(a,b,d){return[this[0],c(a),c(b),c(d)]},assign:function(a,b,d){return[this[0],a,c(b),c(d)]},dot:function(a){return[this[0],c(a)].concat(A(arguments,1))},call:function(a,b){return[this[0],c(a),F(b,c)]},"function":function(a,b,d){return[this[0],a,b.slice(),F(d,c)]},defun:function(a,b,d){return[this[0],a,b.slice(),F(d,c)]},"if":function(a,b,d){return[this[0],c(a),c(b),c(d)]},"for":function(a,b,d,e){return[this[0],c(a),c(b),c(d),c(e)]},"for-in":function(a,b,d,e){return[this[0],c(a),c(b),c(d),c(e)]},"while":function(a,b){return[this[0],c(a),c(b)]},"do":function(a,b){return[this[0],c(a),c(b)]},"return":function(a){return[this[0],c(a)]},binary:function(a,b,d){return[this[0],a,c(b),c(d)]},"unary-prefix":function(a,b){return[this[0],a,c(b)]},"unary-postfix":function(a,b){return[this[0],a,c(b)]},sub:function(a,b){return[this[0],c(a),c(b)]},object:function(a){return[this[0],F(a,function(a){return 2==a.length?[a[0],c(a[1])]:[a[0],c(a[1]),a[2]]})]},regexp:function(a,b){return[this[0],a,b]},array:function(a){return[this[0],F(a,c)]},stat:function(a){return[this[0],c(a)]},seq:function(){return[this[0]].concat(F(A(arguments),c))},label:function(a,b){return[this[0],a,c(b)]},"with":function(a,b){return[this[0],c(a),c(b)]},atom:function(a){return[this[0],a]}},g={},h=[];return{walk:c,dive:d,with_walkers:e,parent:function(){return h[h.length-2]},stack:function(){return h}}}function d(a){this.names={},this.mangled={},this.rev_mangled={},this.cname=-1,this.refs={},this.uses_with=!1,this.uses_eval=!1,this.parent=a,this.children=[],a?(this.level=a.level+1,a.children.push(this)):this.level=0}function e(a){function b(a){i=new d(i);var b=i.body=a();return b.scope=i,i=i.parent,b}function e(a,b){return i.define(a,b)}function f(a){i.refs[a]=!0}function g(a,c,d){var f="defun"==this[0];return[this[0],f?e(a,"defun"):a,c,b(function(){return f||e(a,"lambda"),F(c,function(a){e(a,"arg")}),F(d,k)})]}function h(a){return function(b){F(b,function(b){e(b[0],a),b[1]&&f(b[0])})}}var i=null,j=c(),k=j.walk,l=[];return b(function(){function b(a,c){for(c=a.children.length;--c>=0;)b(a.children[c]);for(c in a.refs)if(y(a.refs,c))for(var d=a.has(c),e=a;e&&(e.refs[c]=d,e!==d);e=e.parent);}var c=j.with_walkers({"function":g,defun:g,label:function(a){e(a,"label")},"break":function(a){a&&f(a)},"continue":function(a){a&&f(a)},"with":function(){for(var a=i;a;a=a.parent)a.uses_with=!0},"var":h("var"),"const":h("const"),"try":function(a,b,c){return null!=b?[this[0],F(a,k),[e(b[0],"catch"),F(b[1],k)],null!=c?F(c,k):null]:void 0},name:function(a){"eval"==a&&l.push(i),f(a)}},function(){return k(a)});return F(l,function(a){if(!a.has("eval"))for(;a;)a.uses_eval=!0,a=a.parent}),b(i),c})}function f(a,b){function d(a,c){return b.toplevel||j.parent?b.except&&B(a,b.except)?a:j.get_mangled(a,c):a}function f(a){return b.defines?!j.has(a)&&y(b.defines,a)?b.defines[a]:null:void 0}function g(a,b,c){var e,f="defun"==this[0];return a&&(f?a=d(a):(e={},j.uses_eval||j.uses_with?e[a]=a:a=e[a]=j.next_mangled())),c=h(c.scope,function(){return b=F(b,function(a){return d(a)}),F(c,l)},e),[this[0],a,b,c]}function h(a,b,c){var e=j;if(j=a,c)for(var f in c)y(c,f)&&a.set_mangle(f,c[f]);for(var f in a.names)y(a.names,f)&&d(f,!0);var g=b();return g.scope=a,j=e,g}function i(a){return[this[0],F(a,function(a){return[d(a[0]),l(a[1])]})]}var j,k=c(),l=k.walk;return b=b||{},k.with_walkers({"function":g,defun:function(){var a=g.apply(this,arguments);switch(k.parent()[0]){case"toplevel":case"function":case"defun":return F.at_top(a)}return a},label:function(a,b){return[this[0],d(a),l(b)]},"break":function(a){return a?[this[0],d(a)]:void 0},"continue":function(a){return a?[this[0],d(a)]:void 0},"var":i,"const":i,name:function(a){return f(a)||[this[0],d(a)]},"try":function(a,b,c){return[this[0],F(a,l),null!=b?[d(b[0]),F(b[1],l)]:null,null!=c?F(c,l):null]},toplevel:function(a){var b=this;return h(b.scope,function(){return[b[0],F(a,l)]})}},function(){return l(e(a))})}function g(a,b){return t(a).length>t("stat"==b[0]?b[1]:b).length?b:a}function h(a){return"block"==a[0]&&a[1]&&a[1].length>0?a[1][a[1].length-1]:a}function i(a){if(a)switch(h(a)[0]){case"return":case"break":case"continue":case"throw":return!0}}function j(a){return"unary-prefix"==a[0]&&B(a[1],["!","delete"])||"binary"==a[0]&&B(a[1],["in","instanceof","==","!=","===","!==","<","<=",">=",">"])||"binary"==a[0]&&B(a[1],["&&","||"])&&j(a[2])&&j(a[3])||"conditional"==a[0]&&j(a[2])&&j(a[3])||"assign"==a[0]&&a[1]===!0&&j(a[3])||"seq"==a[0]&&j(a[a.length-1])}function k(a){return!a||"block"==a[0]&&(!a[1]||0==a[1].length)}function l(a){return"string"==a[0]||"unary-prefix"==a[0]&&"typeof"==a[1]||"binary"==a[0]&&"+"==a[1]&&(l(a[2])||l(a[3]))}function m(a){k(a)||G("Dropping unreachable code: "+t(a,!0))}function n(a){function b(a){a=F(a,g);for(var c=0;c0&&(o(["block",a],function(a,b,c,f){if("assign"==a[0]&&a[1]===!0&&"name"==a[2][0]&&y(d,a[2][1])){for(var g=e.length;--g>=0;)if(e[g][0]==a[2][1]){e[g][1]&&c(),e[g][1]=a[3],e.push(e.splice(g,1)[0]);break}var h=b.parent();if("seq"==h[0]){var i=h[2];i.unshift(0,h.length),h.splice.apply(h,i)}else"stat"==h[0]?h.splice(0,h.length,"block"):c();f()}c()}),a.unshift(["var",e])),g=c,a}function d(a){for(var b=null,c=a.length;--c>=0;){var d=a[c];d[1]&&(d=["assign",!0,["name",d[0]],d[1]],b=null==b?d:["seq",d,b])}return null==b?"for-in"==h.parent()[0]?["name",a[0][0]]:F.skip:["stat",b]}function f(a){return[this[0],b(a,this.scope)]}var g,h=c(),i=h.walk;return h.with_walkers({"function":function(a,c,d){for(var e=c.length;--e>=0&&!d.scope.references(c[e]);)c.pop();return d.scope.references(a)||(a=null),[this[0],a,c,b(d,d.scope)]},defun:function(a,c,d){if(!g.references(a))return F.skip;for(var e=c.length;--e>=0&&!d.scope.references(c[e]);)c.pop();return[this[0],a,c,b(d,d.scope)]},"var":d,toplevel:f},function(){return i(e(a))})}function q(a,b){function d(a){var c=["unary-prefix","!",a];switch(a[0]){case"unary-prefix":return"!"==a[1]&&j(a[2])?a[2]:c;case"seq":return a=A(a),a[a.length-1]=d(a[a.length-1]),a;case"conditional":return g(c,["conditional",a[1],d(a[2]),d(a[3])]);case"binary":var e=a[1],f=a[2],h=a[3];if(!b.keep_comps)switch(e){case"<=":return["binary",">",f,h];case"<":return["binary",">=",f,h];case">=":return["binary","<",f,h];case">":return["binary","<=",f,h]}switch(e){case"==":return["binary","!=",f,h];case"!=":return["binary","==",f,h];case"===":return["binary","!==",f,h];case"!==":return["binary","===",f,h];case"&&":return g(c,["binary","||",d(f),d(h)]);case"||":return g(c,["binary","&&",d(f),d(h)])}}return c}function f(a,b,c){var e=function(){return"unary-prefix"==a[0]&&"!"==a[1]?c?["conditional",a[2],c,b]:["binary","||",a[2],b]:c?g(["conditional",a,b,c],["conditional",d(a),c,b]):["binary","&&",a,b]};return H(a,function(a,d){return m(d?c:b),d?b:c},e)}function h(a,b){var c=u;u=a;var d=b();return d.scope=a,u=c,d}function l(a){return null!=a&&"block"==a[0]&&a[1]&&(1==a[1].length?a=a[1][0]:0==a[1].length&&(a=["block"])),a}function o(a,b,c){var d="defun"==this[0];return c=h(c.scope,function(){var b=p(c,"lambda");return!d&&a&&!u.references(a)&&(a=null),b}),[this[0],a,b,c]}function p(a){return a=F(a,y),a=a.reduce(function(a,b){return"block"==b[0]?b[1]&&a.push.apply(a,b[1]):a.push(b),a},[]),a=function(b,c){return a.forEach(function(a){c&&("var"==a[0]&&"var"==c[0]||"const"==a[0]&&"const"==c[0])?c[1]=c[1].concat(a[1]):(b.push(a),c=a)}),b}([]),b.dead_code&&(a=function(c,d){return a.forEach(function(a){d?"function"==a[0]||"defun"==a[0]?c.push(a):"var"==a[0]||"const"==a[0]?(b.no_warnings||G("Variables declared in unreachable code"),a[1]=F(a[1],function(a){return a[1]&&!b.no_warnings&&m(["assign",!0,["name",a[0]],a[1]]),[a[0]]}),c.push(a)):b.no_warnings||m(a):(c.push(a),B(a[0],["return","throw","break","continue"])&&(d=!0))}),c}([])),b.make_seqs&&(a=function(b,c){return a.forEach(function(a){c&&"stat"==c[0]&&"stat"==a[0]?c[1]=["seq",c[1],a[1]]:(b.push(a),c=a)}),b.length>=2&&"stat"==b[b.length-2][0]&&("return"==b[b.length-1][0]||"throw"==b[b.length-1][0])&&b[b.length-1][1]&&b.splice(b.length-2,2,[b[b.length-1][0],["seq",b[b.length-2][1],b[b.length-1][1]]]),b}([])),a}function q(a,b,c){return H(a,function(a,d){return d?(b=y(b),m(c),b||["block"]):(c=y(c),m(b),c||["block"])},function(){return r(a,b,c)})}function r(a,b,c){if(a=y(a),b=y(b),c=y(c),k(b)?(a=d(a),b=c,c=null):k(c)?c=null:function(){var e=t(a),f=d(a),g=t(f);if(g.length0){var e=d[d.length-1];"break"==e[0]&&!e[1]&&d.pop()}return[a[0]?y(a[0]):null,d]})]},"function":o,defun:o,block:function(a){return a?l(["block",p(a)]):void 0},binary:function(a,b,c){return H(["binary",a,y(b),y(c)],function(a){return g(y(a),this)},function(){return function(){if("=="==a||"!="==a){var d=y(b),e=y(c);return d&&"unary-prefix"==d[0]&&"!"==d[1]&&"num"==d[2][0]?b=["num",+!d[2][1]]:e&&"unary-prefix"==e[0]&&"!"==e[1]&&"num"==e[2][0]&&(c=["num",+!e[2][1]]),["binary",a,b,c]}}()||this})},conditional:function(a,b,c){return f(y(a),y(b),y(c))},"try":function(a,b,c){return["try",p(a),null!=b?[b[0],p(b[1])]:null,null!=c?p(c):null]},"unary-prefix":function(a,b){b=y(b);var c=["unary-prefix",a,b];return"!"==a&&(c=g(c,d(b))),H(c,function(a){return y(a)},function(){return c})},name:function(a){switch(a){case"true":return["unary-prefix","!",["num",0]];case"false":return["unary-prefix","!",["num",1]]}},"while":s,assign:function(a,b,c){b=y(b),c=y(c);var d=["+","-","/","*","%",">>","<<",">>>","|","^","&"];return a===!0&&"name"===b[0]&&"binary"===c[0]&&~d.indexOf(c[1])&&"name"===c[2][0]&&c[2][1]===b[1]?[this[0],c[1],b,c[3]]:[this[0],a,b,c]}},function(){for(var b=0;2>b;++b)a=n(a),a=e(a),a=y(a);return a})}function r(a,b){var c=0,d=0;return a=a.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g,function(a){switch(a){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case'"':return++c,'"';case"'":return++d,"'";case"\x00":return"\\0"}return a}),b&&(a=s(a)),c>d?"'"+a.replace(/\x27/g,"\\'")+"'":'"'+a.replace(/\x22/g,'\\"')+'"'}function s(a){return a.replace(/[\u0080-\uffff]/g,function(a){for(var b=a.charCodeAt(0).toString(16);b.length<4;)b="0"+b;return"\\u"+b})}function t(a,b){function d(a){var c=r(a,b.ascii_only);return b.inline_script&&(c=c.replace(/<\x2fscript([>/\t\n\f\r ])/gi,"<\\/script$1")),c}function e(a){return a=a.toString(),b.ascii_only&&(a=s(a)),a}function f(a){return null==a&&(a=""),H&&(a=v(" ",b.indent_start+K*b.indent_level)+a),a}function g(a,b){null==b&&(b=1),K+=b;try{return a.apply(null,A(arguments,1))}finally{K-=b}}function h(a){if(H)return a.join(" ");for(var b=[],c=0;cb.length?b:a}return l([a[0],l(a.slice(1))])}function m(a){if("function"==a[0]||"object"==a[0])for(var b=A(N.stack()),c=b.pop(),d=b.pop();d;){if("stat"==d[0])return!0;if(("seq"!=d[0]&&"call"!=d[0]&&"dot"!=d[0]&&"sub"!=d[0]&&"conditional"!=d[0]||d[1]!==c)&&("binary"!=d[0]&&"assign"!=d[0]&&"unary-postfix"!=d[0]||d[2]!==c))return!1;c=d,d=b.pop()}return!y(I,a[0])}function n(a){var b,c=a.toString(10),d=[c.replace(/^0\./,".")];return Math.floor(a)===a?(0>a?d.push("-0x"+(-a).toString(16).toLowerCase(),"-0"+(-a).toString(8)):d.push("0x"+a.toString(16).toLowerCase(),"0"+a.toString(8)),(b=/^(.*?)(0+)$/.exec(a))&&d.push(b[1]+"e"+b[2].length)):(b=/^0?\.(0+)(.*)$/.exec(a))&&d.push(b[2]+"e-"+(b[1].length+b[2].length),c.substr(c.indexOf("."))),l(d)}function o(a){if(null==a)return";";if("do"==a[0])return E([a]);for(var b=a;;){var c=b[0];if("if"==c){if(!b[3])return O(["block",[a]]);b=b[3]}else if("while"==c||"do"==c)b=b[2];else{if("for"!=c&&"for-in"!=c)break;b=b[4]}}return O(a)}function p(a,b,c,d){var f=d||"function";return a&&(f+=" "+e(a)),f+="("+i(F(b,e))+")",f=h([f,E(c)]),m(this)?"("+f+")":f}function q(a){switch(a[0]){case"with":case"while":return k(a[2]);case"for":case"for-in":return k(a[4]);case"if":return k(a[2])&&!a[3]?!0:a[3]?k(a[3])?!0:q(a[3]):q(a[2])}}function t(a,b){for(var c=[],d=a.length-1,e=0;d>=e;++e){var g=a[e],h=O(g);";"!=h&&(!H&&e==d&&!q(g)&&(h=h.replace(/;+\s*$/,"")),c.push(h))}return b?c:F(c,f)}function u(a){var b=a.length;return 0==b?"{}":"{"+L+F(a,function(a,c){var d=a[1].length>0,e=g(function(){return f(a[0]?h(["case",O(a[0])+":"]):"default:")},.5)+(d?L+g(function(){return t(a[1]).join(L)}):"");return!H&&d&&b-1>c&&(e+=";"),e}).join(L)+L+f("}")}function E(a){return a?0==a.length?"{}":"{"+L+g(function(){return t(a).join(L)})+L+f("}"):";"}function G(a){var b=a[0],c=a[1];return null!=c&&(b=h([e(b),"=",j(c,"seq")])),b}b=w(b,{indent_start:0,indent_level:4,quote_keys:!1,space_colon:!1,beautify:!1,ascii_only:!1,inline_script:!1});var H=!!b.beautify,K=0,L=H?"\n":"",M=H?" ":"",N=c(),O=N.walk;return N.with_walkers({string:d,num:n,name:e,toplevel:function(a){return t(a).join(L+L)},splice:function(a){var b=N.parent();return y(J,b)?E.apply(this,arguments):F(t(a,!0),function(a,b){return b>0?f(a):a}).join(L)},block:E,"var":function(a){return"var "+i(F(a,G))+";"},"const":function(a){return"const "+i(F(a,G))+";"},"try":function(a,b,c){var d=["try",E(a)];return b&&d.push("catch","("+b[0]+")",E(b[1])),c&&d.push("finally",E(c)),h(d)},"throw":function(a){return h(["throw",O(a)])+";"},"new":function(a,b){return b=b.length>0?"("+i(F(b,function(a){return j(a,"seq")}))+")":"",h(["new",j(a,"seq","binary","conditional","assign",function(a){var b=c(),d={};try{b.with_walkers({call:function(){throw d},"function":function(){return this}},function(){b.walk(a)})}catch(e){if(e===d)return!0;throw e}})+b])},"switch":function(a,b){return h(["switch","("+O(a)+")",u(b)])},"break":function(a){var b="break";return null!=a&&(b+=" "+e(a)),b+";"},"continue":function(a){var b="continue";return null!=a&&(b+=" "+e(a)),b+";"},conditional:function(a,b,c){return h([j(a,"assign","seq","conditional"),"?",j(b,"seq"),":",j(c,"seq")])},assign:function(a,b,c){return a&&a!==!0?a+="=":a="=",h([O(b),a,j(c,"seq")])},dot:function(a){var b=O(a),c=1;for("num"==a[0]?/\./.test(a[1])||(b+="."):m(a)&&(b="("+b+")");cC[c[1]]||"function"==c[0]&&m(this))&&(e="("+e+")"),B(d[0],["assign","conditional","seq"])||"binary"==d[0]&&C[a]>=C[d[1]]&&(d[1]!=a||!B(a,["&&","||","*"]))?f="("+f+")":!H&&b.inline_script&&("<"==a||"<<"==a)&&"regexp"==d[0]&&/^script/i.test(d[1])&&(f=" "+f),h([e,a,f])},"unary-prefix":function(a,b){var c=O(b);return"num"==b[0]||"unary-prefix"==b[0]&&!y(D,a+b[1])||!m(b)||(c="("+c+")"),a+(z.is_alphanumeric_char(a.charAt(0))?" ":"")+c},"unary-postfix":function(a,b){var c=O(b);return"num"==b[0]||"unary-postfix"==b[0]&&!y(D,a+b[1])||!m(b)||(c="("+c+")"),c+a},sub:function(a,b){var c=O(a);return m(a)&&(c="("+c+")"),c+"["+O(b)+"]"},object:function(a){var c=m(this);if(0==a.length)return c?"({})":"{}";var e="{"+L+g(function(){return F(a,function(a){if(3==a.length)return f(p(a[0],a[1][2],a[1][3],a[2]));var c=a[0],e=j(a[1],"seq");return b.quote_keys?c=d(c):("number"==typeof c||!H&&+c+""==c)&&parseFloat(c)>=0?c=n(+c):x(c)||(c=d(c)),f(h(H&&b.space_colon?[c,":",e]:[c+":",e]))}).join(","+L)})+L+f("}");return c?"("+e+")":e},regexp:function(a,b){return"/"+a+"/"+b},array:function(a){return 0==a.length?"[]":h(["[",i(F(a,function(b,c){return H||"atom"!=b[0]||"undefined"!=b[1]?j(b,"seq"):c===a.length-1?",":""})),"]"])},stat:function(a){return O(a).replace(/;*\s*$/,";")},seq:function(){return i(F(A(arguments),O))},label:function(a,b){return h([e(a),":",O(b)])},"with":function(a,b){return h(["with","("+O(a)+")",O(b)])},atom:function(a){return e(a)}},function(){return O(a)})}function u(a,b){var c=[0];return z.parse(function(){function d(a){return a.pos-i}function e(a){i=a.pos,c.push(i)}function f(){var a=h.apply(this,arguments);a:if((!g||"keyword"!=g.type)&&d(a)>b)switch(a.type){case"keyword":case"atom":case"name":case"punc":e(a);break a}return g=a,a}var g,h=z.tokenizer(a),i=0;return f.context=function(){return h.context.apply(this,arguments)},f}()),c.map(function(b,d){return a.substring(b,c[d+1]||a.length)}).join("\n")}function v(a,b){if(b>0){if(1==b)return a;var c=v(a,b>>1);return c+=c,1&b&&(c+=a),c}return""}function w(a,b){var c={};a===!0&&(a={});for(var d in b)y(b,d)&&(c[d]=a&&y(a,d)?a[d]:b[d]);return c}function x(a){return/^[a-z_$][a-z0-9_$]*$/i.test(a)&&"this"!=a&&!y(z.KEYWORDS_ATOM,a)&&!y(z.RESERVED_WORDS,a)&&!y(z.KEYWORDS,a)}function y(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var z=a("./parse-js"),A=z.slice,B=z.member,C=z.PRECEDENCE,D=z.OPERATORS,E=function(){var a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";return function(b){var c="";do c=a.charAt(b%54)+c,b=Math.floor(b/54);while(b>0);return c}}();d.prototype={has:function(a){for(var b=this;b;b=b.parent)if(y(b.names,a))return b},has_mangled:function(a){for(var b=this;b;b=b.parent)if(y(b.rev_mangled,a))return b},toJSON:function(){return{names:this.names,uses_eval:this.uses_eval,uses_with:this.uses_with}},next_mangled:function(){for(;;){var a,b=E(++this.cname);if(a=this.has_mangled(b),!(a&&this.refs[a.rev_mangled[b]]===a||(a=this.has(b),a&&a!==this&&this.refs[b]===a&&!a.has_mangled(b)||y(this.refs,b)&&null==this.refs[b]||!x(b))))return b}},set_mangle:function(a,b){return this.rev_mangled[b]=a,this.mangled[a]=b},get_mangled:function(a,b){if(this.uses_eval||this.uses_with)return a;var c=this.has(a);return c?y(c.mangled,a)?c.mangled[a]:b?c.set_mangle(a,c.next_mangled()):a:a},references:function(a){return a&&!this.parent||this.uses_with||this.uses_eval||this.refs[a]},define:function(a,b){return null!=a?("var"!=b&&y(this.names,a)||(this.names[a]=b||"var"),a):void 0}};var F,G=function(){},H=function(){function a(c){switch(c[0]){case"string":case"num":return c[1];case"name":case"atom":switch(c[1]){case"true":return!0;case"false":return!1;case"null":return null}break;case"unary-prefix":switch(c[1]){case"!":return!a(c[2]);case"typeof":return typeof a(c[2]);case"~":return~a(c[2]);case"-":return-a(c[2]);case"+":return+a(c[2])}break;case"binary":var d=c[2],e=c[3];switch(c[1]){case"&&":return a(d)&&a(e);case"||":return a(d)||a(e);case"|":return a(d)|a(e);case"&":return a(d)&a(e);case"^":return a(d)^a(e);case"+":return a(d)+a(e);case"*":return a(d)*a(e);case"/":return a(d)/a(e);case"%":return a(d)%a(e);case"-":return a(d)-a(e);case"<<":return a(d)<>":return a(d)>>a(e);case">>>":return a(d)>>>a(e);case"==":return a(d)==a(e);case"===":return a(d)===a(e);case"!=":return a(d)!=a(e);case"!==":return a(d)!==a(e);case"<":return a(d)":return a(d)>a(e);case">=":return a(d)>=a(e);case"in":return a(d)in a(e);case"instanceof":return a(d)instanceof a(e)}}throw b}var b={};return function(c,d,e){try{var f,g=a(c);switch(typeof g){case"string":f=["string",g];break;case"number":f=["num",g];break;case"boolean":f=["name",String(g)];break;default:throw new Error("Can't handle constant of type: "+typeof g)}return d.call(c,f,g)}catch(h){if(h===b){if("binary"!=c[0]||"==="!=c[1]&&"!=="!=c[1]||!(l(c[2])&&l(c[3])||j(c[2])&&j(c[3]))){if(e&&"binary"==c[0]&&("||"==c[1]||"&&"==c[1]))try{var i=a(c[2]);c="&&"==c[1]&&(i?c[3]:i)||"||"==c[1]&&(i?i:c[3])||c}catch(k){}}else c[1]=c[1].substr(0,2);return e?e.call(c,c):null}throw h}}}(),I=z.array_to_hash(["name","array","object","string","dot","sub","call","regexp","defun"]),J=z.array_to_hash(["if","while","do","for","for-in","with"]);!function(){function a(a){this.v=a}function b(a){this.v=a}F=function(d,e,f){function g(){var g=e.call(f,d[h],h);g instanceof a?(g=g.v,g instanceof b?j.push.apply(j,g.v):j.push(g)):g!=c&&(g instanceof b?i.push.apply(i,g.v):i.push(g))}var h,i=[],j=[];if(d instanceof Array)for(h=0;hi;i++)e+=String.fromCharCode(f[i]);c.push(e)}else if("Blob"===b(a)||"File"===b(a)){if(!g)throw new h("NOT_READABLE_ERR");var k=new g;c.push(k.readAsBinaryString(a))}else a instanceof d?"base64"===a.encoding&&p?c.push(p(a.data)):"URI"===a.encoding?c.push(decodeURIComponent(a.data)):"raw"===a.encoding&&c.push(a.data):("string"!=typeof a&&(a+=""),c.push(unescape(encodeURIComponent(a))))},e.getBlob=function(a){return arguments.length||(a=null),new d(this.data.join(""),a,"raw")},e.toString=function(){return"[object BlobBuilder]"},f.slice=function(a,b,c){var e=arguments.length;return 3>e&&(c=null),new d(this.data.slice(a,e>1?b:this.data.length),c,this.encoding)},f.toString=function(){return"[object Blob]"},c}(a);return function(a,c){var d=c?c.type||"":"",e=new b;if(a)for(var f=0,g=a.length;g>f;f++)e.append(a[f]);return e.getBlob(d)}}(self);else self.URL=webkitURL;var saveAs=saveAs||"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator)||function(a){"use strict";var b=a.document,c=function(){return a.URL||a.webkitURL||a},d=a.URL||a.webkitURL||a,e=b.createElementNS("http://www.w3.org/1999/xhtml","a"),f=!a.externalHost&&"download"in e,g=a.webkitRequestFileSystem,h=a.requestFileSystem||g||a.mozRequestFileSystem,i=function(b){(a.setImmediate||a.setTimeout)(function(){throw b},0)},j="application/octet-stream",k=0,l=[],m=function(){for(var a=l.length;a--;){var b=l[a];"string"==typeof b?d.revokeObjectURL(b):b.remove()}l.length=0},n=function(a,b,c){b=[].concat(b);for(var d=b.length;d--;){var e=a["on"+b[d]];if("function"==typeof e)try{e.call(a,c||a)}catch(f){i(f)}}},o=function(d,i){var m,o,p,q=this,r=d.type,s=!1,t=function(){var a=c().createObjectURL(d);return l.push(a),a},u=function(){n(q,"writestart progress write writeend".split(" "))},v=function(){(s||!m)&&(m=t(d)),o?o.location.href=m:window.open(m,"_blank"),q.readyState=q.DONE,u()},w=function(a){return function(){return q.readyState!==q.DONE?a.apply(this,arguments):void 0}},x={create:!0,exclusive:!1};if(q.readyState=q.INIT,i||(i="download"),f){m=t(d),b=a.document,e=b.createElementNS("http://www.w3.org/1999/xhtml","a"),e.href=m,e.download=i;var y=b.createEvent("MouseEvents");return y.initMouseEvent("click",!0,!1,a,0,0,0,0,0,!1,!1,!1,!1,0,null),e.dispatchEvent(y),q.readyState=q.DONE,u(),void 0}return a.chrome&&r&&r!==j&&(p=d.slice||d.webkitSlice,d=p.call(d,0,d.size,j),s=!0),g&&"download"!==i&&(i+=".download"),(r===j||g)&&(o=a),h?(k+=d.size,h(a.TEMPORARY,k,w(function(a){a.root.getDirectory("saved",x,w(function(a){var b=function(){a.getFile(i,x,w(function(a){a.createWriter(w(function(b){b.onwriteend=function(b){o.location.href=a.toURL(),l.push(a),q.readyState=q.DONE,n(q,"writeend",b)},b.onerror=function(){var a=b.error;a.code!==a.ABORT_ERR&&v()},"writestart progress write abort".split(" ").forEach(function(a){b["on"+a]=q["on"+a]}),b.write(d),q.abort=function(){b.abort(),q.readyState=q.DONE},q.readyState=q.WRITING}),v)}),v)};a.getFile(i,{create:!1},w(function(a){a.remove(),b()}),w(function(a){a.code===a.NOT_FOUND_ERR?b():v()}))}),v)}),v),void 0):(v(),void 0)},p=o.prototype,q=function(a,b){return new o(a,b)};return p.abort=function(){var a=this;a.readyState=a.DONE,n(a,"abort")},p.readyState=p.INIT=0,p.WRITING=1,p.DONE=2,p.error=p.onwritestart=p.onprogress=p.onwrite=p.onabort=p.onerror=p.onwriteend=null,a.addEventListener("unload",m,!1),q}(this.self||this.window||this.content);"undefined"!=typeof module&&(module.exports=saveAs),window.onload=function(){function a(a,b){throw $('
    ×

    '+a+"

    "+(b.extract?'
    '+b.extract.join("\n")+"
    ":"")+"
    ").appendTo("body").alert(),b -}function b(a,b){var c=$('

    Attention!

    '+a+"

    ");b?c.appendTo(".bs-docs-container"):c.insertAfter(".bs-customize-download")}function c(a){a=a.replace(/[*+?^$.\[\]{}()|\\\/]/g,"\\$&");var b=location.search.match(new RegExp("[?&]"+a+"=([^&]+)(&|$)"));return b&&decodeURIComponent(b[1].replace(/\+/g," "))}function d(b){var c={description:"Bootstrap Customizer Config","public":!0,files:{"config.json":{content:b}}};$.ajax({url:"https://api.github.com/gists",type:"POST",dataType:"json",data:JSON.stringify(c)}).success(function(a){var b=window.location.protocol+"//"+window.location.host;history.replaceState(!1,document.title,b+window.location.pathname+"?id="+a.id)}).error(function(b){a("Ruh roh! Could not save gist file, configuration not saved.",b)})}function e(){var a={};$("#less-variables-section input").each(function(){$(this).val()&&(a[$(this).prev().text()]=$(this).val())});var b={vars:a,css:$("#less-section input:checked").map(function(){return this.value}).toArray(),js:$("#plugin-section input:checked").map(function(){return this.value}).toArray()};if(!$.isEmptyObject(b.vars)||b.css.length||b.js.length)return b}function f(){var b=c("id");b&&$.ajax({url:"https://api.github.com/gists/"+b,type:"GET",dataType:"json"}).success(function(a){var b=JSON.parse(a.files["config.json"].content);if(b.js&&$("#plugin-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,b.js))}),b.css&&$("#less-section input").each(function(){$(this).prop("checked",~$.inArray(this.value,b.css))}),b.vars)for(var c in b.vars)$('input[data-var="'+c+'"]').val(b.vars[c])}).error(function(b){a("Error fetching bootstrap config file",b)})}function g(b,c,d,e,f){if(!b&&!c)return a("Ruh roh! No Bootstrap files selected.",new Error("no Bootstrap"));var g=new JSZip;if(b){var h=g.folder("css");for(var i in b)h.file(i,b[i])}if(c){var j=g.folder("js");for(var k in c)j.file(k,c[k])}if(d){var l=g.folder("fonts");for(var m in d)l.file(m,d[m],{base64:!0})}e&&g.file("config.json",e);var n=g.generate({type:"blob"});f(n)}function h(a){var b="";for(var c in a)b+=c+": "+a[c]+";\n";return b+"\n\n"}function i(){var a=$('#less-section [value="glyphicons.less"]:checked');return a.length?__fonts:void 0}function j(){for(var a=/^@import \"(.*?)\";$/,b=__less["bootstrap.less"].split("\n"),c=0,d=[];cRuh roh! Could not parse less files.",b):(d={"bootstrap.css":m+c.toCSS(),"bootstrap.min.css":m+c.toCSS({compress:!0})},void 0)})}}catch(g){return a("Ruh roh! Could not parse less files.",g)}return d}function l(){var a=$("#plugin-section input:checked");if(!a.length)return!1;var b=a.map(function(){return __js[this.value]}).toArray().join("\n");return{"bootstrap.js":b,"bootstrap.min.js":m+uglify(b)}}var m="/*!\n * Bootstrap v3.0.3 (http://getbootstrap.com)\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n",n=$("#less-section input"),o=$("#plugin-section input"),p=$("#less-variables-section input");$("#less-section .toggle").on("click",function(a){a.preventDefault(),n.prop("checked",!n.is(":checked"))}),$("#plugin-section .toggle").on("click",function(a){a.preventDefault(),o.prop("checked",!o.is(":checked"))}),$("#less-variables-section .toggle").on("click",function(a){a.preventDefault(),p.val("")}),$("[data-dependencies]").on("click",function(){if($(this).is(":checked")){var a=this.getAttribute("data-dependencies");if(a){a=a.split(",");for(var b=0;b upgrade to a more modern browser.',!0)):b('Looks like you\'re using safari, which sadly doesn\'t have the best support for HTML5 blobs. Because of this your file will be downloaded with the name "untitled". However, if you check your downloads folder, just rename this "untitled" file to "bootstrap.zip" and you should be good to go!'),f()}; \ No newline at end of file diff --git a/docs-assets/js/customizer.js b/docs-assets/js/customizer.js deleted file mode 100644 index e6b8a67a9..000000000 --- a/docs-assets/js/customizer.js +++ /dev/null @@ -1,337 +0,0 @@ -/*! - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ - -/* jshint multistr:true */ - -window.onload = function () { // wait for load in a dumb way because B-0 - var cw = '/*!\n' + - ' * Bootstrap v3.0.3 (http://getbootstrap.com)\n' + - ' * Copyright 2013 Twitter, Inc.\n' + - ' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' + - ' */\n\n'; - - function showError(msg, err) { - $('
    \ -
    \ - ×\ -

    ' + msg + '

    ' + - (err.extract ? '
    ' + err.extract.join('\n') + '
    ' : '') + '\ -
    \ -
    ').appendTo('body').alert() - throw err - } - - function showCallout(msg, showUpTop) { - var callout = $('
    \ -

    Attention!

    \ -

    ' + msg + '

    \ -
    ') - - if (showUpTop) { - callout.appendTo('.bs-docs-container') - } else { - callout.insertAfter('.bs-customize-download') - } - } - - function getQueryParam(key) { - key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, '\\$&'); // escape RegEx meta chars - var match = location.search.match(new RegExp('[?&]' + key + '=([^&]+)(&|$)')); - return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); - } - - function createGist(configJson) { - var data = { - 'description': 'Bootstrap Customizer Config', - 'public': true, - 'files': { - 'config.json': { - 'content': configJson - } - } - } - $.ajax({ - url: 'https://api.github.com/gists', - type: 'POST', - dataType: 'json', - data: JSON.stringify(data) - }) - .success(function (result) { - var origin = window.location.protocol + '//' + window.location.host - history.replaceState(false, document.title, origin + window.location.pathname + '?id=' + result.id) - }) - .error(function (err) { - showError('Ruh roh! Could not save gist file, configuration not saved.', err) - }) - } - - function getCustomizerData() { - var vars = {} - - $('#less-variables-section input') - .each(function () { - $(this).val() && (vars[$(this).prev().text()] = $(this).val()) - }) - - var data = { - vars: vars, - css: $('#less-section input:checked') .map(function () { return this.value }).toArray(), - js: $('#plugin-section input:checked').map(function () { return this.value }).toArray() - } - - if ($.isEmptyObject(data.vars) && !data.css.length && !data.js.length) return - - return data - } - - function parseUrl() { - var id = getQueryParam('id') - - if (!id) return - - $.ajax({ - url: 'https://api.github.com/gists/' + id, - type: 'GET', - dataType: 'json' - }) - .success(function (result) { - var data = JSON.parse(result.files['config.json'].content) - if (data.js) { - $('#plugin-section input').each(function () { - $(this).prop('checked', ~$.inArray(this.value, data.js)) - }) - } - if (data.css) { - $('#less-section input').each(function () { - $(this).prop('checked', ~$.inArray(this.value, data.css)) - }) - } - if (data.vars) { - for (var i in data.vars) { - $('input[data-var="' + i + '"]').val(data.vars[i]) - } - } - }) - .error(function (err) { - showError('Error fetching bootstrap config file', err) - }) - } - - function generateZip(css, js, fonts, config, complete) { - if (!css && !js) return showError('Ruh roh! No Bootstrap files selected.', new Error('no Bootstrap')) - - var zip = new JSZip() - - if (css) { - var cssFolder = zip.folder('css') - for (var fileName in css) { - cssFolder.file(fileName, css[fileName]) - } - } - - if (js) { - var jsFolder = zip.folder('js') - for (var jsFileName in js) { - jsFolder.file(jsFileName, js[jsFileName]) - } - } - - if (fonts) { - var fontsFolder = zip.folder('fonts') - for (var fontsFileName in fonts) { - fontsFolder.file(fontsFileName, fonts[fontsFileName], {base64: true}) - } - } - - if (config) { - zip.file('config.json', config) - } - - var content = zip.generate({ type: 'blob' }) - - complete(content) - } - - function generateCustomCSS(vars) { - var result = '' - - for (var key in vars) { - result += key + ': ' + vars[key] + ';\n' - } - - return result + '\n\n' - } - - function generateFonts() { - var glyphicons = $('#less-section [value="glyphicons.less"]:checked') - if (glyphicons.length) { - return __fonts - } - } - - // Returns an Array of @import'd filenames from 'bootstrap.less' in the order - // in which they appear in the file. - function bootstrapLessFilenames() { - var IMPORT_REGEX = /^@import \"(.*?)\";$/ - var bootstrapLessLines = __less['bootstrap.less'].split('\n') - - for (var i = 0, imports = []; i < bootstrapLessLines.length; i++) { - var match = IMPORT_REGEX.exec(bootstrapLessLines[i]) - if (match) imports.push(match[1]) - } - - return imports - } - - function generateCSS() { - var oneChecked = false - var lessFileIncludes = {} - $('#less-section input').each(function() { - var $this = $(this) - var checked = $this.is(':checked') - lessFileIncludes[$this.val()] = checked - - oneChecked = oneChecked || checked - }) - - if (!oneChecked) return false - - var result = {} - var vars = {} - var css = '' - - $('#less-variables-section input') - .each(function () { - $(this).val() && (vars[$(this).prev().text()] = $(this).val()) - }) - - $.each(bootstrapLessFilenames(), function(index, filename) { - var fileInclude = lessFileIncludes[filename] - - // Files not explicitly unchecked are compiled into the final stylesheet. - // Core stylesheets like 'normalize.less' are not included in the form - // since disabling them would wreck everything, and so their 'fileInclude' - // will be 'undefined'. - if (fileInclude || (fileInclude == null)) css += __less[filename] - - // Custom variables are added after Bootstrap variables so the custom - // ones take precedence. - if (('variables.less' === filename) && vars) css += generateCustomCSS(vars) - }) - - css = css.replace(/@import[^\n]*/gi, '') //strip any imports - - try { - var parser = new less.Parser({ - paths: ['variables.less', 'mixins.less'], - optimization: 0, - filename: 'bootstrap.css' - }).parse(css, function (err, tree) { - if (err) { - return showError('Ruh roh! Could not parse less files.', err) - } - result = { - 'bootstrap.css' : cw + tree.toCSS(), - 'bootstrap.min.css' : cw + tree.toCSS({ compress: true }) - } - }) - } catch (err) { - return showError('Ruh roh! Could not parse less files.', err) - } - - return result - } - - function generateJavascript() { - var $checked = $('#plugin-section input:checked') - if (!$checked.length) return false - - var js = $checked - .map(function () { return __js[this.value] }) - .toArray() - .join('\n') - - return { - 'bootstrap.js': js, - 'bootstrap.min.js': cw + uglify(js) - } - } - - var inputsComponent = $('#less-section input') - var inputsPlugin = $('#plugin-section input') - var inputsVariables = $('#less-variables-section input') - - $('#less-section .toggle').on('click', function (e) { - e.preventDefault() - inputsComponent.prop('checked', !inputsComponent.is(':checked')) - }) - - $('#plugin-section .toggle').on('click', function (e) { - e.preventDefault() - inputsPlugin.prop('checked', !inputsPlugin.is(':checked')) - }) - - $('#less-variables-section .toggle').on('click', function (e) { - e.preventDefault() - inputsVariables.val('') - }) - - $('[data-dependencies]').on('click', function () { - if (!$(this).is(':checked')) return - var dependencies = this.getAttribute('data-dependencies') - if (!dependencies) return - dependencies = dependencies.split(',') - for (var i = 0; i < dependencies.length; i++) { - var dependency = $('[value="' + dependencies[i] + '"]') - dependency && dependency.prop('checked', true) - } - }) - - $('[data-dependents]').on('click', function () { - if ($(this).is(':checked')) return - var dependents = this.getAttribute('data-dependents') - if (!dependents) return - dependents = dependents.split(',') - for (var i = 0; i < dependents.length; i++) { - var dependent = $('[value="' + dependents[i] + '"]') - dependent && dependent.prop('checked', false) - } - }) - - var $compileBtn = $('#btn-compile') - var $downloadBtn = $('#btn-download') - - $compileBtn.on('click', function (e) { - var configData = getCustomizerData() - var configJson = JSON.stringify(configData, null, 2) - - e.preventDefault() - - $compileBtn.attr('disabled', 'disabled') - - generateZip(generateCSS(), generateJavascript(), generateFonts(), configJson, function (blob) { - $compileBtn.removeAttr('disabled') - saveAs(blob, 'bootstrap.zip') - createGist(configJson) - }) - }) - - // browser support alerts - if (!window.URL && navigator.userAgent.toLowerCase().indexOf('safari') != -1) { - showCallout('Looks like you\'re using safari, which sadly doesn\'t have the best support\ - for HTML5 blobs. Because of this your file will be downloaded with the name "untitled".\ - However, if you check your downloads folder, just rename this "untitled" file\ - to "bootstrap.zip" and you should be good to go!') - } else if (!window.URL && !window.webkitURL) { - $('.bs-docs-section, .bs-sidebar').css('display', 'none') - - showCallout('Looks like your current browser doesn\'t support the Bootstrap Customizer. Please take a second\ - to upgrade to a more modern browser.', true) - } - - parseUrl() -} diff --git a/docs-assets/js/filesaver.js b/docs-assets/js/filesaver.js deleted file mode 100644 index e7127dba0..000000000 --- a/docs-assets/js/filesaver.js +++ /dev/null @@ -1,399 +0,0 @@ -/* Blob.js - * A Blob implementation. - * 2013-06-20 - * - * By Eli Grey, http://eligrey.com - * By Devin Samarin, https://github.com/eboyjr - * License: X11/MIT - * See LICENSE.md - */ - -/*global self, unescape */ -/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, - plusplus: true */ - -/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ - -if (!(typeof Blob === "function" || typeof Blob === "object") || typeof URL === "undefined") -if ((typeof Blob === "function" || typeof Blob === "object") && typeof webkitURL !== "undefined") self.URL = webkitURL; -else var Blob = (function (view) { - "use strict"; - - var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || view.MSBlobBuilder || (function(view) { - var - get_class = function(object) { - return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1]; - } - , FakeBlobBuilder = function BlobBuilder() { - this.data = []; - } - , FakeBlob = function Blob(data, type, encoding) { - this.data = data; - this.size = data.length; - this.type = type; - this.encoding = encoding; - } - , FBB_proto = FakeBlobBuilder.prototype - , FB_proto = FakeBlob.prototype - , FileReaderSync = view.FileReaderSync - , FileException = function(type) { - this.code = this[this.name = type]; - } - , file_ex_codes = ( - "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR " - + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR" - ).split(" ") - , file_ex_code = file_ex_codes.length - , real_URL = view.URL || view.webkitURL || view - , real_create_object_URL = real_URL.createObjectURL - , real_revoke_object_URL = real_URL.revokeObjectURL - , URL = real_URL - , btoa = view.btoa - , atob = view.atob - - , ArrayBuffer = view.ArrayBuffer - , Uint8Array = view.Uint8Array - ; - FakeBlob.fake = FB_proto.fake = true; - while (file_ex_code--) { - FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1; - } - if (!real_URL.createObjectURL) { - URL = view.URL = {}; - } - URL.createObjectURL = function(blob) { - var - type = blob.type - , data_URI_header - ; - if (type === null) { - type = "application/octet-stream"; - } - if (blob instanceof FakeBlob) { - data_URI_header = "data:" + type; - if (blob.encoding === "base64") { - return data_URI_header + ";base64," + blob.data; - } else if (blob.encoding === "URI") { - return data_URI_header + "," + decodeURIComponent(blob.data); - } if (btoa) { - return data_URI_header + ";base64," + btoa(blob.data); - } else { - return data_URI_header + "," + encodeURIComponent(blob.data); - } - } else if (real_create_object_URL) { - return real_create_object_URL.call(real_URL, blob); - } - }; - URL.revokeObjectURL = function(object_URL) { - if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) { - real_revoke_object_URL.call(real_URL, object_URL); - } - }; - FBB_proto.append = function(data/*, endings*/) { - var bb = this.data; - // decode data to a binary string - if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) { - var - str = "" - , buf = new Uint8Array(data) - , i = 0 - , buf_len = buf.length - ; - for (; i < buf_len; i++) { - str += String.fromCharCode(buf[i]); - } - bb.push(str); - } else if (get_class(data) === "Blob" || get_class(data) === "File") { - if (FileReaderSync) { - var fr = new FileReaderSync; - bb.push(fr.readAsBinaryString(data)); - } else { - // async FileReader won't work as BlobBuilder is sync - throw new FileException("NOT_READABLE_ERR"); - } - } else if (data instanceof FakeBlob) { - if (data.encoding === "base64" && atob) { - bb.push(atob(data.data)); - } else if (data.encoding === "URI") { - bb.push(decodeURIComponent(data.data)); - } else if (data.encoding === "raw") { - bb.push(data.data); - } - } else { - if (typeof data !== "string") { - data += ""; // convert unsupported types to strings - } - // decode UTF-16 to binary string - bb.push(unescape(encodeURIComponent(data))); - } - }; - FBB_proto.getBlob = function(type) { - if (!arguments.length) { - type = null; - } - return new FakeBlob(this.data.join(""), type, "raw"); - }; - FBB_proto.toString = function() { - return "[object BlobBuilder]"; - }; - FB_proto.slice = function(start, end, type) { - var args = arguments.length; - if (args < 3) { - type = null; - } - return new FakeBlob( - this.data.slice(start, args > 1 ? end : this.data.length) - , type - , this.encoding - ); - }; - FB_proto.toString = function() { - return "[object Blob]"; - }; - return FakeBlobBuilder; - }(view)); - - return function Blob(blobParts, options) { - var type = options ? (options.type || "") : ""; - var builder = new BlobBuilder(); - if (blobParts) { - for (var i = 0, len = blobParts.length; i < len; i++) { - builder.append(blobParts[i]); - } - } - return builder.getBlob(type); - }; -}(self)); - -/* FileSaver.js - * A saveAs() FileSaver implementation. - * 2013-10-21 - * - * By Eli Grey, http://eligrey.com - * License: X11/MIT - * See LICENSE.md - */ - -/*global self */ -/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true, - plusplus: true */ - -/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ - -var saveAs = saveAs - || (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator)) - || (function(view) { - "use strict"; - var - doc = view.document - // only get URL when necessary in case BlobBuilder.js hasn't overridden it yet - , get_URL = function() { - return view.URL || view.webkitURL || view; - } - , URL = view.URL || view.webkitURL || view - , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a") - , can_use_save_link = !view.externalHost && "download" in save_link - , click = function(node) { - var event = doc.createEvent("MouseEvents"); - event.initMouseEvent( - "click", true, false, view, 0, 0, 0, 0, 0 - , false, false, false, false, 0, null - ); - node.dispatchEvent(event); - } - , webkit_req_fs = view.webkitRequestFileSystem - , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem - , throw_outside = function (ex) { - (view.setImmediate || view.setTimeout)(function() { - throw ex; - }, 0); - } - , force_saveable_type = "application/octet-stream" - , fs_min_size = 0 - , deletion_queue = [] - , process_deletion_queue = function() { - var i = deletion_queue.length; - while (i--) { - var file = deletion_queue[i]; - if (typeof file === "string") { // file is an object URL - URL.revokeObjectURL(file); - } else { // file is a File - file.remove(); - } - } - deletion_queue.length = 0; // clear queue - } - , dispatch = function(filesaver, event_types, event) { - event_types = [].concat(event_types); - var i = event_types.length; - while (i--) { - var listener = filesaver["on" + event_types[i]]; - if (typeof listener === "function") { - try { - listener.call(filesaver, event || filesaver); - } catch (ex) { - throw_outside(ex); - } - } - } - } - , FileSaver = function(blob, name) { - // First try a.download, then web filesystem, then object URLs - var - filesaver = this - , type = blob.type - , blob_changed = false - , object_url - , target_view - , get_object_url = function() { - var object_url = get_URL().createObjectURL(blob); - deletion_queue.push(object_url); - return object_url; - } - , dispatch_all = function() { - dispatch(filesaver, "writestart progress write writeend".split(" ")); - } - // on any filesys errors revert to saving with object URLs - , fs_error = function() { - // don't create more object URLs than needed - if (blob_changed || !object_url) { - object_url = get_object_url(blob); - } - if (target_view) { - target_view.location.href = object_url; - } else { - window.open(object_url, "_blank"); - } - filesaver.readyState = filesaver.DONE; - dispatch_all(); - } - , abortable = function(func) { - return function() { - if (filesaver.readyState !== filesaver.DONE) { - return func.apply(this, arguments); - } - }; - } - , create_if_not_found = {create: true, exclusive: false} - , slice - ; - filesaver.readyState = filesaver.INIT; - if (!name) { - name = "download"; - } - if (can_use_save_link) { - object_url = get_object_url(blob); - // FF for Android has a nasty garbage collection mechanism - // that turns all objects that are not pure javascript into 'deadObject' - // this means `doc` and `save_link` are unusable and need to be recreated - // `view` is usable though: - doc = view.document; - save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a"); - save_link.href = object_url; - save_link.download = name; - var event = doc.createEvent("MouseEvents"); - event.initMouseEvent( - "click", true, false, view, 0, 0, 0, 0, 0 - , false, false, false, false, 0, null - ); - save_link.dispatchEvent(event); - filesaver.readyState = filesaver.DONE; - dispatch_all(); - return; - } - // Object and web filesystem URLs have a problem saving in Google Chrome when - // viewed in a tab, so I force save with application/octet-stream - // http://code.google.com/p/chromium/issues/detail?id=91158 - if (view.chrome && type && type !== force_saveable_type) { - slice = blob.slice || blob.webkitSlice; - blob = slice.call(blob, 0, blob.size, force_saveable_type); - blob_changed = true; - } - // Since I can't be sure that the guessed media type will trigger a download - // in WebKit, I append .download to the filename. - // https://bugs.webkit.org/show_bug.cgi?id=65440 - if (webkit_req_fs && name !== "download") { - name += ".download"; - } - if (type === force_saveable_type || webkit_req_fs) { - target_view = view; - } - if (!req_fs) { - fs_error(); - return; - } - fs_min_size += blob.size; - req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) { - fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) { - var save = function() { - dir.getFile(name, create_if_not_found, abortable(function(file) { - file.createWriter(abortable(function(writer) { - writer.onwriteend = function(event) { - target_view.location.href = file.toURL(); - deletion_queue.push(file); - filesaver.readyState = filesaver.DONE; - dispatch(filesaver, "writeend", event); - }; - writer.onerror = function() { - var error = writer.error; - if (error.code !== error.ABORT_ERR) { - fs_error(); - } - }; - "writestart progress write abort".split(" ").forEach(function(event) { - writer["on" + event] = filesaver["on" + event]; - }); - writer.write(blob); - filesaver.abort = function() { - writer.abort(); - filesaver.readyState = filesaver.DONE; - }; - filesaver.readyState = filesaver.WRITING; - }), fs_error); - }), fs_error); - }; - dir.getFile(name, {create: false}, abortable(function(file) { - // delete file if it already exists - file.remove(); - save(); - }), abortable(function(ex) { - if (ex.code === ex.NOT_FOUND_ERR) { - save(); - } else { - fs_error(); - } - })); - }), fs_error); - }), fs_error); - } - , FS_proto = FileSaver.prototype - , saveAs = function(blob, name) { - return new FileSaver(blob, name); - } - ; - FS_proto.abort = function() { - var filesaver = this; - filesaver.readyState = filesaver.DONE; - dispatch(filesaver, "abort"); - }; - FS_proto.readyState = FS_proto.INIT = 0; - FS_proto.WRITING = 1; - FS_proto.DONE = 2; - - FS_proto.error = - FS_proto.onwritestart = - FS_proto.onprogress = - FS_proto.onwrite = - FS_proto.onabort = - FS_proto.onerror = - FS_proto.onwriteend = - null; - - view.addEventListener("unload", process_deletion_queue, false); - return saveAs; -}(this.self || this.window || this.content)); -// `self` is undefined in Firefox for Android content script context -// while `this` is nsIContentFrameMessageManager -// with an attribute `content` that corresponds to the window - -if (typeof module !== 'undefined') module.exports = saveAs; diff --git a/docs-assets/js/holder.js b/docs-assets/js/holder.js deleted file mode 100644 index 85f0441b0..000000000 --- a/docs-assets/js/holder.js +++ /dev/null @@ -1,500 +0,0 @@ -/* - -Holder - 2.2 - client side image placeholders -(c) 2012-2013 Ivan Malopinsky / http://imsky.co - -Provided under the MIT License. -Commercial use requires attribution. - -*/ - -var Holder = Holder || {}; -(function (app, win) { - -var preempted = false, -fallback = false, -canvas = document.createElement('canvas'); -var dpr = 1, bsr = 1; -var resizable_images = []; - -if (!canvas.getContext) { - fallback = true; -} else { - if (canvas.toDataURL("image/png") - .indexOf("data:image/png") < 0) { - //Android doesn't support data URI - fallback = true; - } else { - var ctx = canvas.getContext("2d"); - } -} - -if(!fallback){ - dpr = window.devicePixelRatio || 1, - bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1; -} - -var ratio = dpr / bsr; - -var settings = { - domain: "holder.js", - images: "img", - bgnodes: ".holderjs", - themes: { - "gray": { - background: "#eee", - foreground: "#aaa", - size: 12 - }, - "social": { - background: "#3a5a97", - foreground: "#fff", - size: 12 - }, - "industrial": { - background: "#434A52", - foreground: "#C2F200", - size: 12 - }, - "sky": { - background: "#0D8FDB", - foreground: "#fff", - size: 12 - }, - "vine": { - background: "#39DBAC", - foreground: "#1E292C", - size: 12 - }, - "lava": { - background: "#F8591A", - foreground: "#1C2846", - size: 12 - } - }, - stylesheet: "" -}; -app.flags = { - dimensions: { - regex: /^(\d+)x(\d+)$/, - output: function (val) { - var exec = this.regex.exec(val); - return { - width: +exec[1], - height: +exec[2] - } - } - }, - fluid: { - regex: /^([0-9%]+)x([0-9%]+)$/, - output: function (val) { - var exec = this.regex.exec(val); - return { - width: exec[1], - height: exec[2] - } - } - }, - colors: { - regex: /#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i, - output: function (val) { - var exec = this.regex.exec(val); - return { - size: settings.themes.gray.size, - foreground: "#" + exec[2], - background: "#" + exec[1] - } - } - }, - text: { - regex: /text\:(.*)/, - output: function (val) { - return this.regex.exec(val)[1]; - } - }, - font: { - regex: /font\:(.*)/, - output: function (val) { - return this.regex.exec(val)[1]; - } - }, - auto: { - regex: /^auto$/ - }, - textmode: { - regex: /textmode\:(.*)/, - output: function(val){ - return this.regex.exec(val)[1]; - } - } -} - -//getElementsByClassName polyfill -document.getElementsByClassName||(document.getElementsByClassName=function(e){var t=document,n,r,i,s=[];if(t.querySelectorAll)return t.querySelectorAll("."+e);if(t.evaluate){r=".//*[contains(concat(' ', @class, ' '), ' "+e+" ')]",n=t.evaluate(r,t,null,0,null);while(i=n.iterateNext())s.push(i)}else{n=t.getElementsByTagName("*"),r=new RegExp("(^|\\s)"+e+"(\\s|$)");for(i=0;i= 0.75) { - text_height = Math.floor(text_height * 0.75 * (width / text_width)); - } - //Resetting font size if necessary - ctx.font = "bold " + (text_height * ratio) + "px " + font; - ctx.fillText(text, (width / 2), (height / 2), width); - return canvas.toDataURL("image/png"); -} - -function render(mode, el, holder, src) { - - var dimensions = holder.dimensions, - theme = holder.theme, - text = holder.text ? decodeURIComponent(holder.text) : holder.text; - var dimensions_caption = dimensions.width + "x" + dimensions.height; - theme = (text ? extend(theme, { - text: text - }) : theme); - theme = (holder.font ? extend(theme, { - font: holder.font - }) : theme); - el.setAttribute("data-src", src); - holder.theme = theme; - el.holder_data = holder; - - if (mode == "image") { - el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption); - if (fallback || !holder.auto) { - el.style.width = dimensions.width + "px"; - el.style.height = dimensions.height + "px"; - } - if (fallback) { - el.style.backgroundColor = theme.background; - } else { - el.setAttribute("src", draw({ctx: ctx, dimensions: dimensions, template: theme, ratio:ratio, holder: holder})); - - if(holder.textmode && holder.textmode == "exact"){ - resizable_images.push(el); - resizable_update(el); - } - - } - } else if (mode == "background") { - if (!fallback) { - el.style.backgroundImage = "url(" + draw({ctx:ctx, dimensions: dimensions, template: theme, ratio: ratio, holder: holder}) + ")"; - el.style.backgroundSize = dimensions.width + "px " + dimensions.height + "px"; - } - } else if (mode == "fluid") { - el.setAttribute("alt", text ? text : theme.text ? theme.text + " [" + dimensions_caption + "]" : dimensions_caption); - if (dimensions.height.slice(-1) == "%") { - el.style.height = dimensions.height - } else { - el.style.height = dimensions.height + "px" - } - if (dimensions.width.slice(-1) == "%") { - el.style.width = dimensions.width - } else { - el.style.width = dimensions.width + "px" - } - if (el.style.display == "inline" || el.style.display === "" || el.style.display == "none") { - el.style.display = "block"; - } - if (fallback) { - el.style.backgroundColor = theme.background; - } else { - resizable_images.push(el); - resizable_update(el); - } - } -} - -function dimension_check(el, callback) { - var dimensions = { - height: el.clientHeight, - width: el.clientWidth - }; - if (!dimensions.height && !dimensions.width) { - if (el.hasAttribute("data-holder-invisible")) { - throw new Error("Holder: placeholder is not visible"); - } else { - el.setAttribute("data-holder-invisible", true) - setTimeout(function () { - callback.call(this, el) - }, 1) - return null; - } - } else { - el.removeAttribute("data-holder-invisible") - } - return dimensions; -} - -function resizable_update(element) { - var images; - if (element.nodeType == null) { - images = resizable_images; - } else { - images = [element] - } - for (var i in images) { - if (!images.hasOwnProperty(i)) { - continue; - } - var el = images[i] - if (el.holder_data) { - var holder = el.holder_data; - var dimensions = dimension_check(el, resizable_update) - if(dimensions){ - if(holder.fluid){ - el.setAttribute("src", draw({ - ctx: ctx, - dimensions: dimensions, - template: holder.theme, - ratio: ratio, - holder: holder - })) - } - if(holder.textmode && holder.textmode == "exact"){ - holder.exact_dimensions = dimensions; - el.setAttribute("src", draw({ - ctx: ctx, - dimensions: holder.dimensions, - template: holder.theme, - ratio: ratio, - holder: holder - })) - } - } - } - } -} - -function parse_flags(flags, options) { - var ret = { - theme: extend(settings.themes.gray, {}) - }; - var render = false; - for (sl = flags.length, j = 0; j < sl; j++) { - var flag = flags[j]; - if (app.flags.dimensions.match(flag)) { - render = true; - ret.dimensions = app.flags.dimensions.output(flag); - } else if (app.flags.fluid.match(flag)) { - render = true; - ret.dimensions = app.flags.fluid.output(flag); - ret.fluid = true; - } else if (app.flags.textmode.match(flag)) { - ret.textmode = app.flags.textmode.output(flag) - } else if (app.flags.colors.match(flag)) { - ret.theme = app.flags.colors.output(flag); - } else if (options.themes[flag]) { - //If a theme is specified, it will override custom colors - if(options.themes.hasOwnProperty(flag)){ - ret.theme = extend(options.themes[flag], {}); - } - } else if (app.flags.font.match(flag)) { - ret.font = app.flags.font.output(flag); - } else if (app.flags.auto.match(flag)) { - ret.auto = true; - } else if (app.flags.text.match(flag)) { - ret.text = app.flags.text.output(flag); - } - } - return render ? ret : false; -} - -for (var flag in app.flags) { - if (!app.flags.hasOwnProperty(flag)) continue; - app.flags[flag].match = function (val) { - return val.match(this.regex) - } -} -app.add_theme = function (name, theme) { - name != null && theme != null && (settings.themes[name] = theme); - return app; -}; -app.add_image = function (src, el) { - var node = selector(el); - if (node.length) { - for (var i = 0, l = node.length; i < l; i++) { - var img = document.createElement("img") - img.setAttribute("data-src", src); - node[i].appendChild(img); - } - } - return app; -}; -app.run = function (o) { - preempted = true; - - var options = extend(settings, o), - images = [], - imageNodes = [], - bgnodes = []; - if (typeof (options.images) == "string") { - imageNodes = selector(options.images); - } else if (window.NodeList && options.images instanceof window.NodeList) { - imageNodes = options.images; - } else if (window.Node && options.images instanceof window.Node) { - imageNodes = [options.images]; - } - - if (typeof (options.bgnodes) == "string") { - bgnodes = selector(options.bgnodes); - } else if (window.NodeList && options.elements instanceof window.NodeList) { - bgnodes = options.bgnodes; - } else if (window.Node && options.bgnodes instanceof window.Node) { - bgnodes = [options.bgnodes]; - } - for (i = 0, l = imageNodes.length; i < l; i++) images.push(imageNodes[i]); - var holdercss = document.getElementById("holderjs-style"); - if (!holdercss) { - holdercss = document.createElement("style"); - holdercss.setAttribute("id", "holderjs-style"); - holdercss.type = "text/css"; - document.getElementsByTagName("head")[0].appendChild(holdercss); - } - if (!options.nocss) { - if (holdercss.styleSheet) { - holdercss.styleSheet.cssText += options.stylesheet; - } else { - holdercss.appendChild(document.createTextNode(options.stylesheet)); - } - } - var cssregex = new RegExp(options.domain + "\/(.*?)\"?\\)"); - for (var l = bgnodes.length, i = 0; i < l; i++) { - var src = window.getComputedStyle(bgnodes[i], null) - .getPropertyValue("background-image"); - var flags = src.match(cssregex); - var bgsrc = bgnodes[i].getAttribute("data-background-src"); - if (flags) { - var holder = parse_flags(flags[1].split("/"), options); - if (holder) { - render("background", bgnodes[i], holder, src); - } - } else if (bgsrc != null) { - var holder = parse_flags(bgsrc.substr(bgsrc.lastIndexOf(options.domain) + options.domain.length + 1) - .split("/"), options); - if (holder) { - render("background", bgnodes[i], holder, src); - } - } - } - for (l = images.length, i = 0; i < l; i++) { - var attr_data_src, attr_src; - attr_src = attr_data_src = src = null; - try { - attr_src = images[i].getAttribute("src"); - attr_datasrc = images[i].getAttribute("data-src"); - } catch (e) {} - if (attr_datasrc == null && !! attr_src && attr_src.indexOf(options.domain) >= 0) { - src = attr_src; - } else if ( !! attr_datasrc && attr_datasrc.indexOf(options.domain) >= 0) { - src = attr_datasrc; - } - if (src) { - var holder = parse_flags(src.substr(src.lastIndexOf(options.domain) + options.domain.length + 1) - .split("/"), options); - if (holder) { - if (holder.fluid) { - render("fluid", images[i], holder, src) - } else { - render("image", images[i], holder, src); - } - } - } - } - return app; -}; -contentLoaded(win, function () { - if (window.addEventListener) { - window.addEventListener("resize", resizable_update, false); - window.addEventListener("orientationchange", resizable_update, false); - } else { - window.attachEvent("onresize", resizable_update) - } - preempted || app.run(); -}); -if (typeof define === "function" && define.amd) { - define([], function () { - return app; - }); -} - -})(Holder, window); diff --git a/docs-assets/js/ie8-responsive-file-warning.js b/docs-assets/js/ie8-responsive-file-warning.js deleted file mode 100644 index f5dd74fc4..000000000 --- a/docs-assets/js/ie8-responsive-file-warning.js +++ /dev/null @@ -1,12 +0,0 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ -/*! - * Copyright 2013 Twitter, Inc. - * - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ -// Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8. -if (window.location.protocol == 'file:') - alert("ERROR: Bootstrap's responsive CSS is disabled!\nSee getbootstrap.com/getting-started/#respond-file-proto for details.") diff --git a/docs-assets/js/jszip.js b/docs-assets/js/jszip.js deleted file mode 100644 index 52d35d914..000000000 --- a/docs-assets/js/jszip.js +++ /dev/null @@ -1,1474 +0,0 @@ -/** - -JSZip - A Javascript class for generating and reading zip files - - -(c) 2009-2012 Stuart Knightley -Dual licenced under the MIT license or GPLv3. See LICENSE.markdown. - -Usage: - zip = new JSZip(); - zip.file("hello.txt", "Hello, World!").file("tempfile", "nothing"); - zip.folder("images").file("smile.gif", base64Data, {base64: true}); - zip.file("Xmas.txt", "Ho ho ho !", {date : new Date("December 25, 2007 00:00:01")}); - zip.remove("tempfile"); - - base64zip = zip.generate(); - -**/ -// We use strict, but it should not be placed outside of a function because -// the environment is shared inside the browser. -// "use strict"; - -/** - * Representation a of zip file in js - * @constructor - * @param {String=|ArrayBuffer=|Uint8Array=|Buffer=} data the data to load, if any (optional). - * @param {Object=} options the options for creating this objects (optional). - */ -var JSZip = function(data, options) { - // object containing the files : - // { - // "folder/" : {...}, - // "folder/data.txt" : {...} - // } - this.files = {}; - - // Where we are in the hierarchy - this.root = ""; - - if (data) { - this.load(data, options); - } -}; - -JSZip.signature = { - LOCAL_FILE_HEADER : "\x50\x4b\x03\x04", - CENTRAL_FILE_HEADER : "\x50\x4b\x01\x02", - CENTRAL_DIRECTORY_END : "\x50\x4b\x05\x06", - ZIP64_CENTRAL_DIRECTORY_LOCATOR : "\x50\x4b\x06\x07", - ZIP64_CENTRAL_DIRECTORY_END : "\x50\x4b\x06\x06", - DATA_DESCRIPTOR : "\x50\x4b\x07\x08" -}; - -// Default properties for a new file -JSZip.defaults = { - base64: false, - binary: false, - dir: false, - date: null, - compression: null -}; - -/* - * List features that require a modern browser, and if the current browser support them. - */ -JSZip.support = { - // contains true if JSZip can read/generate ArrayBuffer, false otherwise. - arraybuffer : (function(){ - return typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined"; - })(), - // contains true if JSZip can read/generate nodejs Buffer, false otherwise. - nodebuffer : (function(){ - return typeof Buffer !== "undefined"; - })(), - // contains true if JSZip can read/generate Uint8Array, false otherwise. - uint8array : (function(){ - return typeof Uint8Array !== "undefined"; - })(), - // contains true if JSZip can read/generate Blob, false otherwise. - blob : (function(){ - // the spec started with BlobBuilder then replaced it with a construtor for Blob. - // Result : we have browsers that : - // * know the BlobBuilder (but with prefix) - // * know the Blob constructor - // * know about Blob but not about how to build them - // About the "=== 0" test : if given the wrong type, it may be converted to a string. - // Instead of an empty content, we will get "[object Uint8Array]" for example. - if (typeof ArrayBuffer === "undefined") { - return false; - } - var buffer = new ArrayBuffer(0); - try { - return new Blob([buffer], { type: "application/zip" }).size === 0; - } - catch(e) {} - - try { - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder; - var builder = new BlobBuilder(); - builder.append(buffer); - return builder.getBlob('application/zip').size === 0; - } - catch(e) {} - - return false; - })() -}; - -JSZip.prototype = (function () { - var textEncoder, textDecoder; - if ( - JSZip.support.uint8array && - typeof TextEncoder === "function" && - typeof TextDecoder === "function" - ) { - textEncoder = new TextEncoder("utf-8"); - textDecoder = new TextDecoder("utf-8"); - } - - /** - * Returns the raw data of a ZipObject, decompress the content if necessary. - * @param {ZipObject} file the file to use. - * @return {String|ArrayBuffer|Uint8Array|Buffer} the data. - */ - var getRawData = function (file) { - if (file._data instanceof JSZip.CompressedObject) { - file._data = file._data.getContent(); - file.options.binary = true; - file.options.base64 = false; - - if (JSZip.utils.getTypeOf(file._data) === "uint8array") { - var copy = file._data; - // when reading an arraybuffer, the CompressedObject mechanism will keep it and subarray() a Uint8Array. - // if we request a file in the same format, we might get the same Uint8Array or its ArrayBuffer (the original zip file). - file._data = new Uint8Array(copy.length); - // with an empty Uint8Array, Opera fails with a "Offset larger than array size" - if (copy.length !== 0) { - file._data.set(copy, 0); - } - } - } - return file._data; - }; - - /** - * Returns the data of a ZipObject in a binary form. If the content is an unicode string, encode it. - * @param {ZipObject} file the file to use. - * @return {String|ArrayBuffer|Uint8Array|Buffer} the data. - */ - var getBinaryData = function (file) { - var result = getRawData(file), type = JSZip.utils.getTypeOf(result); - if (type === "string") { - if (!file.options.binary) { - // unicode text ! - // unicode string => binary string is a painful process, check if we can avoid it. - if (textEncoder) { - return textEncoder.encode(result); - } - if (JSZip.support.nodebuffer) { - return new Buffer(result, "utf-8"); - } - } - return file.asBinary(); - } - return result; - }; - - /** - * Transform this._data into a string. - * @param {function} filter a function String -> String, applied if not null on the result. - * @return {String} the string representing this._data. - */ - var dataToString = function (asUTF8) { - var result = getRawData(this); - if (result === null || typeof result === "undefined") { - return ""; - } - // if the data is a base64 string, we decode it before checking the encoding ! - if (this.options.base64) { - result = JSZip.base64.decode(result); - } - if (asUTF8 && this.options.binary) { - // JSZip.prototype.utf8decode supports arrays as input - // skip to array => string step, utf8decode will do it. - result = JSZip.prototype.utf8decode(result); - } else { - // no utf8 transformation, do the array => string step. - result = JSZip.utils.transformTo("string", result); - } - - if (!asUTF8 && !this.options.binary) { - result = JSZip.prototype.utf8encode(result); - } - return result; - }; - /** - * A simple object representing a file in the zip file. - * @constructor - * @param {string} name the name of the file - * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data - * @param {Object} options the options of the file - */ - var ZipObject = function (name, data, options) { - this.name = name; - this._data = data; - this.options = options; - }; - - ZipObject.prototype = { - /** - * Return the content as UTF8 string. - * @return {string} the UTF8 string. - */ - asText : function () { - return dataToString.call(this, true); - }, - /** - * Returns the binary content. - * @return {string} the content as binary. - */ - asBinary : function () { - return dataToString.call(this, false); - }, - /** - * Returns the content as a nodejs Buffer. - * @return {Buffer} the content as a Buffer. - */ - asNodeBuffer : function () { - var result = getBinaryData(this); - return JSZip.utils.transformTo("nodebuffer", result); - }, - /** - * Returns the content as an Uint8Array. - * @return {Uint8Array} the content as an Uint8Array. - */ - asUint8Array : function () { - var result = getBinaryData(this); - return JSZip.utils.transformTo("uint8array", result); - }, - /** - * Returns the content as an ArrayBuffer. - * @return {ArrayBuffer} the content as an ArrayBufer. - */ - asArrayBuffer : function () { - return this.asUint8Array().buffer; - } - }; - - /** - * Transform an integer into a string in hexadecimal. - * @private - * @param {number} dec the number to convert. - * @param {number} bytes the number of bytes to generate. - * @returns {string} the result. - */ - var decToHex = function(dec, bytes) { - var hex = "", i; - for(i = 0; i < bytes; i++) { - hex += String.fromCharCode(dec&0xff); - dec=dec>>>8; - } - return hex; - }; - - /** - * Merge the objects passed as parameters into a new one. - * @private - * @param {...Object} var_args All objects to merge. - * @return {Object} a new object with the data of the others. - */ - var extend = function () { - var result = {}, i, attr; - for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers - for (attr in arguments[i]) { - if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") { - result[attr] = arguments[i][attr]; - } - } - } - return result; - }; - - /** - * Transforms the (incomplete) options from the user into the complete - * set of options to create a file. - * @private - * @param {Object} o the options from the user. - * @return {Object} the complete set of options. - */ - var prepareFileAttrs = function (o) { - o = o || {}; - /*jshint -W041 */ - if (o.base64 === true && o.binary == null) { - o.binary = true; - } - /*jshint +W041 */ - o = extend(o, JSZip.defaults); - o.date = o.date || new Date(); - if (o.compression !== null) o.compression = o.compression.toUpperCase(); - - return o; - }; - - /** - * Add a file in the current folder. - * @private - * @param {string} name the name of the file - * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file - * @param {Object} o the options of the file - * @return {Object} the new file. - */ - var fileAdd = function (name, data, o) { - // be sure sub folders exist - var parent = parentFolder(name), dataType = JSZip.utils.getTypeOf(data); - if (parent) { - folderAdd.call(this, parent); - } - - o = prepareFileAttrs(o); - - if (o.dir || data === null || typeof data === "undefined") { - o.base64 = false; - o.binary = false; - data = null; - } else if (dataType === "string") { - if (o.binary && !o.base64) { - // optimizedBinaryString == true means that the file has already been filtered with a 0xFF mask - if (o.optimizedBinaryString !== true) { - // this is a string, not in a base64 format. - // Be sure that this is a correct "binary string" - data = JSZip.utils.string2binary(data); - } - } - } else { // arraybuffer, uint8array, ... - o.base64 = false; - o.binary = true; - - if (!dataType && !(data instanceof JSZip.CompressedObject)) { - throw new Error("The data of '" + name + "' is in an unsupported format !"); - } - - // special case : it's way easier to work with Uint8Array than with ArrayBuffer - if (dataType === "arraybuffer") { - data = JSZip.utils.transformTo("uint8array", data); - } - } - - var object = new ZipObject(name, data, o); - this.files[name] = object; - return object; - }; - - - /** - * Find the parent folder of the path. - * @private - * @param {string} path the path to use - * @return {string} the parent folder, or "" - */ - var parentFolder = function (path) { - if (path.slice(-1) == '/') { - path = path.substring(0, path.length - 1); - } - var lastSlash = path.lastIndexOf('/'); - return (lastSlash > 0) ? path.substring(0, lastSlash) : ""; - }; - - /** - * Add a (sub) folder in the current folder. - * @private - * @param {string} name the folder's name - * @return {Object} the new folder. - */ - var folderAdd = function (name) { - // Check the name ends with a / - if (name.slice(-1) != "/") { - name += "/"; // IE doesn't like substr(-1) - } - - // Does this folder already exist? - if (!this.files[name]) { - fileAdd.call(this, name, null, {dir:true}); - } - return this.files[name]; - }; - - /** - * Generate a JSZip.CompressedObject for a given zipOject. - * @param {ZipObject} file the object to read. - * @param {JSZip.compression} compression the compression to use. - * @return {JSZip.CompressedObject} the compressed result. - */ - var generateCompressedObjectFrom = function (file, compression) { - var result = new JSZip.CompressedObject(), content; - - // the data has not been decompressed, we might reuse things ! - if (file._data instanceof JSZip.CompressedObject) { - result.uncompressedSize = file._data.uncompressedSize; - result.crc32 = file._data.crc32; - - if (result.uncompressedSize === 0 || file.options.dir) { - compression = JSZip.compressions['STORE']; - result.compressedContent = ""; - result.crc32 = 0; - } else if (file._data.compressionMethod === compression.magic) { - result.compressedContent = file._data.getCompressedContent(); - } else { - content = file._data.getContent(); - // need to decompress / recompress - result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content)); - } - } else { - // have uncompressed data - content = getBinaryData(file); - if (!content || content.length === 0 || file.options.dir) { - compression = JSZip.compressions['STORE']; - content = ""; - } - result.uncompressedSize = content.length; - result.crc32 = this.crc32(content); - result.compressedContent = compression.compress(JSZip.utils.transformTo(compression.compressInputType, content)); - } - - result.compressedSize = result.compressedContent.length; - result.compressionMethod = compression.magic; - - return result; - }; - - /** - * Generate the various parts used in the construction of the final zip file. - * @param {string} name the file name. - * @param {ZipObject} file the file content. - * @param {JSZip.CompressedObject} compressedObject the compressed object. - * @param {number} offset the current offset from the start of the zip file. - * @return {object} the zip parts. - */ - var generateZipParts = function(name, file, compressedObject, offset) { - var data = compressedObject.compressedContent, - utfEncodedFileName = this.utf8encode(file.name), - useUTF8 = utfEncodedFileName !== file.name, - o = file.options, - dosTime, - dosDate; - - // date - // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html - // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html - // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html - - dosTime = o.date.getHours(); - dosTime = dosTime << 6; - dosTime = dosTime | o.date.getMinutes(); - dosTime = dosTime << 5; - dosTime = dosTime | o.date.getSeconds() / 2; - - dosDate = o.date.getFullYear() - 1980; - dosDate = dosDate << 4; - dosDate = dosDate | (o.date.getMonth() + 1); - dosDate = dosDate << 5; - dosDate = dosDate | o.date.getDate(); - - - var header = ""; - - // version needed to extract - header += "\x0A\x00"; - // general purpose bit flag - // set bit 11 if utf8 - header += useUTF8 ? "\x00\x08" : "\x00\x00"; - // compression method - header += compressedObject.compressionMethod; - // last mod file time - header += decToHex(dosTime, 2); - // last mod file date - header += decToHex(dosDate, 2); - // crc-32 - header += decToHex(compressedObject.crc32, 4); - // compressed size - header += decToHex(compressedObject.compressedSize, 4); - // uncompressed size - header += decToHex(compressedObject.uncompressedSize, 4); - // file name length - header += decToHex(utfEncodedFileName.length, 2); - // extra field length - header += "\x00\x00"; - - - var fileRecord = JSZip.signature.LOCAL_FILE_HEADER + header + utfEncodedFileName; - - var dirRecord = JSZip.signature.CENTRAL_FILE_HEADER + - // version made by (00: DOS) - "\x14\x00" + - // file header (common to file and central directory) - header + - // file comment length - "\x00\x00" + - // disk number start - "\x00\x00" + - // internal file attributes TODO - "\x00\x00" + - // external file attributes - (file.options.dir===true?"\x10\x00\x00\x00":"\x00\x00\x00\x00")+ - // relative offset of local header - decToHex(offset, 4) + - // file name - utfEncodedFileName; - - - return { - fileRecord : fileRecord, - dirRecord : dirRecord, - compressedObject : compressedObject - }; - }; - - /** - * An object to write any content to a string. - * @constructor - */ - var StringWriter = function () { - this.data = []; - }; - StringWriter.prototype = { - /** - * Append any content to the current string. - * @param {Object} input the content to add. - */ - append : function (input) { - input = JSZip.utils.transformTo("string", input); - this.data.push(input); - }, - /** - * Finalize the construction an return the result. - * @return {string} the generated string. - */ - finalize : function () { - return this.data.join(""); - } - }; - /** - * An object to write any content to an Uint8Array. - * @constructor - * @param {number} length The length of the array. - */ - var Uint8ArrayWriter = function (length) { - this.data = new Uint8Array(length); - this.index = 0; - }; - Uint8ArrayWriter.prototype = { - /** - * Append any content to the current array. - * @param {Object} input the content to add. - */ - append : function (input) { - if (input.length !== 0) { - // with an empty Uint8Array, Opera fails with a "Offset larger than array size" - input = JSZip.utils.transformTo("uint8array", input); - this.data.set(input, this.index); - this.index += input.length; - } - }, - /** - * Finalize the construction an return the result. - * @return {Uint8Array} the generated array. - */ - finalize : function () { - return this.data; - } - }; - - // return the actual prototype of JSZip - return { - /** - * Read an existing zip and merge the data in the current JSZip object. - * The implementation is in jszip-load.js, don't forget to include it. - * @param {String|ArrayBuffer|Uint8Array|Buffer} stream The stream to load - * @param {Object} options Options for loading the stream. - * options.base64 : is the stream in base64 ? default : false - * @return {JSZip} the current JSZip object - */ - load : function (stream, options) { - throw new Error("Load method is not defined. Is the file jszip-load.js included ?"); - }, - - /** - * Filter nested files/folders with the specified function. - * @param {Function} search the predicate to use : - * function (relativePath, file) {...} - * It takes 2 arguments : the relative path and the file. - * @return {Array} An array of matching elements. - */ - filter : function (search) { - var result = [], filename, relativePath, file, fileClone; - for (filename in this.files) { - if ( !this.files.hasOwnProperty(filename) ) { continue; } - file = this.files[filename]; - // return a new object, don't let the user mess with our internal objects :) - fileClone = new ZipObject(file.name, file._data, extend(file.options)); - relativePath = filename.slice(this.root.length, filename.length); - if (filename.slice(0, this.root.length) === this.root && // the file is in the current root - search(relativePath, fileClone)) { // and the file matches the function - result.push(fileClone); - } - } - return result; - }, - - /** - * Add a file to the zip file, or search a file. - * @param {string|RegExp} name The name of the file to add (if data is defined), - * the name of the file to find (if no data) or a regex to match files. - * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded - * @param {Object} o File options - * @return {JSZip|Object|Array} this JSZip object (when adding a file), - * a file (when searching by string) or an array of files (when searching by regex). - */ - file : function(name, data, o) { - if (arguments.length === 1) { - if (JSZip.utils.isRegExp(name)) { - var regexp = name; - return this.filter(function(relativePath, file) { - return !file.options.dir && regexp.test(relativePath); - }); - } else { // text - return this.filter(function (relativePath, file) { - return !file.options.dir && relativePath === name; - })[0]||null; - } - } else { // more than one argument : we have data ! - name = this.root+name; - fileAdd.call(this, name, data, o); - } - return this; - }, - - /** - * Add a directory to the zip file, or search. - * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders. - * @return {JSZip} an object with the new directory as the root, or an array containing matching folders. - */ - folder : function(arg) { - if (!arg) { - return this; - } - - if (JSZip.utils.isRegExp(arg)) { - return this.filter(function(relativePath, file) { - return file.options.dir && arg.test(relativePath); - }); - } - - // else, name is a new folder - var name = this.root + arg; - var newFolder = folderAdd.call(this, name); - - // Allow chaining by returning a new object with this folder as the root - var ret = this.clone(); - ret.root = newFolder.name; - return ret; - }, - - /** - * Delete a file, or a directory and all sub-files, from the zip - * @param {string} name the name of the file to delete - * @return {JSZip} this JSZip object - */ - remove : function(name) { - name = this.root + name; - var file = this.files[name]; - if (!file) { - // Look for any folders - if (name.slice(-1) != "/") { - name += "/"; - } - file = this.files[name]; - } - - if (file) { - if (!file.options.dir) { - // file - delete this.files[name]; - } else { - // folder - var kids = this.filter(function (relativePath, file) { - return file.name.slice(0, name.length) === name; - }); - for (var i = 0; i < kids.length; i++) { - delete this.files[kids[i].name]; - } - } - } - - return this; - }, - - /** - * Generate the complete zip file - * @param {Object} options the options to generate the zip file : - * - base64, (deprecated, use type instead) true to generate base64. - * - compression, "STORE" by default. - * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob. - * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file - */ - generate : function(options) { - options = extend(options || {}, { - base64 : true, - compression : "STORE", - type : "base64" - }); - - JSZip.utils.checkSupport(options.type); - - var zipData = [], localDirLength = 0, centralDirLength = 0, writer, i; - - - // first, generate all the zip parts. - for (var name in this.files) { - if ( !this.files.hasOwnProperty(name) ) { continue; } - var file = this.files[name]; - - var compressionName = file.options.compression || options.compression.toUpperCase(); - var compression = JSZip.compressions[compressionName]; - if (!compression) { - throw new Error(compressionName + " is not a valid compression method !"); - } - - var compressedObject = generateCompressedObjectFrom.call(this, file, compression); - - var zipPart = generateZipParts.call(this, name, file, compressedObject, localDirLength); - localDirLength += zipPart.fileRecord.length + compressedObject.compressedSize; - centralDirLength += zipPart.dirRecord.length; - zipData.push(zipPart); - } - - var dirEnd = ""; - - // end of central dir signature - dirEnd = JSZip.signature.CENTRAL_DIRECTORY_END + - // number of this disk - "\x00\x00" + - // number of the disk with the start of the central directory - "\x00\x00" + - // total number of entries in the central directory on this disk - decToHex(zipData.length, 2) + - // total number of entries in the central directory - decToHex(zipData.length, 2) + - // size of the central directory 4 bytes - decToHex(centralDirLength, 4) + - // offset of start of central directory with respect to the starting disk number - decToHex(localDirLength, 4) + - // .ZIP file comment length - "\x00\x00"; - - - // we have all the parts (and the total length) - // time to create a writer ! - switch(options.type.toLowerCase()) { - case "uint8array" : - case "arraybuffer" : - case "blob" : - case "nodebuffer" : - writer = new Uint8ArrayWriter(localDirLength + centralDirLength + dirEnd.length); - break; - // case "base64" : - // case "string" : - default : - writer = new StringWriter(localDirLength + centralDirLength + dirEnd.length); - break; - } - - for (i = 0; i < zipData.length; i++) { - writer.append(zipData[i].fileRecord); - writer.append(zipData[i].compressedObject.compressedContent); - } - for (i = 0; i < zipData.length; i++) { - writer.append(zipData[i].dirRecord); - } - - writer.append(dirEnd); - - var zip = writer.finalize(); - - - - switch(options.type.toLowerCase()) { - // case "zip is an Uint8Array" - case "uint8array" : - case "arraybuffer" : - case "nodebuffer" : - return JSZip.utils.transformTo(options.type.toLowerCase(), zip); - case "blob" : - return JSZip.utils.arrayBuffer2Blob(JSZip.utils.transformTo("arraybuffer", zip)); - - // case "zip is a string" - case "base64" : - return (options.base64) ? JSZip.base64.encode(zip) : zip; - default : // case "string" : - return zip; - } - }, - - /** - * - * Javascript crc32 - * http://www.webtoolkit.info/ - * - */ - crc32 : function crc32(input, crc) { - if (typeof input === "undefined" || !input.length) { - return 0; - } - - var isArray = JSZip.utils.getTypeOf(input) !== "string"; - - var table = [ - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, - 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, - 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, - 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, - 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, - 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, - 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, - 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, - 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, - 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, - 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, - 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, - 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, - 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, - 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, - 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, - 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, - 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, - 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, - 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, - 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, - 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, - 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, - 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, - 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, - 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, - 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, - 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, - 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, - 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, - 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, - 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, - 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, - 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, - 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, - 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, - 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, - 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, - 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, - 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, - 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, - 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, - 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, - 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, - 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, - 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, - 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, - 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, - 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, - 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, - 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, - 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, - 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, - 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, - 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, - 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, - 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, - 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, - 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, - 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, - 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D - ]; - - if (typeof(crc) == "undefined") { crc = 0; } - var x = 0; - var y = 0; - var byte = 0; - - crc = crc ^ (-1); - for( var i = 0, iTop = input.length; i < iTop; i++ ) { - byte = isArray ? input[i] : input.charCodeAt(i); - y = ( crc ^ byte ) & 0xFF; - x = table[y]; - crc = ( crc >>> 8 ) ^ x; - } - - return crc ^ (-1); - }, - - // Inspired by http://my.opera.com/GreyWyvern/blog/show.dml/1725165 - clone : function() { - var newObj = new JSZip(); - for (var i in this) { - if (typeof this[i] !== "function") { - newObj[i] = this[i]; - } - } - return newObj; - }, - - - /** - * http://www.webtoolkit.info/javascript-utf8.html - */ - utf8encode : function (string) { - // TextEncoder + Uint8Array to binary string is faster than checking every bytes on long strings. - // http://jsperf.com/utf8encode-vs-textencoder - // On short strings (file names for example), the TextEncoder API is (currently) slower. - if (textEncoder) { - var u8 = textEncoder.encode(string); - return JSZip.utils.transformTo("string", u8); - } - if (JSZip.support.nodebuffer) { - return JSZip.utils.transformTo("string", new Buffer(string, "utf-8")); - } - - // array.join may be slower than string concatenation but generates less objects (less time spent garbage collecting). - // See also http://jsperf.com/array-direct-assignment-vs-push/31 - var result = [], resIndex = 0; - - for (var n = 0; n < string.length; n++) { - - var c = string.charCodeAt(n); - - if (c < 128) { - result[resIndex++] = String.fromCharCode(c); - } else if ((c > 127) && (c < 2048)) { - result[resIndex++] = String.fromCharCode((c >> 6) | 192); - result[resIndex++] = String.fromCharCode((c & 63) | 128); - } else { - result[resIndex++] = String.fromCharCode((c >> 12) | 224); - result[resIndex++] = String.fromCharCode(((c >> 6) & 63) | 128); - result[resIndex++] = String.fromCharCode((c & 63) | 128); - } - - } - - return result.join(""); - }, - - /** - * http://www.webtoolkit.info/javascript-utf8.html - */ - utf8decode : function (input) { - var result = [], resIndex = 0; - var type = JSZip.utils.getTypeOf(input); - var isArray = type !== "string"; - var i = 0; - var c = 0, c1 = 0, c2 = 0, c3 = 0; - - // check if we can use the TextDecoder API - // see http://encoding.spec.whatwg.org/#api - if (textDecoder) { - return textDecoder.decode( - JSZip.utils.transformTo("uint8array", input) - ); - } - if (JSZip.support.nodebuffer) { - return JSZip.utils.transformTo("nodebuffer", input).toString("utf-8"); - } - - while ( i < input.length ) { - - c = isArray ? input[i] : input.charCodeAt(i); - - if (c < 128) { - result[resIndex++] = String.fromCharCode(c); - i++; - } else if ((c > 191) && (c < 224)) { - c2 = isArray ? input[i+1] : input.charCodeAt(i+1); - result[resIndex++] = String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = isArray ? input[i+1] : input.charCodeAt(i+1); - c3 = isArray ? input[i+2] : input.charCodeAt(i+2); - result[resIndex++] = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - - } - - return result.join(""); - } - }; -}()); - -/* - * Compression methods - * This object is filled in as follow : - * name : { - * magic // the 2 bytes indentifying the compression method - * compress // function, take the uncompressed content and return it compressed. - * uncompress // function, take the compressed content and return it uncompressed. - * compressInputType // string, the type accepted by the compress method. null to accept everything. - * uncompressInputType // string, the type accepted by the uncompress method. null to accept everything. - * } - * - * STORE is the default compression method, so it's included in this file. - * Other methods should go to separated files : the user wants modularity. - */ -JSZip.compressions = { - "STORE" : { - magic : "\x00\x00", - compress : function (content) { - return content; // no compression - }, - uncompress : function (content) { - return content; // no compression - }, - compressInputType : null, - uncompressInputType : null - } -}; - -(function () { - JSZip.utils = { - /** - * Convert a string to a "binary string" : a string containing only char codes between 0 and 255. - * @param {string} str the string to transform. - * @return {String} the binary string. - */ - string2binary : function (str) { - var result = ""; - for (var i = 0; i < str.length; i++) { - result += String.fromCharCode(str.charCodeAt(i) & 0xff); - } - return result; - }, - /** - * Create a Uint8Array from the string. - * @param {string} str the string to transform. - * @return {Uint8Array} the typed array. - * @throws {Error} an Error if the browser doesn't support the requested feature. - * @deprecated : use JSZip.utils.transformTo instead. - */ - string2Uint8Array : function (str) { - return JSZip.utils.transformTo("uint8array", str); - }, - - /** - * Create a string from the Uint8Array. - * @param {Uint8Array} array the array to transform. - * @return {string} the string. - * @throws {Error} an Error if the browser doesn't support the requested feature. - * @deprecated : use JSZip.utils.transformTo instead. - */ - uint8Array2String : function (array) { - return JSZip.utils.transformTo("string", array); - }, - /** - * Create a blob from the given ArrayBuffer. - * @param {ArrayBuffer} buffer the buffer to transform. - * @return {Blob} the result. - * @throws {Error} an Error if the browser doesn't support the requested feature. - */ - arrayBuffer2Blob : function (buffer) { - JSZip.utils.checkSupport("blob"); - - try { - // Blob constructor - return new Blob([buffer], { type: "application/zip" }); - } - catch(e) {} - - try { - // deprecated, browser only, old way - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder; - var builder = new BlobBuilder(); - builder.append(buffer); - return builder.getBlob('application/zip'); - } - catch(e) {} - - // well, fuck ?! - throw new Error("Bug : can't construct the Blob."); - }, - /** - * Create a blob from the given string. - * @param {string} str the string to transform. - * @return {Blob} the result. - * @throws {Error} an Error if the browser doesn't support the requested feature. - */ - string2Blob : function (str) { - var buffer = JSZip.utils.transformTo("arraybuffer", str); - return JSZip.utils.arrayBuffer2Blob(buffer); - } - }; - - /** - * The identity function. - * @param {Object} input the input. - * @return {Object} the same input. - */ - function identity(input) { - return input; - } - - /** - * Fill in an array with a string. - * @param {String} str the string to use. - * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated). - * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array. - */ - function stringToArrayLike(str, array) { - for (var i = 0; i < str.length; ++i) { - array[i] = str.charCodeAt(i) & 0xFF; - } - return array; - } - - /** - * Transform an array-like object to a string. - * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform. - * @return {String} the result. - */ - function arrayLikeToString(array) { - // Performances notes : - // -------------------- - // String.fromCharCode.apply(null, array) is the fastest, see - // see http://jsperf.com/converting-a-uint8array-to-a-string/2 - // but the stack is limited (and we can get huge arrays !). - // - // result += String.fromCharCode(array[i]); generate too many strings ! - // - // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2 - var chunk = 65536; - var result = [], len = array.length, type = JSZip.utils.getTypeOf(array), k = 0; - - var canUseApply = true; - try { - switch(type) { - case "uint8array": - String.fromCharCode.apply(null, new Uint8Array(0)); - break; - case "nodebuffer": - String.fromCharCode.apply(null, new Buffer(0)); - break; - } - } catch(e) { - canUseApply = false; - } - - // no apply : slow and painful algorithm - // default browser on android 4.* - if (!canUseApply) { - var resultStr = ""; - for(var i = 0; i < array.length;i++) { - resultStr += String.fromCharCode(array[i]); - } - return resultStr; - } - - while (k < len && chunk > 1) { - try { - if (type === "array" || type === "nodebuffer") { - result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len)))); - } else { - result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len)))); - } - k += chunk; - } catch (e) { - chunk = Math.floor(chunk / 2); - } - } - return result.join(""); - } - - /** - * Copy the data from an array-like to an other array-like. - * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array. - * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated. - * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array. - */ - function arrayLikeToArrayLike(arrayFrom, arrayTo) { - for(var i = 0; i < arrayFrom.length; i++) { - arrayTo[i] = arrayFrom[i]; - } - return arrayTo; - } - - // a matrix containing functions to transform everything into everything. - var transform = {}; - - // string to ? - transform["string"] = { - "string" : identity, - "array" : function (input) { - return stringToArrayLike(input, new Array(input.length)); - }, - "arraybuffer" : function (input) { - return transform["string"]["uint8array"](input).buffer; - }, - "uint8array" : function (input) { - return stringToArrayLike(input, new Uint8Array(input.length)); - }, - "nodebuffer" : function (input) { - return stringToArrayLike(input, new Buffer(input.length)); - } - }; - - // array to ? - transform["array"] = { - "string" : arrayLikeToString, - "array" : identity, - "arraybuffer" : function (input) { - return (new Uint8Array(input)).buffer; - }, - "uint8array" : function (input) { - return new Uint8Array(input); - }, - "nodebuffer" : function (input) { - return new Buffer(input); - } - }; - - // arraybuffer to ? - transform["arraybuffer"] = { - "string" : function (input) { - return arrayLikeToString(new Uint8Array(input)); - }, - "array" : function (input) { - return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength)); - }, - "arraybuffer" : identity, - "uint8array" : function (input) { - return new Uint8Array(input); - }, - "nodebuffer" : function (input) { - return new Buffer(new Uint8Array(input)); - } - }; - - // uint8array to ? - transform["uint8array"] = { - "string" : arrayLikeToString, - "array" : function (input) { - return arrayLikeToArrayLike(input, new Array(input.length)); - }, - "arraybuffer" : function (input) { - return input.buffer; - }, - "uint8array" : identity, - "nodebuffer" : function(input) { - return new Buffer(input); - } - }; - - // nodebuffer to ? - transform["nodebuffer"] = { - "string" : arrayLikeToString, - "array" : function (input) { - return arrayLikeToArrayLike(input, new Array(input.length)); - }, - "arraybuffer" : function (input) { - return transform["nodebuffer"]["uint8array"](input).buffer; - }, - "uint8array" : function (input) { - return arrayLikeToArrayLike(input, new Uint8Array(input.length)); - }, - "nodebuffer" : identity - }; - - /** - * Transform an input into any type. - * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer. - * If no output type is specified, the unmodified input will be returned. - * @param {String} outputType the output type. - * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert. - * @throws {Error} an Error if the browser doesn't support the requested output type. - */ - JSZip.utils.transformTo = function (outputType, input) { - if (!input) { - // undefined, null, etc - // an empty string won't harm. - input = ""; - } - if (!outputType) { - return input; - } - JSZip.utils.checkSupport(outputType); - var inputType = JSZip.utils.getTypeOf(input); - var result = transform[inputType][outputType](input); - return result; - }; - - /** - * Return the type of the input. - * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer. - * @param {Object} input the input to identify. - * @return {String} the (lowercase) type of the input. - */ - JSZip.utils.getTypeOf = function (input) { - if (typeof input === "string") { - return "string"; - } - if (Object.prototype.toString.call(input) === "[object Array]") { - return "array"; - } - if (JSZip.support.nodebuffer && Buffer.isBuffer(input)) { - return "nodebuffer"; - } - if (JSZip.support.uint8array && input instanceof Uint8Array) { - return "uint8array"; - } - if (JSZip.support.arraybuffer && input instanceof ArrayBuffer) { - return "arraybuffer"; - } - }; - - /** - * Cross-window, cross-Node-context regular expression detection - * @param {Object} object Anything - * @return {Boolean} true if the object is a regular expression, - * false otherwise - */ - JSZip.utils.isRegExp = function (object) { - return Object.prototype.toString.call(object) === "[object RegExp]"; - }; - - /** - * Throw an exception if the type is not supported. - * @param {String} type the type to check. - * @throws {Error} an Error if the browser doesn't support the requested type. - */ - JSZip.utils.checkSupport = function (type) { - var supported = true; - switch (type.toLowerCase()) { - case "uint8array": - supported = JSZip.support.uint8array; - break; - case "arraybuffer": - supported = JSZip.support.arraybuffer; - break; - case "nodebuffer": - supported = JSZip.support.nodebuffer; - break; - case "blob": - supported = JSZip.support.blob; - break; - } - if (!supported) { - throw new Error(type + " is not supported by this browser"); - } - }; - - -})(); - -(function (){ - /** - * Represents an entry in the zip. - * The content may or may not be compressed. - * @constructor - */ - JSZip.CompressedObject = function () { - this.compressedSize = 0; - this.uncompressedSize = 0; - this.crc32 = 0; - this.compressionMethod = null; - this.compressedContent = null; - }; - - JSZip.CompressedObject.prototype = { - /** - * Return the decompressed content in an unspecified format. - * The format will depend on the decompressor. - * @return {Object} the decompressed content. - */ - getContent : function () { - return null; // see implementation - }, - /** - * Return the compressed content in an unspecified format. - * The format will depend on the compressed conten source. - * @return {Object} the compressed content. - */ - getCompressedContent : function () { - return null; // see implementation - } - }; -})(); - -/** - * - * Base64 encode / decode - * http://www.webtoolkit.info/ - * - * Hacked so that it doesn't utf8 en/decode everything - **/ -JSZip.base64 = (function() { - // private property - var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - - return { - // public method for encoding - encode : function(input, utf8) { - var output = ""; - var chr1, chr2, chr3, enc1, enc2, enc3, enc4; - var i = 0; - - while (i < input.length) { - - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - - output = output + - _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + - _keyStr.charAt(enc3) + _keyStr.charAt(enc4); - - } - - return output; - }, - - // public method for decoding - decode : function(input, utf8) { - var output = ""; - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0; - - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - - while (i < input.length) { - - enc1 = _keyStr.indexOf(input.charAt(i++)); - enc2 = _keyStr.indexOf(input.charAt(i++)); - enc3 = _keyStr.indexOf(input.charAt(i++)); - enc4 = _keyStr.indexOf(input.charAt(i++)); - - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - - output = output + String.fromCharCode(chr1); - - if (enc3 != 64) { - output = output + String.fromCharCode(chr2); - } - if (enc4 != 64) { - output = output + String.fromCharCode(chr3); - } - - } - - return output; - - } - }; -}()); - -// enforcing Stuk's coding style -// vim: set shiftwidth=3 softtabstop=3: diff --git a/docs-assets/js/less.js b/docs-assets/js/less.js deleted file mode 100644 index 67b69e570..000000000 --- a/docs-assets/js/less.js +++ /dev/null @@ -1,13 +0,0 @@ -/*! - * LESS - Leaner CSS v1.5.1 - * http://lesscss.org - * - * Copyright (c) 2009-2013, Alexis Sellier - * Licensed under the Apache v2 License. - * - * @licence - */ - -!function(a,b){function c(b){return a.less[b.split("/")[1]]}function d(a,b){"development"==w.env&&"undefined"!=typeof console&&w.logLevel>=b&&console.log("less: "+a)}function e(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function f(a,c){var e="{line} {content}",f=a.filename||c,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f+" ",i=function(a,c,d){a.extract[c]!==b&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(i(a,0,""),i(a,1,"line"),i(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")):a.stack&&(h+=a.stack),d(h,z.errors)}function g(a,b,c){var f=b.href||"",g="less:"+(b.title||e(f)),h=document.getElementById(g),i=!1,j=document.createElement("style");if(j.setAttribute("type","text/css"),b.media&&j.setAttribute("media",b.media),j.id=g,j.styleSheet)try{j.styleSheet.cssText=a}catch(k){throw new Error("Couldn't reassign styleSheet.cssText.")}else j.appendChild(document.createTextNode(a)),i=null!==h&&h.childNodes.length>0&&j.childNodes.length>0&&h.firstChild.nodeValue===j.firstChild.nodeValue;var l=document.getElementsByTagName("head")[0];if(null===h||i===!1){var m=b&&b.nextSibling||null;m?m.parentNode.insertBefore(j,m):l.appendChild(j)}if(h&&i===!1&&h.parentNode.removeChild(h),c&&D){d("saving "+f+" to cache.",z.info);try{D.setItem(f,a),D.setItem(f+":timestamp",c)}catch(k){d("failed to save",z.errors)}}}function h(a,c){var d,f,h="less-error-message:"+e(c||""),i='
  • {content}
  • ',j=document.createElement("div"),k=[],l=a.filename||c,m=l.match(/([^\/]+(\?.*)?)$/)[1];j.id=h,j.className="less-error-message",f="

    "+(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+'

    in '+m+" ";var n=function(a,c,d){a.extract[c]!==b&&k.push(i.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(n(a,0,""),n(a,1,"line"),n(a,2,""),f+="on line "+a.line+", column "+(a.column+1)+":

      "+k.join("")+"
    "):a.stack&&(f+="
    "+a.stack.split("\n").slice(1).join("
    ")),j.innerHTML=f,g([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),j.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"==w.env&&(d=setInterval(function(){document.body&&(document.getElementById(h)?document.body.replaceChild(j,document.getElementById(h)):document.body.insertBefore(j,document.body.firstChild),clearInterval(d))},10))}function i(a,b){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?f(a,b):"function"==typeof w.errorReporting&&w.errorReporting("add",a,b):h(a,b)}function j(a){var b=document.getElementById("less-error-message:"+e(a));b&&b.parentNode.removeChild(b)}function k(){}function l(a){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?k(a):"function"==typeof w.errorReporting&&w.errorReporting("remove",a):j(a)}function m(a){for(var b,c=document.getElementsByTagName("style"),d=0;d0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=f[1]+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g}function o(a,b){var c,d,e,f,g=n(a),h=n(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var g=p(),h=y?w.fileAsync:w.async;"function"==typeof g.overrideMimeType&&g.overrideMimeType("text/css"),d("XHR: Getting '"+a+"'",z.info),g.open("GET",a,h),g.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),g.send(null),y&&!w.fileAsync?0===g.status||g.status>=200&&g.status<300?c(g.responseText):e(g.status,a):h?g.onreadystatechange=function(){4==g.readyState&&f(g,c,e)}:f(g,c,e)}function r(b,c,d,e,f){c&&c.currentDirectory&&!/^([a-z-]+:)?\//.test(b)&&(b=c.currentDirectory+b);var g=n(b,a.location.href),h=g.url,i={currentDirectory:g.path,filename:h};if(c?(i.entryPath=c.entryPath,i.rootpath=c.rootpath,i.rootFilename=c.rootFilename,i.relativeUrls=c.relativeUrls):(i.entryPath=g.path,i.rootpath=w.rootpath||g.path,i.rootFilename=h,i.relativeUrls=e.relativeUrls),i.relativeUrls&&(i.rootpath=e.rootpath?n(e.rootpath+o(g.path,i.entryPath)).path:g.path),e.useFileCache&&E[h])try{var j=E[h];f&&(j+="\n"+f),d(null,j,h,i,{lastModified:new Date})}catch(k){d(k,null,h)}else q(h,e.mime,function(a,b){a=F+a,E[h]=a;try{d(null,a,h,i,{lastModified:b})}catch(c){d(c,null,h)}},function(a,b){d({type:"File",message:"'"+b+"' wasn't found ("+a+")"},null,h)})}function s(a,b,c,d,e){var f=new w.tree.parseEnv(w);f.mime=a.type,(e||F)&&(f.useFileCache=!0),r(a.href,null,function(e,h,i,j,k){if(k){k.remaining=d;var m=D&&D.getItem(i),n=D&&D.getItem(i+":timestamp");if(!c&&n&&k.lastModified&&new Date(k.lastModified).valueOf()===new Date(n).valueOf())return g(m,a),k.local=!0,b(null,null,h,a,k,i),void 0}l(i),h?(f.currentFileInfo=j,new w.Parser(f).parse(h,function(c,d){if(c)return b(c,null,null,a);try{b(c,d,h,a,k,i)}catch(c){b(c,null,null,a)}})):b(e,null,null,a,k,i)},f,e)}function t(a,b,c){for(var d=0;dz&&(y[s]=y[s].slice(r-z),z=r)}function g(a){var b=a.charCodeAt(0);return 32===b||10===b||9===b}function h(a){var b,c;if(a instanceof Function)return a.call(A.parsers);if("string"==typeof a)b=q.charAt(r)===a?a:null,c=1,f();else{if(f(),!(b=a.exec(y[s])))return null;c=b[0].length}return b?(i(c),"string"==typeof b?b:1===b.length?b[0]:b):void 0}function i(a){for(var b=r,c=s,d=r+y[s].length,e=r+=a;d>r&&g(q.charAt(r));)r++;return y[s]=y[s].slice(a+(r-e)),z=r,0===y[s].length&&s=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}function o(a,b,d){var e=d.currentFileInfo.filename;return"browser"!==w.mode&&"rhino"!==w.mode&&(e=c("path").resolve(e)),{lineNumber:n(a,b).line+1,fileName:e}}function p(a,b){var c=m(a,b),d=n(a.index,c),e=d.line,f=d.column,g=a.call&&n(a.call,c).line,h=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.currentFileInfo.filename,this.index=a.index,this.line="number"==typeof e?e+1:null,this.callLine=g+1,this.callExtract=h[g],this.stack=a.stack,this.column=f,this.extract=[h[e-1],h[e],h[e+1]]}var q,r,s,t,u,v,y,z,A,B=a&&a.filename;a instanceof x.parseEnv||(a=new x.parseEnv(a));var C=this.imports={paths:a.paths||[],queue:[],files:a.files,contents:a.contents,mime:a.mime,error:null,push:function(b,c,d,e){var f=this;this.queue.push(b);var g=function(a,c,d){f.queue.splice(f.queue.indexOf(b),1);var g=d in f.files||d===B;f.files[d]=c,a&&!f.error&&(f.error=a),e(a,c,g,d)};w.Parser.importer?w.Parser.importer(b,c,g,a):w.Parser.fileLoader(b,c,function(b,e,f,h){if(b)return g(b),void 0;var i=new x.parseEnv(a);i.currentFileInfo=h,i.processImports=!1,i.contents[f]=e,(c.reference||d.reference)&&(h.reference=!0),d.inline?g(null,e,f):new w.Parser(i).parse(e,function(a,b){g(a,b,f)})},a)}};return p.prototype=new Error,p.prototype.constructor=p,this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,A={imports:C,parse:function(b,d){var e,f,g,i=null;if(r=s=z=v=0,q=b.replace(/\r\n/g,"\n"),q=q.replace(/^\uFEFF/,""),A.imports.contents[a.currentFileInfo.filename]=q,y=function(b){for(var c,d,e,f,g=0,h=/(?:@\{[\w-]+\}|[^"'`\{\}\/\(\)\\])+/g,j=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,k=/"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'|`((?:[^`]|\\.)*)`/g,l=0,m=b[0],n=0;n0?"missing closing `}`":"missing opening `{`",filename:a.currentFileInfo.filename},a)),b.map(function(a){return a.join("")})}([[]]),i)return d(new p(i,a));try{e=new x.Ruleset([],h(this.parsers.primary)),e.root=!0,e.firstRoot=!0}catch(j){return d(new p(j,a))}if(e.toCSS=function(b){return function(d,e){d=d||{};var f,g,h=new x.evalEnv(d);"object"!=typeof e||Array.isArray(e)||(e=Object.keys(e).map(function(a){var b=e[a];return b instanceof x.Value||(b instanceof x.Expression||(b=new x.Expression([b])),b=new x.Value([b])),new x.Rule("@"+a,b,!1,null,0)}),h.frames=[new x.Ruleset(null,e)]);try{f=b.call(this,h),(new x.joinSelectorVisitor).run(f),(new x.processExtendsVisitor).run(f),new x.toCSSVisitor({compress:Boolean(d.compress)}).run(f),d.sourceMap&&(f=new x.sourceMapOutput({writeSourceMap:d.writeSourceMap,rootNode:f,contentsMap:A.imports.contents,sourceMapFilename:d.sourceMapFilename,sourceMapURL:d.sourceMapURL,outputFilename:d.sourceMapOutputFilename,sourceMapBasepath:d.sourceMapBasepath,sourceMapRootpath:d.sourceMapRootpath,outputSourceFiles:d.outputSourceFiles,sourceMapGenerator:d.sourceMapGenerator})),g=f.toCSS({compress:Boolean(d.compress),dumpLineNumbers:a.dumpLineNumbers,strictUnits:Boolean(d.strictUnits)})}catch(i){throw new p(i,a)}if(d.cleancss&&"node"===w.mode){var j=c("clean-css");return new j({keepSpecialComments:"*",processImport:!1,noRebase:!0,noAdvanced:!0}).minify(g)}return d.compress?g.replace(/(^(\s)+)|((\s)+$)/g,""):g}}(e.eval),r57||43>b||47===b||44==b))return(a=h(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/))?new x.Dimension(a[1],a[2]):void 0},unicodeDescriptor:function(){var a;return(a=h(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/))?new x.UnicodeDescriptor(a[0]):void 0},javascript:function(){var c,d,e=r;return"~"===q.charAt(e)&&(e++,d=!0),"`"===q.charAt(e)?(a.javascriptEnabled===b||a.javascriptEnabled||k("You are using JavaScript, which has been disabled."),d&&h("~"),(c=h(/^`([^`]*)`/))?new x.JavaScript(c[1],r,d):void 0):void 0}},variable:function(){var a;return"@"===q.charAt(r)&&(a=h(/^(@[\w-]+)\s*:/))?a[1]:void 0},extend:function(a){var b,c,d,e=r,f=[];if(h(a?/^&:extend\(/:/^:extend\(/)){do{for(d=null,b=[];;){if(d=h(/^(all)(?=\s*(\)|,))/))break;if(c=h(this.element),!c)break;b.push(c)}d=d&&d[1],f.push(new x.Extend(new x.Selector(b),d,e))}while(h(","));return j(/^\)/),a&&j(/^;/),f}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var b,c,f,g=[],i=r,k=q.charAt(r),m=!1;if("."===k||"#"===k){for(d();b=h(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/);)g.push(new x.Element(c,b,r,a.currentFileInfo)),c=h(">");return h("(")&&(f=this.mixin.args.call(this,!0).args,j(")")),f=f||[],h(this.important)&&(m=!0),g.length>0&&(h(";")||l("}"))?new x.mixin.Call(g,f,i,a.currentFileInfo,m):(e(),void 0)}},args:function(a){for(var b,c,d,e,f,g,i=[],l=[],m=[],n={args:null,variadic:!1};;){if(a)g=h(this.expression);else{if(h(this.comments),"."===q.charAt(r)&&h(/^\.{3}/)){n.variadic=!0,h(";")&&!b&&(b=!0),(b?l:m).push({variadic:!0});break}g=h(this.entities.variable)||h(this.entities.literal)||h(this.entities.keyword)}if(!g)break;e=null,g.throwAwayComments&&g.throwAwayComments(),f=g;var o=null;if(a?1==g.value.length&&(o=g.value[0]):o=g,o&&o instanceof x.Variable)if(h(":"))i.length>0&&(b&&k("Cannot mix ; and , as delimiter types"),c=!0),f=j(this.expression),e=d=o.name;else{if(!a&&h(/^\.{3}/)){n.variadic=!0,h(";")&&!b&&(b=!0),(b?l:m).push({name:g.name,variadic:!0});break}a||(d=e=o.name,f=null)}f&&i.push(f),m.push({name:e,value:f}),h(",")||(h(";")||b)&&(c&&k("Cannot mix ; and , as delimiter types"),b=!0,i.length>1&&(f=new x.Value(i)),l.push({name:d,value:f}),d=null,i=[],c=!1)}return n.args=b?l:m,n},definition:function(){var a,b,c,f,g=[],i=!1;if(!("."!==q.charAt(r)&&"#"!==q.charAt(r)||l(/^[^{]*\}/))&&(d(),b=h(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/))){a=b[1];var k=this.mixin.args.call(this,!1);if(g=k.args,i=k.variadic,h(")")||(v=r,e()),h(this.comments),h(/^when/)&&(f=j(this.conditions,"expected condition")),c=h(this.block))return new x.mixin.Definition(a,g,c,f,i);e()}}},entity:function(){return h(this.entities.literal)||h(this.entities.variable)||h(this.entities.url)||h(this.entities.call)||h(this.entities.keyword)||h(this.entities.javascript)||h(this.comment)},end:function(){return h(";")||l("}")},alpha:function(){var a;if(h(/^\(opacity=/i))return(a=h(/^\d+/)||h(this.entities.variable))?(j(")"),new x.Alpha(a)):void 0},element:function(){var b,c,d;return c=h(this.combinator),b=h(/^(?:\d+\.\d+|\d+)%/)||h(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||h("*")||h("&")||h(this.attribute)||h(/^\([^()@]+\)/)||h(/^[\.#](?=@)/)||h(this.entities.variableCurly),b||h("(")&&(d=h(this.selector))&&h(")")&&(b=new x.Paren(d)),b?new x.Element(c,b,r,a.currentFileInfo):void 0},combinator:function(){var a=q.charAt(r);if(">"===a||"+"===a||"~"===a||"|"===a){for(r++;q.charAt(r).match(/\s/);)r++;return new x.Combinator(a)}return q.charAt(r-1).match(/\s/)?new x.Combinator(" "):new x.Combinator(null)},lessSelector:function(){return this.selector(!0)},selector:function(b){for(var c,d,e,f,g,i=[],l=[];(b&&(e=h(this.extend))||b&&(f=h(/^when/))||(c=h(this.element)))&&(f?g=j(this.conditions,"expected condition"):g?k("CSS guard can only be used at the end of selector"):e?l.push.apply(l,e):(l.length&&k("Extend can only be used at the end of selector"),d=q.charAt(r),i.push(c),c=null),"{"!==d&&"}"!==d&&";"!==d&&","!==d&&")"!==d););return i.length>0?new x.Selector(i,l,g,r,a.currentFileInfo):(l.length&&k("Extend must be used to extend a selector, it cannot be used on its own"),void 0)},attribute:function(){var a,b,c;if(h("["))return(a=h(this.entities.variableCurly))||(a=j(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(c=h(/^[|~*$^]?=/))&&(b=h(this.entities.quoted)||h(/^[0-9]+%/)||h(/^[\w-]+/)||h(this.entities.variableCurly)),j("]"),new x.Attribute(a,c,b)},block:function(){var a;return h("{")&&(a=h(this.primary))&&h("}")?a:void 0},ruleset:function(){var b,c,f,g=[];for(d(),a.dumpLineNumbers&&(f=o(r,q,a));(b=h(this.lessSelector))&&(g.push(b),h(this.comments),h(","));)b.condition&&k("Guards are only currently allowed on a single selector."),h(this.comments);if(g.length>0&&(c=h(this.block))){var i=new x.Ruleset(g,c,a.strictImports);return a.dumpLineNumbers&&(i.debugInfo=f),i}v=r,e()},rule:function(b){var c,f,g,i=q.charAt(r),j=!1;if(d(),"."!==i&&"#"!==i&&"&"!==i&&(c=h(this.variable)||h(this.ruleProperty))){if(f=b||!a.compress&&"@"!==c.charAt(0)?h(this.anonymousValue)||h(this.value):h(this.value)||h(this.anonymousValue),g=h(this.important),"+"===c[c.length-1]&&(j=!0,c=c.substr(0,c.length-1)),f&&h(this.end))return new x.Rule(c,f,g,j,u,a.currentFileInfo);if(v=r,e(),f&&!b)return this.rule(!0)}},anonymousValue:function(){var a;return(a=/^([^@+\/'"*`(;{}-]*);/.exec(y[s]))?(r+=a[0].length-1,new x.Anonymous(a[1])):void 0},"import":function(){var b,c,f=r;d();var g=h(/^@import?\s+/),i=(g?h(this.importOptions):null)||{};return g&&(b=h(this.entities.quoted)||h(this.entities.url))&&(c=h(this.mediaFeatures),h(";"))?(c=c&&new x.Value(c),new x.Import(b,c,i,f,a.currentFileInfo)):(e(),void 0)},importOptions:function(){var a,b,c,d={};if(!h("("))return null;do if(a=h(this.importOption)){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!h(","))break}while(a);return j(")"),d},importOption:function(){var a=h(/^(less|css|multiple|once|inline|reference)/);return a?a[1]:void 0},mediaFeature:function(){var b,c,d=[];do if(b=h(this.entities.keyword)||h(this.entities.variable))d.push(b);else if(h("(")){if(c=h(this.property),b=h(this.value),!h(")"))return null;if(c&&b)d.push(new x.Paren(new x.Rule(c,b,null,null,r,a.currentFileInfo,!0)));else{if(!b)return null;d.push(new x.Paren(b))}}while(b);return d.length>0?new x.Expression(d):void 0},mediaFeatures:function(){var a,b=[];do if(a=h(this.mediaFeature)){if(b.push(a),!h(","))break}else if((a=h(this.entities.variable))&&(b.push(a),!h(",")))break;while(a);return b.length>0?b:null},media:function(){var b,c,d,e;return a.dumpLineNumbers&&(e=o(r,q,a)),h(/^@media/)&&(b=h(this.mediaFeatures),c=h(this.block))?(d=new x.Media(c,b,r,a.currentFileInfo),a.dumpLineNumbers&&(d.debugInfo=e),d):void 0},directive:function(){var b,c,f,g,i,j,k,l;if("@"===q.charAt(r)){if(c=h(this["import"])||h(this.media))return c;if(d(),b=h(/^@[a-z-]+/)){switch(g=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(g="@"+b.slice(b.indexOf("-",2)+1)),g){case"@font-face":i=!0;break;case"@viewport":case"@top-left":case"@top-left-corner":case"@top-center":case"@top-right":case"@top-right-corner":case"@bottom-left":case"@bottom-left-corner":case"@bottom-center":case"@bottom-right":case"@bottom-right-corner":case"@left-top":case"@left-middle":case"@left-bottom":case"@right-top":case"@right-middle":case"@right-bottom":i=!0;break;case"@host":case"@page":case"@document":case"@supports":case"@keyframes":i=!0,j=!0;break;case"@namespace":k=!0}if(j&&(l=(h(/^[^{]+/)||"").trim(),l&&(b+=" "+l)),i){if(f=h(this.block))return new x.Directive(b,f,r,a.currentFileInfo)}else if((c=k?h(this.expression):h(this.entity))&&h(";")){var m=new x.Directive(b,c,r,a.currentFileInfo);return a.dumpLineNumbers&&(m.debugInfo=o(r,q,a)),m}e()}}},value:function(){for(var a,b=[];(a=h(this.expression))&&(b.push(a),h(",")););return b.length>0?new x.Value(b):void 0},important:function(){return"!"===q.charAt(r)?h(/^! *important/):void 0},sub:function(){var a,b;return h("(")&&(a=h(this.addition))?(b=new x.Expression([a]),j(")"),b.parens=!0,b):void 0},multiplication:function(){var a,b,c,d,e;if(a=h(this.operand)){for(e=g(q.charAt(r-1));!l(/^\/[*\/]/)&&(c=h("/")||h("*"))&&(b=h(this.operand));)a.parensInOp=!0,b.parensInOp=!0,d=new x.Operation(c,[d||a,b],e),e=g(q.charAt(r-1));return d||a}},addition:function(){var a,b,c,d,e;if(a=h(this.multiplication)){for(e=g(q.charAt(r-1));(c=h(/^[-+]\s+/)||!e&&(h("+")||h("-")))&&(b=h(this.multiplication));)a.parensInOp=!0,b.parensInOp=!0,d=new x.Operation(c,[d||a,b],e),e=g(q.charAt(r-1));return d||a}},conditions:function(){var a,b,c,d=r;if(a=h(this.condition)){for(;l(/^,\s*(not\s*)?\(/)&&h(",")&&(b=h(this.condition));)c=new x.Condition("or",c||a,b,d);return c||a}},condition:function(){var a,b,c,d,e=r,f=!1;return h(/^not/)&&(f=!0),j("("),(a=h(this.addition)||h(this.entities.keyword)||h(this.entities.quoted))?((d=h(/^(?:>=|<=|=<|[<=>])/))?(b=h(this.addition)||h(this.entities.keyword)||h(this.entities.quoted))?c=new x.Condition(d,a,b,e,f):k("expected expression"):c=new x.Condition("=",a,new x.Keyword("true"),e,f),j(")"),h(/^and/)?new x.Condition("and",c,h(this.condition)):c):void 0},operand:function(){var a,b=q.charAt(r+1);"-"!==q.charAt(r)||"@"!==b&&"("!==b||(a=h("-"));var c=h(this.sub)||h(this.entities.dimension)||h(this.entities.color)||h(this.entities.variable)||h(this.entities.call);return a&&(c.parensInOp=!0,c=new x.Negative(c)),c},expression:function(){for(var a,b,c=[];a=h(this.addition)||h(this.entity);)c.push(a),!l(/^\/[\/*]/)&&(b=h("/"))&&c.push(new x.Anonymous(b));return c.length>0?new x.Expression(c):void 0},property:function(){var a;return(a=h(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/))?a[1]:void 0},ruleProperty:function(){var a;return(a=h(/^(\*?-?[_a-zA-Z0-9-]+)\s*(\+?)\s*:/))?a[1]+(a[2]||""):void 0}}}},function(d){function e(a){return d.functions.hsla(a.h,a.s,a.l,a.a)}function f(a,b){return a instanceof d.Dimension&&a.unit.is("%")?parseFloat(a.value*b/100):g(a)}function g(a){if(a instanceof d.Dimension)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function h(a){return Math.min(1,Math.max(0,a))}d.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(a,b,c,e){var h=[a,b,c].map(function(a){return f(a,256)});return e=g(e),new d.Color(h,e)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,c,d){function e(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?i+(f-i)*a*6:1>2*a?f:2>3*a?i+(f-i)*(2/3-a)*6:i}a=g(a)%360/360,b=h(g(b)),c=h(g(c)),d=h(g(d));var f=.5>=c?c*(b+1):c+b-c*b,i=2*c-f;return this.rgba(255*e(a+1/3),255*e(a),255*e(a-1/3),d)},hsv:function(a,b,c){return this.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=g(a)%360/360*360,b=g(b),c=g(c),d=g(d);var e,f;e=Math.floor(a/60%6),f=a/60-e;var h=[c,c*(1-b),c*(1-f*b),c*(1-(1-f)*b)],i=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(255*h[i[e][0]],255*h[i[e][1]],255*h[i[e][2]],d)},hue:function(a){return new d.Dimension(Math.round(a.toHSL().h))},saturation:function(a){return new d.Dimension(Math.round(100*a.toHSL().s),"%")},lightness:function(a){return new d.Dimension(Math.round(100*a.toHSL().l),"%")},hsvhue:function(a){return new d.Dimension(Math.round(a.toHSV().h))},hsvsaturation:function(a){return new d.Dimension(Math.round(100*a.toHSV().s),"%")},hsvvalue:function(a){return new d.Dimension(Math.round(100*a.toHSV().v),"%")},red:function(a){return new d.Dimension(a.rgb[0])},green:function(a){return new d.Dimension(a.rgb[1])},blue:function(a){return new d.Dimension(a.rgb[2])},alpha:function(a){return new d.Dimension(a.toHSL().a)},luma:function(a){return new d.Dimension(Math.round(a.luma()*a.alpha*100),"%")},saturate:function(a,b){if(!a.rgb)return null;var c=a.toHSL();return c.s+=b.value/100,c.s=h(c.s),e(c)},desaturate:function(a,b){var c=a.toHSL();return c.s-=b.value/100,c.s=h(c.s),e(c)},lighten:function(a,b){var c=a.toHSL();return c.l+=b.value/100,c.l=h(c.l),e(c)},darken:function(a,b){var c=a.toHSL();return c.l-=b.value/100,c.l=h(c.l),e(c)},fadein:function(a,b){var c=a.toHSL();return c.a+=b.value/100,c.a=h(c.a),e(c)},fadeout:function(a,b){var c=a.toHSL();return c.a-=b.value/100,c.a=h(c.a),e(c)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=h(c.a),e(c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=0>d?360+d:d,e(c)},mix:function(a,b,c){c||(c=new d.Dimension(50));var e=c.value/100,f=2*e-1,g=a.toHSL().a-b.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[a.rgb[0]*h+b.rgb[0]*i,a.rgb[1]*h+b.rgb[1]*i,a.rgb[2]*h+b.rgb[2]*i],k=a.alpha*e+b.alpha*(1-e);return new d.Color(j,k)},greyscale:function(a){return this.desaturate(a,new d.Dimension(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=this.rgba(255,255,255,1)),"undefined"==typeof b&&(b=this.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:g(d),a.luma()*a.alphai.value)&&(k[f]=g)):(l[j]=k.length,k.push(g))):k.push(g);return 1==k.length?k[0]:(c=k.map(function(a){return a.toCSS(this.env)}).join(this.env.compress?",":", "),new d.Anonymous((a?"min":"max")+"("+c+")"))},min:function(){return this._minmax(!0,arguments)},max:function(){return this._minmax(!1,arguments)},argb:function(a){return new d.Anonymous(a.toARGB())},percentage:function(a){return new d.Dimension(100*a.value,"%")},color:function(a){if(a instanceof d.Quoted){var b,c=a.value;if(b=d.Color.fromKeyword(c))return b;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(c))return new d.Color(c.slice(1));throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}}throw{type:"Argument",message:"argument must be a string"}},iscolor:function(a){return this._isa(a,d.Color)},isnumber:function(a){return this._isa(a,d.Dimension)},isstring:function(a){return this._isa(a,d.Quoted)},iskeyword:function(a){return this._isa(a,d.Keyword)},isurl:function(a){return this._isa(a,d.URL)},ispixel:function(a){return this.isunit(a,"px")},ispercentage:function(a){return this.isunit(a,"%")},isem:function(a){return this.isunit(a,"em")},isunit:function(a,b){return a instanceof d.Dimension&&a.unit.is(b.value||b)?d.True:d.False},_isa:function(a,b){return a instanceof b?d.True:d.False},multiply:function(a,b){var c=a.rgb[0]*b.rgb[0]/255,d=a.rgb[1]*b.rgb[1]/255,e=a.rgb[2]*b.rgb[2]/255;return this.rgb(c,d,e)},screen:function(a,b){var c=255-(255-a.rgb[0])*(255-b.rgb[0])/255,d=255-(255-a.rgb[1])*(255-b.rgb[1])/255,e=255-(255-a.rgb[2])*(255-b.rgb[2])/255;return this.rgb(c,d,e)},overlay:function(a,b){var c=a.rgb[0]<128?2*a.rgb[0]*b.rgb[0]/255:255-2*(255-a.rgb[0])*(255-b.rgb[0])/255,d=a.rgb[1]<128?2*a.rgb[1]*b.rgb[1]/255:255-2*(255-a.rgb[1])*(255-b.rgb[1])/255,e=a.rgb[2]<128?2*a.rgb[2]*b.rgb[2]/255:255-2*(255-a.rgb[2])*(255-b.rgb[2])/255; -return this.rgb(c,d,e)},softlight:function(a,b){var c=b.rgb[0]*a.rgb[0]/255,d=c+a.rgb[0]*(255-(255-a.rgb[0])*(255-b.rgb[0])/255-c)/255;c=b.rgb[1]*a.rgb[1]/255;var e=c+a.rgb[1]*(255-(255-a.rgb[1])*(255-b.rgb[1])/255-c)/255;c=b.rgb[2]*a.rgb[2]/255;var f=c+a.rgb[2]*(255-(255-a.rgb[2])*(255-b.rgb[2])/255-c)/255;return this.rgb(d,e,f)},hardlight:function(a,b){var c=b.rgb[0]<128?2*b.rgb[0]*a.rgb[0]/255:255-2*(255-b.rgb[0])*(255-a.rgb[0])/255,d=b.rgb[1]<128?2*b.rgb[1]*a.rgb[1]/255:255-2*(255-b.rgb[1])*(255-a.rgb[1])/255,e=b.rgb[2]<128?2*b.rgb[2]*a.rgb[2]/255:255-2*(255-b.rgb[2])*(255-a.rgb[2])/255;return this.rgb(c,d,e)},difference:function(a,b){var c=Math.abs(a.rgb[0]-b.rgb[0]),d=Math.abs(a.rgb[1]-b.rgb[1]),e=Math.abs(a.rgb[2]-b.rgb[2]);return this.rgb(c,d,e)},exclusion:function(a,b){var c=a.rgb[0]+b.rgb[0]*(255-a.rgb[0]-a.rgb[0])/255,d=a.rgb[1]+b.rgb[1]*(255-a.rgb[1]-a.rgb[1])/255,e=a.rgb[2]+b.rgb[2]*(255-a.rgb[2]-a.rgb[2])/255;return this.rgb(c,d,e)},average:function(a,b){var c=(a.rgb[0]+b.rgb[0])/2,d=(a.rgb[1]+b.rgb[1])/2,e=(a.rgb[2]+b.rgb[2])/2;return this.rgb(c,d,e)},negation:function(a,b){var c=255-Math.abs(255-b.rgb[0]-a.rgb[0]),d=255-Math.abs(255-b.rgb[1]-a.rgb[1]),e=255-Math.abs(255-b.rgb[2]-a.rgb[2]);return this.rgb(c,d,e)},tint:function(a,b){return this.mix(this.rgb(255,255,255),a,b)},shade:function(a,b){return this.mix(this.rgb(0,0,0),a,b)},extract:function(a,b){return b=b.value-1,Array.isArray(a.value)?a.value[b]:Array(a)[b]},length:function(a){var b=Array.isArray(a.value)?a.value.length:1;return new d.Dimension(b)},"data-uri":function(b,e){if("undefined"!=typeof a)return new d.URL(e||b,this.currentFileInfo).eval(this.env);var f=b.value,g=e&&e.value,h=c("fs"),i=c("path"),j=!1;if(arguments.length<2&&(g=f),this.env.isPathRelative(g)&&(g=this.currentFileInfo.relativeUrls?i.join(this.currentFileInfo.currentDirectory,g):i.join(this.currentFileInfo.entryPath,g)),arguments.length<2){var k;try{k=c("mime")}catch(l){k=d._mime}f=k.lookup(g);var m=k.charsets.lookup(f);j=["US-ASCII","UTF-8"].indexOf(m)<0,j&&(f+=";base64")}else j=/;base64$/.test(f);var n=h.readFileSync(g),o=32,p=parseInt(n.length/1024,10);if(p>=o&&this.env.ieCompat!==!1)return this.env.silent||console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!",g,p,o),new d.URL(e||b,this.currentFileInfo).eval(this.env);n=j?n.toString("base64"):encodeURIComponent(n);var q="'data:"+f+","+n+"'";return new d.URL(new d.Anonymous(q))},"svg-gradient":function(a){function c(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"}}arguments.length<3&&c();var e,f,g,h,i,j,k,l=Array.prototype.slice.call(arguments,1),m="linear",n='x="0" y="0" width="1" height="1"',o=!0,p={compress:!1},q=a.toCSS(p);switch(q){case"to bottom":e='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":e='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":e='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":e='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":m="radial",e='cx="50%" cy="50%" r="75%"',n='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(f='<'+m+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+e+">",g=0;gk?' stop-opacity="'+k+'"':"")+"/>";if(f+="',o)try{f=new Buffer(f).toString("base64")}catch(r){o=!1}return f="'data:image/svg+xml"+(o?";base64":"")+","+f+"'",new d.URL(new d.Anonymous(f))}},d._mime={_types:{".htm":"text/html",".html":"text/html",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png"},lookup:function(a){var e=c("path").extname(a),f=d._mime._types[e];if(f===b)throw new Error('Optional dependency "mime" is required for '+e);return f},charsets:{lookup:function(a){return a&&/^text\//.test(a)?"UTF-8":""}}};for(var i=[{name:"ceil"},{name:"floor"},{name:"sqrt"},{name:"abs"},{name:"tan",unit:""},{name:"sin",unit:""},{name:"cos",unit:""},{name:"atan",unit:"rad"},{name:"asin",unit:"rad"},{name:"acos",unit:"rad"}],j=function(a,b){return function(c){return null!=b&&(c=c.unify()),this._math(Math[a],b,c)}},k=0;k1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)},a.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},a.outputRuleset=function(a,b,c){b.add(a.compress?"{":" {\n"),a.tabLevel=(a.tabLevel||0)+1;for(var d=a.compress?"":Array(a.tabLevel+1).join(" "),e=a.compress?"":Array(a.tabLevel).join(" "),f=0;fb?-1:1},genCSS:function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={type:"Assignment",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Assignment(this.key,this.value.eval(b)):this},genCSS:function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d},a.Call.prototype={type:"Call",accept:function(a){this.args=a.visit(this.args)},eval:function(b){var c,d,e=this.args.map(function(a){return a.eval(b)}),f=this.name.toLowerCase();if(f in a.functions)try{if(d=new a.functionCall(b,this.currentFileInfo),c=d[f].apply(d,e),null!=c)return c}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}return new a.Call(this.name,e,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;cf;f++)e[f]=a.operate(b,c,this.rgb[f],d.rgb[f]);return new a.Color(e,this.alpha+d.alpha)},toRGB:function(){return"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},toHSL:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},toHSV:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},toARGB:function(){var a=[Math.round(255*this.alpha)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:0>a?0:a).toString(16),1===a.length?"0"+a:a}).join("")},compare:function(a){return a.rgb?a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:-1:-1}},a.Color.fromKeyword=function(c){if(a.colors.hasOwnProperty(c))return new a.Color(a.colors[c].slice(1));if(c===b){var d=new a.Color([0,0,0],0);return d.isTransparentKeyword=!0,d}}}(c("../tree")),function(a){a.Comment=function(a,b,c,d){this.value=a,this.silent=!!b,this.currentFileInfo=d},a.Comment.prototype={type:"Comment",genCSS:function(b,c){this.debugInfo&&c.add(a.debugInfo(b,this),this.currentFileInfo,this.index),c.add(this.value.trim())},toCSS:a.toCSS,isSilent:function(a){var b=this.currentFileInfo&&this.currentFileInfo.reference&&!this.isReferenced,c=a.compress&&!this.value.match(/^\/\*!/);return this.silent||b||c},eval:function(){return this},markReferenced:function(){this.isReferenced=!0}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype={type:"Condition",accept:function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},eval:function(a){var b,c=this.lvalue.eval(a),d=this.rvalue.eval(a),e=this.index;return b=function(a){switch(a){case"and":return c&&d;case"or":return c||d;default:if(c.compare)b=c.compare(d);else{if(!d.compare)throw{type:"Type",message:"Unable to perform comparison",index:e};b=d.compare(c)}switch(b){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a}}}(this.op),this.negate?!b:b}}}(c("../tree")),function(a){a.Dimension=function(c,d){this.value=parseFloat(c),this.unit=d&&d instanceof a.Unit?d:new a.Unit(d?[d]:b)},a.Dimension.prototype={type:"Dimension",accept:function(a){this.unit=a.visit(this.unit)},eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},genCSS:function(a,b){if(a&&a.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var c=this.value,d=String(c);if(0!==c&&1e-6>c&&c>-1e-6&&(d=c.toFixed(20).replace(/0+$/,"")),a&&a.compress){if(0===c&&this.unit.isLength())return b.add(d),void 0;c>0&&1>c&&(d=d.substr(1))}b.add(d),this.unit.genCSS(a,b)},toCSS:a.toCSS,operate:function(b,c,d){var e=a.operate(b,c,this.value,d.value),f=this.unit.clone();if("+"===c||"-"===c)if(0===f.numerator.length&&0===f.denominator.length)f.numerator=d.unit.numerator.slice(0),f.denominator=d.unit.denominator.slice(0);else if(0===d.unit.numerator.length&&0===f.denominator.length);else{if(d=d.convertTo(this.unit.usedUnits()),b.strictUnits&&d.unit.toString()!==f.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+f.toString()+"' and '"+d.unit.toString()+"'.");e=a.operate(b,c,this.value,d.value)}else"*"===c?(f.numerator=f.numerator.concat(d.unit.numerator).sort(),f.denominator=f.denominator.concat(d.unit.denominator).sort(),f.cancel()):"/"===c&&(f.numerator=f.numerator.concat(d.unit.denominator).sort(),f.denominator=f.denominator.concat(d.unit.numerator).sort(),f.cancel());return new a.Dimension(e,f)},compare:function(b){if(b instanceof a.Dimension){var c=this.unify(),d=b.unify(),e=c.value,f=d.value;return f>e?-1:e>f?1:d.unit.isEmpty()||0===c.unit.compare(d.unit)?0:-1}return-1},unify:function(){return this.convertTo({length:"m",duration:"s",angle:"rad"})},convertTo:function(b){var c,d,e,f,g,h=this.value,i=this.unit.clone(),j={};if("string"==typeof b){for(c in a.UnitConversions)a.UnitConversions[c].hasOwnProperty(b)&&(j={},j[c]=b);b=j}g=function(a,b){return e.hasOwnProperty(a)?(b?h/=e[a]/e[f]:h*=e[a]/e[f],f):a};for(d in b)b.hasOwnProperty(d)&&(f=b[d],e=a.UnitConversions[d],i.map(g));return i.cancel(),new a.Dimension(h,i)}},a.UnitConversions={length:{m:1,cm:.01,mm:.001,"in":.0254,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}},a.Unit=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],this.backupUnit=c},a.Unit.prototype={type:"Unit",clone:function(){return new a.Unit(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},genCSS:function(a,b){this.numerator.length>=1?b.add(this.numerator[0]):this.denominator.length>=1?b.add(this.denominator[0]):a&&a.strictUnits||!this.backupUnit||b.add(this.backupUnit)},toCSS:a.toCSS,toString:function(){var a,b=this.numerator.join("*");for(a=0;a0)for(b=0;e>b;b++)this.numerator.push(a);else if(0>e)for(b=0;-e>b;b++)this.denominator.push(a)}0===this.numerator.length&&0===this.denominator.length&&c&&(this.backupUnit=c),this.numerator.sort(),this.denominator.sort()}}}(c("../tree")),function(a){a.Directive=function(b,c,d,e){this.name=b,Array.isArray(c)?(this.rules=[new a.Ruleset([],c)],this.rules[0].allowImports=!0):this.value=c,this.currentFileInfo=e},a.Directive.prototype={type:"Directive",accept:function(a){this.rules=a.visit(this.rules),this.value=a.visit(this.value)},genCSS:function(b,c){c.add(this.name,this.currentFileInfo,this.index),this.rules?a.outputRuleset(b,c,this.rules):(c.add(" "),this.value.genCSS(b,c),c.add(";"))},toCSS:a.toCSS,eval:function(b){var c=this;return this.rules&&(b.frames.unshift(this),c=new a.Directive(this.name,null,this.index,this.currentFileInfo),c.rules=[this.rules[0].eval(b)],c.rules[0].root=!0,b.frames.shift()),c},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},markReferenced:function(){var a,b;if(this.isReferenced=!0,this.rules)for(b=this.rules[0].rules,a=0;a":" > ","|":"|"},_outputMapCompressed:{"":""," ":" ",":":" :","+":"+","~":"~",">":">","|":"|"},genCSS:function(a,b){b.add((a.compress?this._outputMapCompressed:this._outputMap)[this.value])},toCSS:a.toCSS}}(c("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={type:"Expression",accept:function(a){this.value=a.visit(this.value)},eval:function(b){var c,d=this.parens&&!this.parensInOp,e=!1;return d&&b.inParenthesis(),this.value.length>1?c=new a.Expression(this.value.map(function(a){return a.eval(b)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(e=!0),c=this.value[0].eval(b)):c=this,d&&b.outOfParenthesis(),this.parens&&this.parensInOp&&!b.isMathOn()&&!e&&(c=new a.Paren(c)),c},genCSS:function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[{elements:d}]}}}(c("../tree")),function(a){a.Import=function(a,c,d,e,f){if(this.options=d,this.index=e,this.path=a,this.features=c,this.currentFileInfo=f,this.options.less!==b||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/css([\?;].*)?$/.test(g)&&(this.css=!0)}},a.Import.prototype={type:"Import",accept:function(a){this.features=a.visit(this.features),this.path=a.visit(this.path),this.options.inline||(this.root=a.visit(this.root))},genCSS:function(a,b){this.css&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},toCSS:a.toCSS,getPath:function(){if(this.path instanceof a.Quoted){var c=this.path.value;return this.css!==b||/(\.[a-z]*$)|([\?;].*)$/.test(c)?c:c+".less"}return this.path instanceof a.URL?this.path.value.value:null},evalForImport:function(b){return new a.Import(this.path.eval(b),this.features,this.options,this.index,this.currentFileInfo)},evalPath:function(b){var c=this.path.eval(b),d=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(c instanceof a.URL)){if(d){var e=c.value;e&&b.isPathRelative(e)&&(c.value=d+e)}c.value=b.normalizePath(c.value)}return c},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.skip)return[];if(this.options.inline){var e=new a.Anonymous(this.root,0,{filename:this.importedFilename},!0);return this.features?new a.Media([e],this.features.value):[e]}if(this.css){var f=new a.Import(this.evalPath(b),d,this.options,this.index);if(!f.css&&this.error)throw this.error;return f}return c=new a.Ruleset([],this.root.rules.slice(0)),c.evalImports(b),this.features?new a.Media(c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={type:"JavaScript",eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify(new a.Variable("@"+e,d.index).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return"string"==typeof c?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={type:"Keyword",eval:function(){return this},genCSS:function(a,b){b.add(this.value)},toCSS:a.toCSS,compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.Media=function(b,c,d,e){this.index=d,this.currentFileInfo=e;var f=this.emptySelectors();this.features=new a.Value(c),this.rules=[new a.Ruleset(f,b)],this.rules[0].allowImports=!0},a.Media.prototype={type:"Media",accept:function(a){this.features=a.visit(this.features),this.rules=a.visit(this.rules)},genCSS:function(b,c){c.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(b,c),a.outputRuleset(b,c,this.rules)},toCSS:a.toCSS,eval:function(b){b.mediaBlocks||(b.mediaBlocks=[],b.mediaPath=[]);var c=new a.Media([],[],this.index,this.currentFileInfo);this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,c.debugInfo=this.debugInfo);var d=!1;b.strictMath||(d=!0,b.strictMath=!0);try{c.features=this.features.eval(b)}finally{d&&(b.strictMath=!1)}return b.mediaPath.push(c),b.mediaBlocks.push(c),b.frames.unshift(this.rules[0]),c.rules=[this.rules[0].eval(b)],b.frames.shift(),b.mediaPath.pop(),0===b.mediaPath.length?c.evalTop(b):c.evalNested(b)},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},emptySelectors:function(){var b=new a.Element("","&",this.index,this.currentFileInfo);return[new a.Selector([b],null,null,this.index,this.currentFileInfo)]},markReferenced:function(){var a,b=this.rules[0].rules;for(this.isReferenced=!0,a=0;a1){var d=this.emptySelectors();c=new a.Ruleset(d,b.mediaBlocks),c.multiMedia=!0}return delete b.mediaBlocks,delete b.mediaPath,c},evalNested:function(b){var c,d,e=b.mediaPath.concat([this]);for(c=0;c0;c--)b.splice(c,0,new a.Anonymous("and"));return new a.Expression(b)})),new a.Ruleset([],[])},permute:function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(j=!0,g=0;gthis.params.length)return!1}c=Math.min(d,this.arity);for(var e=0;c>e;e++)if(!this.params[e].name&&!this.params[e].variadic&&a[e].value.eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Negative=function(a){this.value=a},a.Negative.prototype={type:"Negative",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("-"),this.value.genCSS(a,b)},toCSS:a.toCSS,eval:function(b){return b.isMathOn()?new a.Operation("*",[new a.Dimension(-1),this.value]).eval(b):new a.Negative(this.value.eval(b))}}}(c("../tree")),function(a){a.Operation=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c},a.Operation.prototype={type:"Operation",accept:function(a){this.operands=a.visit(this.operands)},eval:function(b){var c,d=this.operands[0].eval(b),e=this.operands[1].eval(b);if(b.isMathOn()){if(d instanceof a.Dimension&&e instanceof a.Color){if("*"!==this.op&&"+"!==this.op)throw{type:"Operation",message:"Can't substract or divide a color from a number"};c=e,e=d,d=c}if(!d.operate)throw{type:"Operation",message:"Operation on an invalid type"};return d.operate(b,this.op,e)}return new a.Operation(this.op,[d,e],this.isSpaced)},genCSS:function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},toCSS:a.toCSS},a.operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={type:"Paren",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d,e){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e},a.Quoted.prototype={type:"Quoted",genCSS:function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},toCSS:a.toCSS,eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return new a.JavaScript(e,c.index,!0).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=new a.Variable("@"+e,c.index,c.currentFileInfo).eval(b,!0);return f instanceof a.Quoted?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},compare:function(a){if(!a.toCSS)return-1;var b=this.toCSS(),c=a.toCSS();return b===c?0:c>b?-1:1}}}(c("../tree")),function(a){a.Rule=function(b,c,d,e,f,g,h){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.merge=e,this.index=f,this.currentFileInfo=g,this.inline=h||!1,this.variable="@"===b.charAt(0)},a.Rule.prototype={type:"Rule",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},toCSS:a.toCSS,eval:function(b){var c=!1;"font"!==this.name||b.strictMath||(c=!0,b.strictMath=!0);try{return new a.Rule(this.name,this.value.eval(b),this.important,this.merge,this.index,this.currentFileInfo,this.inline)}finally{c&&(b.strictMath=!1)}},makeImportant:function(){return new a.Rule(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)}}}(c("../tree")),function(a){a.Ruleset=function(a,b,c){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c},a.Ruleset.prototype={type:"Ruleset",accept:function(a){if(this.paths)for(var b=0;bd?Array.prototype.push.apply(e,f.find(new a.Selector(b.elements.slice(d)),c)):e.push(f);break}}),this._lookups[f]=e)},genCSS:function(b,c){var d,e,f,g,h,i=[],j=[],k=!0;b.tabLevel=b.tabLevel||0,this.root||b.tabLevel++;var l=b.compress?"":Array(b.tabLevel+1).join(" "),m=b.compress?"":Array(b.tabLevel).join(" ");for(d=0;d0&&this.mergeElementsOnToSelectors(r,i),f=0;f0&&(k[0].elements=k[0].elements.slice(0),k[0].elements.push(new a.Element(j.combinator,"",0,j.index,j.currentFileInfo))),s.push(k);else for(g=0;g0?(m=k.slice(0),q=m.pop(),o=d.createDerived(q.elements.slice(0)),p=!1):o=d.createDerived([]),l.length>1&&(n=n.concat(l.slice(1))),l.length>0&&(p=!1,o.elements.push(new a.Element(j.combinator,l[0].elements[0].value,j.index,j.currentFileInfo)),o.elements=o.elements.concat(l[0].elements.slice(1))),p||m.push(o),m=m.concat(n),s.push(m);i=s,r=[]}for(r.length>0&&this.mergeElementsOnToSelectors(r,i),e=0;e0&&b.push(i[e])}else if(c.length>0)for(e=0;e0?e[e.length-1]=e[e.length-1].createDerived(e[e.length-1].elements.concat(b)):e.push(new a.Selector(b))}}}(c("../tree")),function(a){a.Selector=function(a,b,c,d,e,f){this.elements=a,this.extendList=b||[],this.condition=c,this.currentFileInfo=e||{},this.isReferenced=f,c||(this.evaldCondition=!0)},a.Selector.prototype={type:"Selector",accept:function(a){this.elements=a.visit(this.elements),this.extendList=a.visit(this.extendList),this.condition=a.visit(this.condition)},createDerived:function(b,c,d){d=null!=d?d:this.evaldCondition;var e=new a.Selector(b,c||this.extendList,this.condition,this.index,this.currentFileInfo,this.isReferenced);return e.evaldCondition=d,e},match:function(a){var b,c,d,e,f=this.elements,g=f.length;if(b=a.elements.slice(a.elements.length&&"&"===a.elements[0].value?1:0),c=b.length,d=Math.min(g,c),0===c||c>g)return 0;for(e=0;d>e;e++)if(f[e].value!==b[e].value)return 0;return d},eval:function(a){var b=this.condition&&this.condition.eval(a);return this.createDerived(this.elements.map(function(b){return b.eval(a)}),this.extendList.map(function(b){return b.eval(a)}),b)},genCSS:function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;c0)&&e.splice(0,0,b);else{b.paths=b.paths.filter(function(b){var c;for(" "===b[0].elements[0].combinator.value&&(b[0].elements[0].combinator=new a.Combinator("")),c=0;c0&&b.accept(this._visitor),c.visitDeeper=!1,this._mergeRules(b.rules),this._removeDuplicateRules(b.rules),b.rules.length>0&&b.paths.length>0&&e.splice(0,0,b)}return 1===e.length?e[0]:e},_removeDuplicateRules:function(b){var c,d,e,f={};for(e=b.length-1;e>=0;e--)if(d=b[e],d instanceof a.Rule)if(f[d.name]){c=f[d.name],c instanceof a.Rule&&(c=f[d.name]=[f[d.name].toCSS(this._env)]);var g=d.toCSS(this._env);-1!==c.indexOf(g)?b.splice(e,1):c.push(g)}else f[d.name]=d},_mergeRules:function(b){for(var c,d,e,f={},g=0;g1&&(d=c[0],d.value=new a.Value(c.map(function(a){return a.value})))})}}}(c("./tree")),function(a){a.extendFinderVisitor=function(){this._visitor=new a.visitor(this),this.contexts=[],this.allExtendsStack=[[]]},a.extendFinderVisitor.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(b){if(!b.root){var c,d,e,f,g=[];for(c=0;c100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,c,d+1))}return m},inInheritanceChain:function(a,b){if(a===b)return!0;if(b.parents){if(this.inInheritanceChain(a,b.parents[0]))return!0;if(this.inInheritanceChain(a,b.parents[1]))return!0}return!1},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){if(!a.root){var b,c,d,e,f=this.allExtendsStack[this.allExtendsStack.length-1],g=[],h=this;for(d=0;d0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1j&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),k=0,j++),i=f.elements.slice(k,h.index).concat([g]).concat(d.elements.slice(1)),j===h.pathIndex&&e>0?l[l.length-1].elements=l[l.length-1].elements.concat(i):(l=l.concat(c.slice(j,h.pathIndex)),l.push(new a.Selector(i))),j=h.endPathIndex,k=h.endPathElementIndex,k>=c[j].elements.length&&(k=0,j++);return j0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),j++),l=l.concat(c.slice(j,c.length))},visitRulesetOut:function(){},visitMedia:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}}}(c("./tree")),function(a){a.sourceMapOutput=function(a){this._css=[],this._rootNode=a.rootNode,this._writeSourceMap=a.writeSourceMap,this._contentsMap=a.contentsMap,this._sourceMapFilename=a.sourceMapFilename,this._outputFilename=a.outputFilename,this._sourceMapURL=a.sourceMapURL,this._sourceMapBasepath=a.sourceMapBasepath,this._sourceMapRootpath=a.sourceMapRootpath,this._outputSourceFiles=a.outputSourceFiles,this._sourceMapGeneratorConstructor=a.sourceMapGenerator||c("source-map").SourceMapGenerator,this._sourceMapRootpath&&"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/"),this._lineNumber=0,this._column=0},a.sourceMapOutput.prototype.normalizeFilename=function(a){return this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),("\\"===a.charAt(0)||"/"===a.charAt(0))&&(a=a.substring(1))),(this._sourceMapRootpath||"")+a.replace(/\\/g,"/")},a.sourceMapOutput.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename].substring(0,c);f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;i0){var c,d=JSON.stringify(this._sourceMapGenerator.toJSON());this._sourceMapURL?c=this._sourceMapURL:this._sourceMapFilename&&(c=this.normalizeFilename(this._sourceMapFilename)),this._writeSourceMap?this._writeSourceMap(d):c="data:application/json,"+encodeURIComponent(d),c&&this._css.push("/*# sourceMappingURL="+c+" */")}return this._css.join("")}}(c("./tree"));var y=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);w.env=w.env||("127.0.0.1"==location.hostname||"0.0.0.0"==location.hostname||"localhost"==location.hostname||location.port&&location.port.length>0||y?"development":"production");var z={info:2,errors:1,none:0};if(w.logLevel="undefined"!=typeof w.logLevel?w.logLevel:z.info,w.async=w.async||!1,w.fileAsync=w.fileAsync||!1,w.poll=w.poll||(y?1e3:1500),w.functions)for(var A in w.functions)w.tree.functions[A]=w.functions[A];var B=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);B&&(w.dumpLineNumbers=B[1]);var C=/^text\/(x-)?less$/,D=null,E={},F="";if(w.watch=function(){return w.watchMode||(w.env="development",u()),this.watchMode=!0},w.unwatch=function(){return clearInterval(w.watchTimer),this.watchMode=!1},/!watch/.test(location.hash)&&w.watch(),"development"!=w.env)try{D="undefined"==typeof a.localStorage?null:a.localStorage}catch(G){}var H=document.getElementsByTagName("link");w.sheets=[];for(var I=0;I= scrollHeight - offsetBottom) ? 'bottom' :\n offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false\n\n if (this.affixed === affix) return\n if (this.unpin) 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($.Event(affixType.replace('affix', 'affixed')))\n\n if (affix == 'bottom') {\n this.$element.offset({ top: scrollHeight - offsetBottom - this.$element.height() })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.affix\n\n $.fn.affix = function (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 $.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) data.offset.bottom = data.offsetBottom\n if (data.offsetTop) data.offset.top = data.offsetTop\n\n $spy.affix(data)\n })\n })\n\n}(jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.0.3\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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.hasClass('alert') ? $this : $this.parent()\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 $parent.trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one($.support.transition.end, removeElement)\n .emulateTransitionEnd(150) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.alert\n\n $.fn.alert = function (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 $.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","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.0.3\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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) $el.data('resetText', $el[val]())\n\n $el[val](data[state] || this.options[state])\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\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 }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n var old = $.fn.button\n\n $.fn.button = function (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 $.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).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 $btn.button('toggle')\n e.preventDefault()\n })\n\n}(jQuery);\n","carousel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.0.3\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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 =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.pause == 'hover' && this.$element\n .on('mouseenter', $.proxy(this.pause, this))\n .on('mouseleave', $.proxy(this.cycle, this))\n }\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true\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.getActiveIndex = function () {\n this.$active = this.$element.find('.item.active')\n this.$items = this.$active.parent().children()\n\n return this.$items.index(this.$active)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getActiveIndex()\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) })\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[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.end) {\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 || $active[type]()\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var fallback = type == 'next' ? 'first' : 'last'\n var that = this\n\n if (!$next.length) {\n if (!this.options.wrap) return\n $next = this.$element.find('.item')[fallback]()\n }\n\n if ($next.hasClass('active')) return\n\n var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })\n this.$element.trigger(e)\n if (e.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 this.$element.one('slid.bs.carousel', function () {\n var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])\n $nextIndicator && $nextIndicator.addClass('active')\n })\n }\n\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($.support.transition.end, function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)\n })\n .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger('slid.bs.carousel')\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.carousel\n\n $.fn.carousel = function (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 $.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 $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {\n var $this = $(this), href\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n $target.carousel(options)\n\n if (slideIndex = $this.attr('data-slide-to')) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n })\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n $carousel.carousel($carousel.data())\n })\n })\n\n}(jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.0.3\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.transitioning = null\n\n if (this.options.parent) this.$parent = $(this.options.parent)\n if (this.options.toggle) this.toggle()\n }\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 startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var actives = this.$parent && this.$parent.find('> .panel > .in')\n\n if (actives && actives.length) {\n var hasData = actives.data('bs.collapse')\n if (hasData && hasData.transitioning) return\n actives.collapse('hide')\n hasData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')\n [dimension](0)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')\n [dimension]('auto')\n this.transitioning = 0\n this.$element.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($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n [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\n [dimension](this.$element[dimension]())\n [0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse')\n .removeClass('in')\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .trigger('hidden.bs.collapse')\n .removeClass('collapsing')\n .addClass('collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one($.support.transition.end, $.proxy(complete, this))\n .emulateTransitionEnd(350)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n var old = $.fn.collapse\n\n $.fn.collapse = function (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) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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), href\n var target = $this.attr('data-target')\n || e.preventDefault()\n || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') //strip for ie7\n var $target = $(target)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n var parent = $this.attr('data-parent')\n var $parent = parent && $(parent)\n\n if (!data || !data.transitioning) {\n if ($parent) $parent.find('[data-toggle=collapse][data-parent=\"' + parent + '\"]').not($this).addClass('collapsed')\n $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')\n }\n\n $target.collapse(option)\n })\n\n}(jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.0.3\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.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 $('
    ').insertAfter($(this)).on('click', clearMenus)\n }\n\n $parent.trigger(e = $.Event('show.bs.dropdown'))\n\n if (e.isDefaultPrevented()) return\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown')\n\n $this.focus()\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27)/.test(e.keyCode)) 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 || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).focus()\n return $this.click()\n }\n\n var $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n if (!$items.length) return\n\n var index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).focus()\n }\n\n function clearMenus() {\n $(backdrop).remove()\n $(toggle).each(function (e) {\n var $parent = getParent($(this))\n if (!$parent.hasClass('open')) return\n $parent.trigger(e = $.Event('hide.bs.dropdown'))\n if (e.isDefaultPrevented()) return\n $parent.removeClass('open').trigger('hidden.bs.dropdown')\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 var old = $.fn.dropdown\n\n $.fn.dropdown = function (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 $.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 + ', [role=menu]', Dropdown.prototype.keydown)\n\n}(jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.js v3.0.3\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n\n if (this.options.remote) this.$element.find('.modal-content').load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this[!this.isShown ? 'show' : 'hide'](_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.escape()\n\n this.$element.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\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(document.body) // don't move modals dom position\n }\n\n that.$element.show()\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.$element.find('.modal-dialog') // wait for modal to slide in\n .one($.support.transition.end, function () {\n that.$element.focus().trigger(e)\n })\n .emulateTransitionEnd(300) :\n that.$element.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\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one($.support.transition.end, $.proxy(this.hideModal, this))\n .emulateTransitionEnd(300) :\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.focus()\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keyup.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.removeBackdrop()\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 animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
    ')\n .appendTo(document.body)\n\n this.$element.on('click.dismiss.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\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($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one($.support.transition.end, callback)\n .emulateTransitionEnd(150) :\n callback()\n\n } else if (callback) {\n callback()\n }\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n var old = $.fn.modal\n\n $.fn.modal = function (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 $.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\n .modal(option, this)\n .one('hide', function () {\n $this.is(':visible') && $this.focus()\n })\n })\n\n $(document)\n .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })\n .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })\n\n}(jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.0.3\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

    '\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')[ // 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 Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.popover\n\n $.fn.popover = function (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 && option == 'destroy') return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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","scrollspy.js":"/* ========================================================================\n * Bootstrap: scrollspy.js v3.0.3\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var href\n var process = $.proxy(this.process, this)\n\n this.$element = $(element).is('body') ? $(window) : $(element)\n this.$body = $('body')\n this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target\n || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) //strip for ie7\n || '') + ' .nav li > a'\n this.offsets = $([])\n this.targets = $([])\n this.activeTarget = null\n\n this.refresh()\n this.process()\n }\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = this.$element[0] == window ? 'offset' : 'position'\n\n this.offsets = $([])\n this.targets = $([])\n\n var self = this\n var $targets = 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[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.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.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight\n var maxScroll = 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 (scrollTop >= maxScroll) {\n return activeTarget != (i = targets.last()[0]) && this.activate(i)\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || 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.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\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\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = function (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 $.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', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n $spy.scrollspy($spy.data())\n })\n })\n\n}(jQuery);\n","tab.js":"/* ========================================================================\n * Bootstrap: tab.js v3.0.3\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\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')[0]\n var e = $.Event('show.bs.tab', {\n relatedTarget: previous\n })\n\n $this.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.parent('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: previous\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.hasClass('fade')\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n\n element.addClass('active')\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')) {\n element.closest('li.dropdown').addClass('active')\n }\n\n callback && callback()\n }\n\n transition ?\n $active\n .one($.support.transition.end, next)\n .emulateTransitionEnd(150) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n var old = $.fn.tab\n\n $.fn.tab = function ( 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 $.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 $(document).on('click.bs.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function (e) {\n e.preventDefault()\n $(this).tab('show')\n })\n\n}(jQuery);\n","tooltip.js":"/* ========================================================================\n * Bootstrap: tooltip.js v3.0.3\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false\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\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)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\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)[this.type](this.getDelegateOptions()).data('bs.' + this.type)\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 if (e.isDefaultPrevented()) return\n var that = this;\n\n var $tip = this.tip()\n\n this.setContent()\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\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 $parent = this.$element.parent()\n\n var orgPlacement = placement\n var docScroll = document.documentElement.scrollTop || document.body.scrollTop\n var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()\n var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()\n var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left\n\n placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :\n placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :\n placement == 'left' && pos.left - actualWidth < parentLeft ? '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 this.hoverState = null\n\n var complete = function() {\n that.$element.trigger('shown.bs.' + that.type)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var replace\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 jQuery.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 replace = true\n offset.top = offset.top + height - actualHeight\n }\n\n if (/bottom|top/.test(placement)) {\n var delta = 0\n\n if (offset.left < 0) {\n delta = offset.left * -2\n offset.left = 0\n\n $tip.offset(offset)\n\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n }\n\n this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n } else {\n this.replaceArrow(actualHeight - height, actualHeight, 'top')\n }\n\n if (replace) $tip.offset(offset)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, position) {\n this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + '%') : '')\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 () {\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.trigger('hidden.bs.' + that.type)\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one($.support.transition.end, complete)\n .emulateTransitionEnd(150) :\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 () {\n var el = this.$element[0]\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n width: el.offsetWidth,\n height: el.offsetHeight\n }, this.$element.offset())\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 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.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.validate = function () {\n if (!this.$element[0].parentNode) {\n this.hide()\n this.$element = null\n this.options = null\n }\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 = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n clearTimeout(this.timeout)\n this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = function (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 && option == 'destroy') return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\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","transition.js":"/* ========================================================================\n * Bootstrap: transition.js v3.0.3\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2013 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) { '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, $el = this\n $(this).one($.support.transition.end, 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\n}(jQuery);\n"} -var __less = {"alerts.less":"//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","badges.less":"//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Hover state, but only for links\na.badge {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n","bootstrap.less":"// Core variables and mixins\n@import \"variables.less\";\n@import \"mixins.less\";\n\n// Reset\n@import \"normalize.less\";\n@import \"print.less\";\n\n// Core CSS\n@import \"scaffolding.less\";\n@import \"type.less\";\n@import \"code.less\";\n@import \"grid.less\";\n@import \"tables.less\";\n@import \"forms.less\";\n@import \"buttons.less\";\n\n// Components\n@import \"component-animations.less\";\n@import \"glyphicons.less\";\n@import \"dropdowns.less\";\n@import \"button-groups.less\";\n@import \"input-groups.less\";\n@import \"navs.less\";\n@import \"navbar.less\";\n@import \"breadcrumbs.less\";\n@import \"pagination.less\";\n@import \"pager.less\";\n@import \"labels.less\";\n@import \"badges.less\";\n@import \"jumbotron.less\";\n@import \"thumbnails.less\";\n@import \"alerts.less\";\n@import \"progress-bars.less\";\n@import \"media.less\";\n@import \"list-group.less\";\n@import \"panels.less\";\n@import \"wells.less\";\n@import \"close.less\";\n\n// Components w/ JavaScript\n@import \"modals.less\";\n@import \"tooltip.less\";\n@import \"popovers.less\";\n@import \"carousel.less\";\n\n// Utility classes\n@import \"utilities.less\";\n@import \"responsive-utilities.less\";\n","breadcrumbs.less":"//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","button-groups.less":"//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n &:focus {\n // Remove focus outline when dropdown JS adds it after closing the menu\n outline: none;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { .btn-xs(); }\n.btn-group-sm > .btn { .btn-sm(); }\n.btn-group-lg > .btn { .btn-lg(); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n display: none;\n}\n","buttons.less":"//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &:focus {\n .tab-focus();\n }\n\n &:hover,\n &:focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n cursor: pointer;\n border-radius: 0;\n\n &,\n &:active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","carousel.less":"//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n .img-responsive();\n line-height: 1;\n }\n }\n\n > .active,\n > .next,\n > .prev { display: block; }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: none;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n font-family: serif;\n }\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicons-chevron-left,\n .glyphicons-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n margin-left: -15px;\n font-size: 30px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","close.less":"//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","code.less":"//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n white-space: nowrap;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","component-animations.less":"//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.in {\n display: block;\n }\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition(height .35s ease);\n}\n","dropdowns.less":"//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: not-allowed;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n\n","forms.less":"//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; /* IE8-9 */\n line-height: normal;\n}\n\n// Set the height of select and file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611\nselect optgroup {\n font-size: inherit;\n font-style: inherit;\n font-family: inherit;\n}\n\n// Focus for select, file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Fix for Chrome number input\n// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.\n// See https://github.com/twbs/bootstrap/issues/8350 for more.\ninput[type=\"number\"] {\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n height: auto;\n }\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n //\n // Placeholder text gets special styles because when browsers invalidate entire\n // lines if it doesn't understand a selector/\n .placeholder();\n\n // Disabled and read-only inputs\n // Note: HTML5 says that controls under a fieldset > legend:first-child won't\n // be disabled if the fieldset is disabled. Due to implementation difficulty,\n // we don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: not-allowed;\n background-color: @input-bg-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\ninput[type=\"date\"] {\n line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n display: block;\n min-height: @line-height-computed; // clear the floating input if there is no label text\n margin-top: 10px;\n margin-bottom: 10px;\n padding-left: 20px;\n label {\n display: inline;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n float: left;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n\n // Feedback icon (requires .glyphicon classes)\n .form-control-feedback {\n position: absolute;\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n right: 0;\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n }\n}\n\n// Feedback states\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n vertical-align: middle;\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n float: none;\n margin-left: 0;\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of labels, radios, and checkboxes\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n .form-control-static {\n padding-top: (@padding-base-vertical + 1);\n }\n\n // Only right align form labels here when the columns stop stacking\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n right: (@grid-gutter-width / 2);\n }\n}\n","glyphicons.less":"//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.svg#glyphicons-halflingsregular') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","grid.less":"//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid-columns-float(xs);\n.make-grid(@grid-columns, xs, width);\n.make-grid(@grid-columns, xs, pull);\n.make-grid(@grid-columns, xs, push);\n.make-grid(@grid-columns, xs, offset);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid-columns-float(sm);\n .make-grid(@grid-columns, sm, width);\n .make-grid(@grid-columns, sm, pull);\n .make-grid(@grid-columns, sm, push);\n .make-grid(@grid-columns, sm, offset);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid-columns-float(md);\n .make-grid(@grid-columns, md, width);\n .make-grid(@grid-columns, md, pull);\n .make-grid(@grid-columns, md, push);\n .make-grid(@grid-columns, md, offset);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid-columns-float(lg);\n .make-grid(@grid-columns, lg, width);\n .make-grid(@grid-columns, lg, pull);\n .make-grid(@grid-columns, lg, push);\n .make-grid(@grid-columns, lg, offset);\n}\n","input-groups.less":"//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","jumbotron.less":"//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n .container & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","labels.less":"//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n &[href] {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","list-group.less":"//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
      ,
        , or
        .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Align badges within list items\n > .badge {\n float: right;\n }\n > .badge + .badge {\n margin-right: 5px;\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","media.less":"// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n > .pull-left {\n margin-right: 10px;\n }\n > .pull-right {\n margin-left: 10px;\n }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","mixins.less":"//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; } // Firefox 4-18\n &::-moz-placeholder { color: @color; // Firefox 19+\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n -o-user-select: @select;\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n &,\n tr&,\n th&,\n td& { display: none !important; }\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.make-grid-columns-float(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.make-grid(@index, @class, @type) when (@index >= 0) {\n .calc-grid(@index, @class, @type);\n // next iteration\n .make-grid((@index - 1), @class, @type);\n}\n\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedack icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. ``\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea& {\n height: auto;\n }\n}\n","modals.less":"//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: auto;\n overflow-y: scroll;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0)}\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: none;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n margin-top: 15px;\n padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n .modal-lg { width: @modal-lg; }\n\n}\n","navbar.less":"//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n max-height: 340px;\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n // Prevent Glyphicons from increasing height of navbar\n > .glyphicon {\n float: left;\n margin-top: -2px;\n margin-right: 5px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n\n &.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right { .pull-right(); }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-right: 0;\n }\n }\n}\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n}\n","navs.less":"//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","normalize.less":"/*! normalize.css v2.1.3 | MIT License | git.io/normalize */\n\n// ==========================================================================\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined in IE 8/9.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// Correct `inline-block` display not defined in IE 8/9.\n//\n\naudio,\ncanvas,\nvideo {\n display: inline-block;\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9.\n// Hide the `template` element in IE, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// ==========================================================================\n// Base\n// ==========================================================================\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// ==========================================================================\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background: transparent;\n}\n\n//\n// Address `outline` inconsistency between Chrome and other browsers.\n//\n\na:focus {\n outline: thin dotted;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// ==========================================================================\n// Typography\n// ==========================================================================\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari 5, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9, Safari 5, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari 5 and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Correct font family set oddly in Safari 5 and Chrome.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, serif;\n font-size: 1em;\n}\n\n//\n// Improve readability of pre-formatted text in all browsers.\n//\n\npre {\n white-space: pre-wrap;\n}\n\n//\n// Set consistent quote types.\n//\n\nq {\n quotes: \"\\201C\" \"\\201D\" \"\\2018\" \"\\2019\";\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// ==========================================================================\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow displayed oddly in IE 9.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// ==========================================================================\n// Figures\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari 5.\n//\n\nfigure {\n margin: 0;\n}\n\n// ==========================================================================\n// Forms\n// ==========================================================================\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// 1. Correct font family not being inherited in all browsers.\n// 2. Correct font size not being inherited in all browsers.\n// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n//\n\nbutton,\ninput,\nselect,\ntextarea {\n font-family: inherit; // 1\n font-size: 100%; // 2\n margin: 0; // 3\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\nbutton,\ninput {\n line-height: normal;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.\n// Correct `select` style inheritance in Firefox 4+ and Opera.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari 5 and Chrome\n// on OS X.\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// 1. Remove default vertical scrollbar in IE 8/9.\n// 2. Improve readability and alignment in all browsers.\n//\n\ntextarea {\n overflow: auto; // 1\n vertical-align: top; // 2\n}\n\n// ==========================================================================\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n","pager.less":"//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: not-allowed;\n }\n }\n\n}\n","pagination.less":"//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: not-allowed;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","panels.less":"//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n\n // Remove border radius for top one\n &:first-child {\n .border-top-radius(0);\n }\n // But keep it for the last one\n &:last-child {\n border-bottom: 0;\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table {\n margin-bottom: 0;\n \n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child th,\n > .table > tbody:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n\n &:last-child > th,\n &:last-child > td {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Optional heading\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: 10px 15px;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n overflow: hidden; // crop contents when collapsed\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n + .panel-collapse .panel-body {\n border-top: 1px solid @panel-inner-border;\n }\n }\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n","popovers.less":"//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n text-align: left; // Reset given new insertion method\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -10px; }\n &.right { margin-left: 10px; }\n &.bottom { margin-top: 10px; }\n &.left { margin-left: -10px; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 18px;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: 5px 5px 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n\n}\n","print.less":"//\n// Basic print styles\n// --------------------------------------------------\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css\n\n@media print {\n\n * {\n text-shadow: none !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links for images, or javascript/internal links\n a[href^=\"javascript:\"]:after,\n a[href^=\"#\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n @page {\n margin: 2cm .5cm;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .table {\n td,\n th {\n background-color: #fff !important;\n }\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n}\n","progress-bars.less":"//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n.progress-striped .progress-bar {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n.progress.active .progress-bar {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","responsive-utilities.less":"//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#browsers\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n.visible-xs {\n .responsive-invisibility();\n\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-sm {\n .responsive-invisibility();\n\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-md {\n .responsive-invisibility();\n\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-lg {\n .responsive-invisibility();\n\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","scaffolding.less":"//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n\n*,\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 62.5%;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n","tables.less":"//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n max-width: 100%;\n background-color: @table-bg;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-child(odd) {\n > td,\n > th {\n background-color: @table-bg-accent;\n }\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n > td,\n > th {\n background-color: @table-bg-hover;\n }\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n.table-row-variant(info; @state-info-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n@media (max-width: @screen-xs-max) {\n .table-responsive {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n overflow-x: scroll;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n -webkit-overflow-scrolling: touch;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","theme.less":"\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","thumbnails.less":"//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n > img,\n a > img {\n .img-responsive();\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","tooltip.less":"//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n font-size: @font-size-small;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","type.less":"//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 200;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: 14px base font * 85% = about 12px\nsmall,\n.small { font-size: 85%; }\n\n// Undo browser default styling\ncite { font-style: normal; }\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n color: @brand-primary;\n &:hover {\n color: darken(@brand-primary, 10%);\n }\n}\n.text-warning {\n color: @state-warning-text;\n &:hover {\n color: darken(@state-warning-text, 10%);\n }\n}\n.text-danger {\n color: @state-danger-text;\n &:hover {\n color: darken(@state-danger-text, 10%);\n }\n}\n.text-success {\n color: @state-success-text;\n &:hover {\n color: darken(@state-success-text, 10%);\n }\n}\n.text-info {\n color: @state-info-text;\n &:hover {\n color: darken(@state-info-text, 10%);\n }\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n background-color: @brand-primary;\n a&:hover {\n background-color: darken(@brand-primary, 10%);\n }\n}\n.bg-warning {\n background-color: @state-warning-bg;\n a&:hover {\n background-color: darken(@state-warning-bg, 10%);\n }\n}\n.bg-danger {\n background-color: @state-danger-bg;\n a&:hover {\n background-color: darken(@state-danger-bg, 10%);\n }\n}\n.bg-success {\n background-color: @state-success-bg;\n a&:hover {\n background-color: darken(@state-success-bg, 10%);\n }\n}\n.bg-info {\n background-color: @state-info-bg;\n a&:hover {\n background-color: darken(@state-info-bg, 10%);\n }\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// --------------------------------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n\n &:first-child {\n padding-left: 0;\n }\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n@media (min-width: @grid-float-breakpoint) {\n .dl-horizontal {\n dt {\n float: left;\n width: (@component-offset-horizontal - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @component-offset-horizontal;\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n }\n}\n\n// MISC\n// ----\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: (@font-size-base * 1.25);\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Deprecating small and .small for v3.1\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Quotes\nblockquote:before,\nblockquote:after {\n content: \"\";\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","utilities.less":"//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","variables.less":"//\n// Variables\n// --------------------------------------------------\n\n\n// Global values\n// --------------------------------------------------\n\n// Grays\n// -------------------------\n\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-dark: lighten(#000, 20%); // #333\n@gray: lighten(#000, 33.5%); // #555\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n\n// Brand colors\n// -------------------------\n\n@brand-primary: #428bca;\n@brand-success: #5cb85c;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n@brand-info: #5bc0de;\n\n// Scaffolding\n// -------------------------\n\n@body-bg: #fff;\n@text-color: @gray-dark;\n\n// Links\n// -------------------------\n\n@link-color: @brand-primary;\n@link-hover-color: darken(@link-color, 15%);\n\n// Typography\n// -------------------------\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n@line-height-base: 1.428571429; // 20/14\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n@headings-font-family: inherit;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n// Iconography\n// -------------------------\n\n@icon-font-path: \"../fonts/\";\n@icon-font-name: \"glyphicons-halflings-regular\";\n\n\n// Components\n// -------------------------\n// Based on 14px font-size and 1.428 line-height (~20px to start)\n\n@padding-base-vertical: 6px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 10px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.33;\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n@component-active-color: #fff;\n@component-active-bg: @brand-primary;\n\n@caret-width-base: 4px;\n@caret-width-large: 5px;\n\n// Tables\n// -------------------------\n\n@table-cell-padding: 8px;\n@table-condensed-cell-padding: 5px;\n\n@table-bg: transparent; // overall background-color\n@table-bg-accent: #f9f9f9; // for striping\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n@table-border-color: #ddd; // table and cell border\n\n\n// Buttons\n// -------------------------\n\n@btn-font-weight: normal;\n\n@btn-default-color: #333;\n@btn-default-bg: #fff;\n@btn-default-border: #ccc;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n\n// Forms\n// -------------------------\n\n@input-bg: #fff;\n@input-bg-disabled: @gray-lighter;\n\n@input-color: @gray;\n@input-border: #ccc;\n@input-border-radius: @border-radius-base;\n@input-border-focus: #66afe9;\n\n@input-color-placeholder: @gray-light;\n\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n@input-group-addon-bg: @gray-lighter;\n@input-group-addon-border-color: @input-border;\n\n\n// Dropdowns\n// -------------------------\n\n@dropdown-bg: #fff;\n@dropdown-border: rgba(0,0,0,.15);\n@dropdown-fallback-border: #ccc;\n@dropdown-divider-bg: #e5e5e5;\n\n@dropdown-link-color: @gray-dark;\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n@dropdown-link-hover-bg: #f5f5f5;\n\n@dropdown-link-active-color: @component-active-color;\n@dropdown-link-active-bg: @component-active-bg;\n\n@dropdown-link-disabled-color: @gray-light;\n\n@dropdown-header-color: @gray-light;\n\n// Note: Deprecated @dropdown-caret-color as of v3.1\n@dropdown-caret-color: #000;\n\n\n// COMPONENT VARIABLES\n// --------------------------------------------------\n\n\n// Z-index master list\n// -------------------------\n// Used for a bird's eye view of components dependent on the z-axis\n// Try to avoid customizing these :)\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1010;\n@zindex-tooltip: 1030;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n// Media queries breakpoints\n// --------------------------------------------------\n\n// Extra small screen / phone\n// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1\n@screen-xs: 480px;\n@screen-xs-min: @screen-xs;\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n// Grid system\n// --------------------------------------------------\n\n// Number of columns in the grid system\n@grid-columns: 12;\n// Padding, to be divided by two and applied to the left and right of all columns\n@grid-gutter-width: 30px;\n\n// Navbar collapse\n\n// Point at which the navbar becomes uncollapsed\n@grid-float-breakpoint: @screen-sm-min;\n// Point at which the navbar begins collapsing\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n// Navbar\n// -------------------------\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n\n@navbar-default-color: #777;\n@navbar-default-bg: #f8f8f8;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #777;\n@navbar-default-link-hover-color: #333;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #555;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #888;\n@navbar-default-toggle-border-color: #ddd;\n\n\n// Inverted navbar\n//\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: #222;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: @gray-light;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #333;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: #333;\n\n\n// Navs\n// -------------------------\n\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n@nav-open-link-hover-color: #fff;\n\n// Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n// Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n// Pagination\n// -------------------------\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n// Pager\n// -------------------------\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n// Jumbotron\n// -------------------------\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n\n\n// Form states and alerts\n// -------------------------\n\n@state-success-text: #3c763d;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #31708f;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #8a6d3b;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: #a94442;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n// Tooltips\n// -------------------------\n@tooltip-max-width: 200px;\n@tooltip-color: #fff;\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n@tooltip-arrow-width: 5px;\n@tooltip-arrow-color: @tooltip-bg;\n\n\n// Popovers\n// -------------------------\n@popover-bg: #fff;\n@popover-max-width: 276px;\n@popover-border-color: rgba(0,0,0,.2);\n@popover-fallback-border-color: #ccc;\n\n@popover-title-bg: darken(@popover-bg, 3%);\n\n@popover-arrow-width: 10px;\n@popover-arrow-color: #fff;\n\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n@popover-arrow-outer-color: rgba(0,0,0,.25);\n@popover-arrow-outer-fallback-color: #999;\n\n\n// Labels\n// -------------------------\n\n@label-default-bg: @gray-light;\n@label-primary-bg: @brand-primary;\n@label-success-bg: @brand-success;\n@label-info-bg: @brand-info;\n@label-warning-bg: @brand-warning;\n@label-danger-bg: @brand-danger;\n\n@label-color: #fff;\n@label-link-hover-color: #fff;\n\n\n// Modals\n// -------------------------\n@modal-inner-padding: 20px;\n\n@modal-title-padding: 15px;\n@modal-title-line-height: @line-height-base;\n\n@modal-content-bg: #fff;\n@modal-content-border-color: rgba(0,0,0,.2);\n@modal-content-fallback-border-color: #999;\n\n@modal-backdrop-bg: #000;\n@modal-backdrop-opacity: .5;\n@modal-header-border-color: #e5e5e5;\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-sm: 300px;\n\n\n// Alerts\n// -------------------------\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n// Progress bars\n// -------------------------\n@progress-bg: #f5f5f5;\n@progress-bar-color: #fff;\n\n@progress-bar-bg: @brand-primary;\n@progress-bar-success-bg: @brand-success;\n@progress-bar-warning-bg: @brand-warning;\n@progress-bar-danger-bg: @brand-danger;\n@progress-bar-info-bg: @brand-info;\n\n\n// List group\n// -------------------------\n@list-group-bg: #fff;\n@list-group-border: #ddd;\n@list-group-border-radius: @border-radius-base;\n\n@list-group-hover-bg: #f5f5f5;\n@list-group-active-color: @component-active-color;\n@list-group-active-bg: @component-active-bg;\n@list-group-active-border: @list-group-active-bg;\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n@list-group-link-color: #555;\n@list-group-link-heading-color: #333;\n\n// Panels\n// -------------------------\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-border-radius: @border-radius-base;\n\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n\n// Thumbnails\n// -------------------------\n@thumbnail-padding: 4px;\n@thumbnail-bg: @body-bg;\n@thumbnail-border: #ddd;\n@thumbnail-border-radius: @border-radius-base;\n\n@thumbnail-caption-color: @text-color;\n@thumbnail-caption-padding: 9px;\n\n\n// Wells\n// -------------------------\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n// Badges\n// -------------------------\n@badge-color: #fff;\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n@badge-active-color: @link-color;\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n// Breadcrumbs\n// -------------------------\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n@breadcrumb-bg: #f5f5f5;\n@breadcrumb-color: #ccc;\n@breadcrumb-active-color: @gray-light;\n@breadcrumb-separator: \"/\";\n\n\n// Carousel\n// ------------------------\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n// Close\n// ------------------------\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n// Code\n// ------------------------\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n// Type\n// ------------------------\n@text-muted: @gray-light;\n@abbr-border-color: @gray-light;\n@headings-small-color: @gray-light;\n@blockquote-small-color: @gray-light;\n@blockquote-border-color: @gray-lighter;\n@page-header-border-color: @gray-lighter;\n\n// Miscellaneous\n// -------------------------\n\n// Hr border color\n@hr-border: @gray-lighter;\n\n// Horizontal forms & lists\n@component-offset-horizontal: 180px;\n\n\n// Container sizes\n// --------------------------------------------------\n\n// Small screen / tablet\n@container-tablet: ((720px + @grid-gutter-width));\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: ((940px + @grid-gutter-width));\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: ((1140px + @grid-gutter-width));\n@container-lg: @container-large-desktop;\n","wells.less":"//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n"} +var __fonts = {"glyphicons-halflings-regular.eot":"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","glyphicons-halflings-regular.svg":"PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+PC9tZXRhZGF0YT4KPGRlZnM+Cjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA+Cjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIC8+CjxnbHlwaCAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZDsiIC8+CjxnbHlwaCB1bmljb2RlPSIgIiAvPgo8Z2x5cGggdW5pY29kZT0iKiIgZD0iTTEwMCA1MDB2MjAwaDI1OWwtMTgzIDE4M2wxNDEgMTQxbDE4MyAtMTgzdjI1OWgyMDB2LTI1OWwxODMgMTgzbDE0MSAtMTQxbC0xODMgLTE4M2gyNTl2LTIwMGgtMjU5bDE4MyAtMTgzbC0xNDEgLTE0MWwtMTgzIDE4M3YtMjU5aC0yMDB2MjU5bC0xODMgLTE4M2wtMTQxIDE0MWwxODMgMTgzaC0yNTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTAgNDAwdjMwMGg0MDB2NDAwaDMwMHYtNDAwaDQwMHYtMzAwaC00MDB2LTQwMGgtMzAwdjQwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGEwOyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzA0IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTIiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDQiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzNCIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI2IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTciIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYzIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNMTAwIDUwMGwxMDAgMTAwaDExM3EwIDQ3IDUgMTAwaC0yMThsMTAwIDEwMGgxMzVxMzcgMTY3IDExMiAyNTdxMTE3IDE0MSAyOTcgMTQxcTI0MiAwIDM1NCAtMTg5cTYwIC0xMDMgNjYgLTIwOWgtMTgxcTAgNTUgLTI1LjUgOTl0LTYzLjUgNjh0LTc1IDM2LjV0LTY3IDEyLjVxLTI0IDAgLTUyLjUgLTEwdC02Mi41IC0zMnQtNjUuNSAtNjd0LTUwLjUgLTEwN2gzNzlsLTEwMCAtMTAwaC0zMDBxLTYgLTQ2IC02IC0xMDBoNDA2bC0xMDAgLTEwMCBoLTMwMHE5IC03NCAzMyAtMTMydDUyLjUgLTkxdDYyIC01NC41dDU5IC0yOXQ0Ni41IC03LjVxMjkgMCA2NiAxM3Q3NSAzN3Q2My41IDY3LjV0MjUuNSA5Ni41aDE3NHEtMzEgLTE3MiAtMTI4IC0yNzhxLTEwNyAtMTE3IC0yNzQgLTExN3EtMjA1IDAgLTMyNCAxNThxLTM2IDQ2IC02OSAxMzEuNXQtNDUgMjA1LjVoLTIxN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyMjEyOyIgZD0iTTIwMCA0MDBoOTAwdjMwMGgtOTAwdi0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjYwMTsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoNzUwcTEyMCAwIDIwNSA4NnQ4NSAyMDhxMCAxMjAgLTg1IDIwNi41dC0yMDUgODYuNXEtNDYgMCAtOTAgLTE0cS00NCA5NyAtMTM0LjUgMTU2LjV0LTIwMC41IDU5LjVxLTE1MiAwIC0yNjAgLTEwNy41dC0xMDggLTI2MC41cTAgLTI1IDIgLTM3cS02NiAtMTQgLTEwOC41IC02Ny41dC00Mi41IC0xMjIuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTAgMTAwbDQwMCA0MDBsMjAwIC0yMDBsMjAwIDIwMGw0MDAgLTQwMGgtMTIwMHpNMCAzMDB2NjAwbDMwMCAtMzAwek0wIDExMDBsNjAwIC02MDNsNjAwIDYwM2gtMTIwMHpNOTAwIDYwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0tMTMgLTEzbDMzMyAxMTJsLTIyMyAyMjN6TTE4NyA0MDNsMjE0IC0yMTRsNjE0IDYxNGwtMjE0IDIxNHpNODg3IDExMDNsMjE0IC0yMTRsOTkgOTJxMTMgMTMgMTMgMzIuNXQtMTMgMzMuNWwtMTUzIDE1M3EtMTUgMTMgLTMzIDEzdC0zMyAtMTN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMDsiIGhvcml6LWFkdi14PSI1MDAiIGQ9Ik0wIDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik0wIDEyMDBoMTIwMGwtNTAwIC01NTB2LTU1MGgzMDB2LTEwMGgtODAwdjEwMGgzMDB2NTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDI7IiBkPSJNMTQgODRxMTggLTU1IDg2IC03NS41dDE0NyA1LjVxNjUgMjEgMTA5IDY5dDQ0IDkwdjYwNmw2MDAgMTU1di01MjFxLTY0IDE2IC0xMzggLTdxLTc5IC0yNiAtMTIyLjUgLTgzdC0yNS41IC0xMTFxMTcgLTU1IDg1LjUgLTc1LjV0MTQ3LjUgNC41cTcwIDIzIDExMS41IDYzLjV0NDEuNSA5NS41djg4MXEwIDEwIC03IDE1LjV0LTE3IDIuNWwtNzUyIC0xOTNxLTEwIC0zIC0xNyAtMTIuNXQtNyAtMTkuNXYtNjg5cS02NCAxNyAtMTM4IC03IHEtNzkgLTI1IC0xMjIuNSAtODJ0LTI1LjUgLTExMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDAzOyIgZD0iTTIzIDY5M3EwIDIwMCAxNDIgMzQydDM0MiAxNDJ0MzQyIC0xNDJ0MTQyIC0zNDJxMCAtMTQyIC03OCAtMjYxbDMwMCAtMzAwcTcgLTggNyAtMTh0LTcgLTE4bC0xMDkgLTEwOXEtOCAtNyAtMTggLTd0LTE4IDdsLTMwMCAzMDBxLTExOSAtNzggLTI2MSAtNzhxLTIwMCAwIC0zNDIgMTQydC0xNDIgMzQyek0xNzYgNjkzcTAgLTEzNiA5NyAtMjMzdDIzNCAtOTd0MjMzLjUgOTYuNXQ5Ni41IDIzMy41dC05Ni41IDIzMy41dC0yMzMuNSA5Ni41IHQtMjM0IC05N3QtOTcgLTIzM3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDA1OyIgZD0iTTEwMCA3ODRxMCA2NCAyOCAxMjN0NzMgMTAwLjV0MTA0LjUgNjR0MTE5IDIwLjV0MTIwIC0zOC41dDEwNC41IC0xMDQuNXE0OCA2OSAxMDkuNSAxMDV0MTIxLjUgMzh0MTE4LjUgLTIwLjV0MTAyLjUgLTY0dDcxIC0xMDAuNXQyNyAtMTIzcTAgLTU3IC0zMy41IC0xMTcuNXQtOTQgLTEyNC41dC0xMjYuNSAtMTI3LjV0LTE1MCAtMTUyLjV0LTE0NiAtMTc0cS02MiA4NSAtMTQ1LjUgMTc0dC0xNDkuNSAxNTIuNXQtMTI2LjUgMTI3LjUgdC05NCAxMjQuNXQtMzMuNSAxMTcuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDA2OyIgZD0iTS03MiA4MDBoNDc5bDE0NiA0MDBoMmwxNDYgLTQwMGg0NzJsLTM4MiAtMjc4bDE0NSAtNDQ5bC0zODQgMjc1bC0zODIgLTI3NWwxNDYgNDQ3ek0xNjggNzFsMiAxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDc7IiBkPSJNLTcyIDgwMGg0NzlsMTQ2IDQwMGgybDE0NiAtNDAwaDQ3MmwtMzgyIC0yNzhsMTQ1IC00NDlsLTM4NCAyNzVsLTM4MiAtMjc1bDE0NiA0NDd6TTE2OCA3MWwyIDF6TTIzNyA3MDBsMTk2IC0xNDJsLTczIC0yMjZsMTkyIDE0MGwxOTUgLTE0MWwtNzQgMjI5bDE5MyAxNDBoLTIzNWwtNzcgMjExbC03OCAtMjExaC0yMzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwODsiIGQ9Ik0wIDB2MTQzbDQwMCAyNTd2MTAwcS0zNyAwIC02OC41IDc0LjV0LTMxLjUgMTI1LjV2MjAwcTAgMTI0IDg4IDIxMnQyMTIgODh0MjEyIC04OHQ4OCAtMjEydi0yMDBxMCAtNTEgLTMxLjUgLTEyNS41dC02OC41IC03NC41di0xMDBsNDAwIC0yNTd2LTE0M2gtMTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDA5OyIgZD0iTTAgMHYxMTAwaDEyMDB2LTExMDBoLTEyMDB6TTEwMCAxMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMCAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMCA1MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMCA3MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMCA5MDBoMTAwdjEwMGgtMTAwdi0xMDB6TTMwMCAxMDBoNjAwdjQwMGgtNjAwdi00MDB6TTMwMCA2MDBoNjAwdjQwMGgtNjAwdi00MDB6TTEwMDAgMTAwaDEwMHYxMDBoLTEwMHYtMTAweiBNMTAwMCAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTEwMDAgNTAwaDEwMHYxMDBoLTEwMHYtMTAwek0xMDAwIDcwMGgxMDB2MTAwaC0xMDB2LTEwMHpNMTAwMCA5MDBoMTAwdjEwMGgtMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMDsiIGQ9Ik0wIDUwdjQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNjUwdjQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek02MDAgNTB2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDY1MHY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwIHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDExOyIgZD0iTTAgNTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMCA0NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgODUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTQwMCA1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41IHQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNDAwIDQ1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek00MDAgODUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41IHYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek04MDAgNTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNODAwIDQ1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMCBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNODAwIDg1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTI7IiBkPSJNMCA1MHYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0wIDQ1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMjAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYyMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTIwMHEtMjEgMCAtMzUuNSAtMTQuNSB0LTE0LjUgLTM1LjV2LTIwMHpNMCA4NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNDAwIDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjUgdC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek00MDAgNDUwdjIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTcwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTQwMCA4NTB2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTcwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMzsiIGQ9Ik0yOSA0NTRsNDE5IC00MjBsODE4IDgyMGwtMjEyIDIxMmwtNjA3IC02MDdsLTIwNiAyMDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNDsiIGQ9Ik0xMDYgMzE4bDI4MiAyODJsLTI4MiAyODJsMjEyIDIxMmwyODIgLTI4MmwyODIgMjgybDIxMiAtMjEybC0yODIgLTI4MmwyODIgLTI4MmwtMjEyIC0yMTJsLTI4MiAyODJsLTI4MiAtMjgyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTU7IiBkPSJNMjMgNjkzcTAgMjAwIDE0MiAzNDJ0MzQyIDE0MnQzNDIgLTE0MnQxNDIgLTM0MnEwIC0xNDIgLTc4IC0yNjFsMzAwIC0zMDBxNyAtOCA3IC0xOHQtNyAtMThsLTEwOSAtMTA5cS04IC03IC0xOCAtN3QtMTggN2wtMzAwIDMwMHEtMTE5IC03OCAtMjYxIC03OHEtMjAwIDAgLTM0MiAxNDJ0LTE0MiAzNDJ6TTE3NiA2OTNxMCAtMTM2IDk3IC0yMzN0MjM0IC05N3QyMzMuNSA5Ni41dDk2LjUgMjMzLjV0LTk2LjUgMjMzLjV0LTIzMy41IDk2LjUgdC0yMzQgLTk3dC05NyAtMjMzek0zMDAgNjAwdjIwMGgxMDB2MTAwaDIwMHYtMTAwaDEwMHYtMjAwaC0xMDB2LTEwMGgtMjAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTY7IiBkPSJNMjMgNjk0cTAgMjAwIDE0MiAzNDJ0MzQyIDE0MnQzNDIgLTE0MnQxNDIgLTM0MnEwIC0xNDEgLTc4IC0yNjJsMzAwIC0yOTlxNyAtNyA3IC0xOHQtNyAtMThsLTEwOSAtMTA5cS04IC04IC0xOCAtOHQtMTggOGwtMzAwIDI5OXEtMTIwIC03NyAtMjYxIC03N3EtMjAwIDAgLTM0MiAxNDJ0LTE0MiAzNDJ6TTE3NiA2OTRxMCAtMTM2IDk3IC0yMzN0MjM0IC05N3QyMzMuNSA5N3Q5Ni41IDIzM3QtOTYuNSAyMzN0LTIzMy41IDk3dC0yMzQgLTk3IHQtOTcgLTIzM3pNMzAwIDYwMWg0MDB2MjAwaC00MDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDE3OyIgZD0iTTIzIDYwMHEwIDE4MyAxMDUgMzMxdDI3MiAyMTB2LTE2NnEtMTAzIC01NSAtMTY1IC0xNTV0LTYyIC0yMjBxMCAtMTc3IDEyNSAtMzAydDMwMiAtMTI1dDMwMiAxMjV0MTI1IDMwMnEwIDEyMCAtNjIgMjIwdC0xNjUgMTU1djE2NnExNjcgLTYyIDI3MiAtMjEwdDEwNSAtMzMxcTAgLTExOCAtNDUuNSAtMjI0LjV0LTEyMyAtMTg0dC0xODQgLTEyM3QtMjI0LjUgLTQ1LjV0LTIyNC41IDQ1LjV0LTE4NCAxMjN0LTEyMyAxODR0LTQ1LjUgMjI0LjUgek01MDAgNzUwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgxMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djQwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di00MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxODsiIGQ9Ik0xMDAgMWgyMDB2MzAwaC0yMDB2LTMwMHpNNDAwIDF2NTAwaDIwMHYtNTAwaC0yMDB6TTcwMCAxdjgwMGgyMDB2LTgwMGgtMjAwek0xMDAwIDF2MTIwMGgyMDB2LTEyMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDE5OyIgZD0iTTI2IDYwMXEwIC0zMyA2IC03NGwxNTEgLTM4bDIgLTZxMTQgLTQ5IDM4IC05M2wzIC01bC04MCAtMTM0cTQ1IC01OSAxMDUgLTEwNWwxMzMgODFsNSAtM3E0NSAtMjYgOTQgLTM5bDUgLTJsMzggLTE1MXE0MCAtNSA3NCAtNXEyNyAwIDc0IDVsMzggMTUxbDYgMnE0NiAxMyA5MyAzOWw1IDNsMTM0IC04MXE1NiA0NCAxMDQgMTA1bC04MCAxMzRsMyA1cTI0IDQ0IDM5IDkzbDEgNmwxNTIgMzhxNSA0MCA1IDc0cTAgMjggLTUgNzNsLTE1MiAzOCBsLTEgNnEtMTYgNTEgLTM5IDkzbC0zIDVsODAgMTM0cS00NCA1OCAtMTA0IDEwNWwtMTM0IC04MWwtNSAzcS00NSAyNSAtOTMgMzlsLTYgMWwtMzggMTUycS00MCA1IC03NCA1cS0yNyAwIC03NCAtNWwtMzggLTE1MmwtNSAtMXEtNTAgLTE0IC05NCAtMzlsLTUgLTNsLTEzMyA4MXEtNTkgLTQ3IC0xMDUgLTEwNWw4MCAtMTM0bC0zIC01cS0yNSAtNDcgLTM4IC05M2wtMiAtNmwtMTUxIC0zOHEtNiAtNDggLTYgLTczek0zODUgNjAxIHEwIDg4IDYzIDE1MXQxNTIgNjN0MTUyIC02M3Q2MyAtMTUxcTAgLTg5IC02MyAtMTUydC0xNTIgLTYzdC0xNTIgNjN0LTYzIDE1MnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDIwOyIgZD0iTTEwMCAxMDI1djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMjc1djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBoMjc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTEgLTcgLTE4dC0xOCAtN2gtMTA1MHEtMTEgMCAtMTggN3QtNyAxOHpNMjAwIDEwMHY4MDBoOTAwdi04MDBxMCAtNDEgLTI5LjUgLTcxdC03MC41IC0zMGgtNzAwcS00MSAwIC03MC41IDMwIHQtMjkuNSA3MXpNMzAwIDEwMGgxMDB2NzAwaC0xMDB2LTcwMHpNNTAwIDEwMGgxMDB2NzAwaC0xMDB2LTcwMHpNNTAwIDExMDBoMzAwdjEwMGgtMzAwdi0xMDB6TTcwMCAxMDBoMTAwdjcwMGgtMTAwdi03MDB6TTkwMCAxMDBoMTAwdjcwMGgtMTAwdi03MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyMTsiIGQ9Ik0xIDYwMWw2NTYgNjQ0bDY0NCAtNjQ0aC0yMDB2LTYwMGgtMzAwdjQwMGgtMzAwdi00MDBoLTMwMHY2MDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDIyOyIgZD0iTTEwMCAyNXYxMTUwcTAgMTEgNyAxOHQxOCA3aDQ3NXYtNTAwaDQwMHYtNjc1cTAgLTExIC03IC0xOHQtMTggLTdoLTg1MHEtMTEgMCAtMTggN3QtNyAxOHpNNzAwIDgwMHYzMDBsMzAwIC0zMDBoLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDIzOyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNTAwIDUwMHY0MDBoMTAwIHYtMzAwaDIwMHYtMTAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNDsiIGQ9Ik0tMTAwIDBsNDMxIDEyMDBoMjA5bC0yMSAtMzAwaDE2MmwtMjAgMzAwaDIwOGw0MzEgLTEyMDBoLTUzOGwtNDEgNDAwaC0yNDJsLTQwIC00MDBoLTUzOXpNNDg4IDUwMGgyMjRsLTI3IDMwMGgtMTcweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjU7IiBkPSJNMCAwdjQwMGg0OTBsLTI5MCAzMDBoMjAwdjUwMGgzMDB2LTUwMGgyMDBsLTI5MCAtMzAwaDQ5MHYtNDAwaC0xMTAwek04MTMgMjAwaDE3NXYxMDBoLTE3NXYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjY7IiBkPSJNMSA2MDBxMCAxMjIgNDcuNSAyMzN0MTI3LjUgMTkxdDE5MSAxMjcuNXQyMzMgNDcuNXQyMzMgLTQ3LjV0MTkxIC0xMjcuNXQxMjcuNSAtMTkxdDQ3LjUgLTIzM3QtNDcuNSAtMjMzdC0xMjcuNSAtMTkxdC0xOTEgLTEyNy41dC0yMzMgLTQ3LjV0LTIzMyA0Ny41dC0xOTEgMTI3LjV0LTEyNy41IDE5MXQtNDcuNSAyMzN6TTE4OCA2MDBxMCAtMTcwIDEyMSAtMjkxdDI5MSAtMTIxdDI5MSAxMjF0MTIxIDI5MXQtMTIxIDI5MXQtMjkxIDEyMSB0LTI5MSAtMTIxdC0xMjEgLTI5MXpNMzUwIDYwMGgxNTB2MzAwaDIwMHYtMzAwaDE1MGwtMjUwIC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNzsiIGQ9Ik00IDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4NiA2MDBxMCAtMTcxIDEyMS41IC0yOTIuNXQyOTIuNSAtMTIxLjV0MjkyLjUgMTIxLjV0MTIxLjUgMjkyLjV0LTEyMS41IDI5Mi41dC0yOTIuNSAxMjEuNXQtMjkyLjUgLTEyMS41dC0xMjEuNSAtMjkyLjV6TTM1MCA2MDBsMjUwIDMwMCBsMjUwIC0zMDBoLTE1MHYtMzAwaC0yMDB2MzAwaC0xNTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyODsiIGQ9Ik0wIDI1djQ3NWwyMDAgNzAwaDgwMHExOTkgLTcwMCAyMDAgLTcwMHYtNDc1cTAgLTExIC03IC0xOHQtMTggLTdoLTExNTBxLTExIDAgLTE4IDd0LTcgMTh6TTIwMCA1MDBoMjAwbDUwIC0yMDBoMzAwbDUwIDIwMGgyMDBsLTk3IDUwMGgtNjA2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjk7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MiAxMjEuNSAtMjkzdDI5Mi41IC0xMjF0MjkyLjUgMTIxdDEyMS41IDI5M3EwIDE3MSAtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNTAwIDM5N3Y0MDEgbDI5NyAtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzA7IiBkPSJNMjMgNjAwcTAgLTExOCA0NS41IC0yMjQuNXQxMjMgLTE4NHQxODQgLTEyM3QyMjQuNSAtNDUuNXQyMjQuNSA0NS41dDE4NCAxMjN0MTIzIDE4NHQ0NS41IDIyNC41aC0xNTBxMCAtMTc3IC0xMjUgLTMwMnQtMzAyIC0xMjV0LTMwMiAxMjV0LTEyNSAzMDJ0MTI1IDMwMnQzMDIgMTI1cTEzNiAwIDI0NiAtODFsLTE0NiAtMTQ2aDQwMHY0MDBsLTE0NSAtMTQ1cS0xNTcgMTIyIC0zNTUgMTIycS0xMTggMCAtMjI0LjUgLTQ1LjV0LTE4NCAtMTIzIHQtMTIzIC0xODR0LTQ1LjUgLTIyNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzE7IiBkPSJNMjMgNjAwcTAgMTE4IDQ1LjUgMjI0LjV0MTIzIDE4NHQxODQgMTIzdDIyNC41IDQ1LjVxMTk4IDAgMzU1IC0xMjJsMTQ1IDE0NXYtNDAwaC00MDBsMTQ3IDE0N3EtMTEyIDgwIC0yNDcgODBxLTE3NyAwIC0zMDIgLTEyNXQtMTI1IC0zMDJoLTE1MHpNMTAwIDB2NDAwaDQwMGwtMTQ3IC0xNDdxMTEyIC04MCAyNDcgLTgwcTE3NyAwIDMwMiAxMjV0MTI1IDMwMmgxNTBxMCAtMTE4IC00NS41IC0yMjQuNXQtMTIzIC0xODR0LTE4NCAtMTIzIHQtMjI0LjUgLTQ1LjVxLTE5OCAwIC0zNTUgMTIyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzI7IiBkPSJNMTAwIDBoMTEwMHYxMjAwaC0xMTAwdi0xMjAwek0yMDAgMTAwdjkwMGg5MDB2LTkwMGgtOTAwek0zMDAgMjAwdjEwMGgxMDB2LTEwMGgtMTAwek0zMDAgNDAwdjEwMGgxMDB2LTEwMGgtMTAwek0zMDAgNjAwdjEwMGgxMDB2LTEwMGgtMTAwek0zMDAgODAwdjEwMGgxMDB2LTEwMGgtMTAwek01MDAgMjAwaDUwMHYxMDBoLTUwMHYtMTAwek01MDAgNDAwdjEwMGg1MDB2LTEwMGgtNTAwek01MDAgNjAwdjEwMGg1MDB2LTEwMGgtNTAweiBNNTAwIDgwMHYxMDBoNTAwdi0xMDBoLTUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDMzOyIgZD0iTTAgMTAwdjYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTAwdjIwMHEwIDgyIDU5IDE0MXQxNDEgNTloMzAwcTgyIDAgMTQxIC01OXQ1OSAtMTQxdi0yMDBoMTAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTkwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV6TTQwMCA4MDBoMzAwdjE1MHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMjAwIHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzQ7IiBkPSJNMTAwIDB2MTEwMGgxMDB2LTExMDBoLTEwMHpNMzAwIDQwMHE2MCA2MCAxMjcuNSA4NHQxMjcuNSAxNy41dDEyMiAtMjN0MTE5IC0zMHQxMTAgLTExdDEwMyA0MnQ5MSAxMjAuNXY1MDBxLTQwIC04MSAtMTAxLjUgLTExNS41dC0xMjcuNSAtMjkuNXQtMTM4IDI1dC0xMzkuNSA0MHQtMTI1LjUgMjV0LTEwMyAtMjkuNXQtNjUgLTExNS41di01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNTsiIGQ9Ik0wIDI3NXEwIC0xMSA3IC0xOHQxOCAtN2g1MHExMSAwIDE4IDd0NyAxOHYzMDBxMCAxMjcgNzAuNSAyMzEuNXQxODQuNSAxNjEuNXQyNDUgNTd0MjQ1IC01N3QxODQuNSAtMTYxLjV0NzAuNSAtMjMxLjV2LTMwMHEwIC0xMSA3IC0xOHQxOCAtN2g1MHExMSAwIDE4IDd0NyAxOHYzMDBxMCAxMTYgLTQ5LjUgMjI3dC0xMzEgMTkyLjV0LTE5Mi41IDEzMXQtMjI3IDQ5LjV0LTIyNyAtNDkuNXQtMTkyLjUgLTEzMXQtMTMxIC0xOTIuNSB0LTQ5LjUgLTIyN3YtMzAwek0yMDAgMjB2NDYwcTAgOCA2IDE0dDE0IDZoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR6TTgwMCAyMHY0NjBxMCA4IDYgMTR0MTQgNmgxNjBxOCAwIDE0IC02dDYgLTE0di00NjBxMCAtOCAtNiAtMTR0LTE0IC02aC0xNjBxLTggMCAtMTQgNnQtNiAxNHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDM2OyIgZD0iTTAgNDAwaDMwMGwzMDAgLTIwMHY4MDBsLTMwMCAtMjAwaC0zMDB2LTQwMHpNNjg4IDQ1OWwxNDEgMTQxbC0xNDEgMTQxbDcxIDcxbDE0MSAtMTQxbDE0MSAxNDFsNzEgLTcxbC0xNDEgLTE0MWwxNDEgLTE0MWwtNzEgLTcxbC0xNDEgMTQxbC0xNDEgLTE0MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDM3OyIgZD0iTTAgNDAwaDMwMGwzMDAgLTIwMHY4MDBsLTMwMCAtMjAwaC0zMDB2LTQwMHpNNzAwIDg1N2w2OSA1M3ExMTEgLTEzNSAxMTEgLTMxMHEwIC0xNjkgLTEwNiAtMzAybC02NyA1NHE4NiAxMTAgODYgMjQ4cTAgMTQ2IC05MyAyNTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzODsiIGQ9Ik0wIDQwMXY0MDBoMzAwbDMwMCAyMDB2LTgwMGwtMzAwIDIwMGgtMzAwek03MDIgODU4bDY5IDUzcTExMSAtMTM1IDExMSAtMzEwcTAgLTE3MCAtMTA2IC0zMDNsLTY3IDU1cTg2IDExMCA4NiAyNDhxMCAxNDUgLTkzIDI1N3pNODg5IDk1MWw3IC04cTEyMyAtMTUxIDEyMyAtMzQ0cTAgLTE4OSAtMTE5IC0zMzlsLTcgLThsODEgLTY2bDYgOHExNDIgMTc4IDE0MiA0MDVxMCAyMzAgLTE0NCA0MDhsLTYgOHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDM5OyIgZD0iTTAgMGg1MDB2NTAwaC0yMDB2MTAwaC0xMDB2LTEwMGgtMjAwdi01MDB6TTAgNjAwaDEwMHYxMDBoNDAwdjEwMGgxMDB2MTAwaC0xMDB2MzAwaC01MDB2LTYwMHpNMTAwIDEwMHYzMDBoMzAwdi0zMDBoLTMwMHpNMTAwIDgwMHYzMDBoMzAwdi0zMDBoLTMwMHpNMjAwIDIwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMjAwIDkwMGgxMDB2MTAwaC0xMDB2LTEwMHpNNTAwIDUwMHYxMDBoMzAwdi0zMDBoMjAwdi0xMDBoLTEwMHYtMTAwaC0yMDB2MTAwIGgtMTAwdjEwMGgxMDB2MjAwaC0yMDB6TTYwMCAwdjEwMGgxMDB2LTEwMGgtMTAwek02MDAgMTAwMGgxMDB2LTMwMGgyMDB2LTMwMGgzMDB2MjAwaC0yMDB2MTAwaDIwMHY1MDBoLTYwMHYtMjAwek04MDAgODAwdjMwMGgzMDB2LTMwMGgtMzAwek05MDAgMHYxMDBoMzAwdi0xMDBoLTMwMHpNOTAwIDkwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMTEwMCAyMDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0MDsiIGQ9Ik0wIDIwMGgxMDB2MTAwMGgtMTAwdi0xMDAwek0xMDAgMHYxMDBoMzAwdi0xMDBoLTMwMHpNMjAwIDIwMHYxMDAwaDEwMHYtMTAwMGgtMTAwek01MDAgMHY5MWgxMDB2LTkxaC0xMDB6TTUwMCAyMDB2MTAwMGgyMDB2LTEwMDBoLTIwMHpNNzAwIDB2OTFoMTAwdi05MWgtMTAwek04MDAgMjAwdjEwMDBoMTAwdi0xMDAwaC0xMDB6TTkwMCAwdjkxaDIwMHYtOTFoLTIwMHpNMTAwMCAyMDB2MTAwMGgyMDB2LTEwMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQxOyIgZD0iTTEgNzAwdjQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NGw3MDAgLTcwMGwtNTAwIC01MDB6TTE0OCA5NTNxMCAtNDIgMjkgLTcxcTMwIC0zMCA3MS41IC0zMHQ3MS41IDMwcTI5IDI5IDI5IDcxdC0yOSA3MXEtMzAgMzAgLTcxLjUgMzB0LTcxLjUgLTMwcS0yOSAtMjkgLTI5IC03MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTIgNzAwdjQ3NXEwIDExIDcgMTh0MTggN2g0NzRsNzAwIC03MDBsLTUwMCAtNTAwek0xNDggOTUzcTAgLTQyIDMwIC03MXEyOSAtMzAgNzEgLTMwdDcxIDMwcTMwIDI5IDMwIDcxdC0zMCA3MXEtMjkgMzAgLTcxIDMwdC03MSAtMzBxLTMwIC0yOSAtMzAgLTcxek03MDEgMTIwMGgxMDBsNzAwIC03MDBsLTUwMCAtNTAwbC01MCA1MGw0NTAgNDUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDM7IiBkPSJNMTAwIDB2MTAyNWwxNzUgMTc1aDkyNXYtMTAwMGwtMTAwIC0xMDB2MTAwMGgtNzUwbC0xMDAgLTEwMGg3NTB2LTEwMDBoLTkwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQ0OyIgZD0iTTIwMCAwbDQ1MCA0NDRsNDUwIC00NDN2MTE1MHEwIDIwIC0xNC41IDM1dC0zNS41IDE1aC04MDBxLTIxIDAgLTM1LjUgLTE1dC0xNC41IC0zNXYtMTE1MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDQ1OyIgZD0iTTAgMTAwdjcwMGgyMDBsMTAwIC0yMDBoNjAwbDEwMCAyMDBoMjAwdi03MDBoLTIwMHYyMDBoLTgwMHYtMjAwaC0yMDB6TTI1MyA4MjlsNDAgLTEyNGg1OTJsNjIgMTI0bC05NCAzNDZxLTIgMTEgLTEwIDE4dC0xOCA3aC00NTBxLTEwIDAgLTE4IC03dC0xMCAtMTh6TTI4MSAyNGwzOCAxNTJxMiAxMCAxMS41IDE3dDE5LjUgN2g1MDBxMTAgMCAxOS41IC03dDExLjUgLTE3bDM4IC0xNTJxMiAtMTAgLTMuNSAtMTd0LTE1LjUgLTdoLTYwMCBxLTEwIDAgLTE1LjUgN3QtMy41IDE3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDY7IiBkPSJNMCAyMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDEwMDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djYwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtMTUwcS00IDggLTExLjUgMjEuNXQtMzMgNDh0LTUzIDYxdC02OSA0OHQtODMuNSAyMS41aC0yMDBxLTQxIDAgLTgyIC0yMC41dC03MCAtNTB0LTUyIC01OXQtMzQgLTUwLjVsLTEyIC0yMGgtMTUwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDB6IE0zNTYgNTAwcTAgMTAwIDcyIDE3MnQxNzIgNzJ0MTcyIC03MnQ3MiAtMTcydC03MiAtMTcydC0xNzIgLTcydC0xNzIgNzJ0LTcyIDE3MnpNNDk0IDUwMHEwIC00NCAzMSAtNzV0NzUgLTMxdDc1IDMxdDMxIDc1dC0zMSA3NXQtNzUgMzF0LTc1IC0zMXQtMzEgLTc1ek05MDAgNzAwdjEwMGgxMDB2LTEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDc7IiBkPSJNNTMgMGgzNjV2NjZxLTQxIDAgLTcyIDExdC00OSAzOHQxIDcxbDkyIDIzNGgzOTFsODIgLTIyMnExNiAtNDUgLTUuNSAtODguNXQtNzQuNSAtNDMuNXYtNjZoNDE3djY2cS0zNCAxIC03NCA0M3EtMTggMTkgLTMzIDQydC0yMSAzN2wtNiAxM2wtMzg1IDk5OGgtOTNsLTM5OSAtMTAwNnEtMjQgLTQ4IC01MiAtNzVxLTEyIC0xMiAtMzMgLTI1dC0zNiAtMjBsLTE1IC03di02NnpNNDE2IDUyMWwxNzggNDU3bDQ2IC0xNDBsMTE2IC0zMTdoLTM0MCB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0ODsiIGQ9Ik0xMDAgMHY4OXE0MSA3IDcwLjUgMzIuNXQyOS41IDY1LjV2ODI3cTAgMjggLTEgMzkuNXQtNS41IDI2dC0xNS41IDIxdC0yOSAxNHQtNDkgMTQuNXY3MGg0NzFxMTIwIDAgMjEzIC04OHQ5MyAtMjI4cTAgLTU1IC0xMS41IC0xMDEuNXQtMjggLTc0dC0zMy41IC00Ny41dC0yOCAtMjhsLTEyIC03cTggLTMgMjEuNSAtOXQ0OCAtMzEuNXQ2MC41IC01OHQ0Ny41IC05MS41dDIxLjUgLTEyOXEwIC04NCAtNTkgLTE1Ni41dC0xNDIgLTExMSB0LTE2MiAtMzguNWgtNTAwek00MDAgMjAwaDE2MXE4OSAwIDE1MyA0OC41dDY0IDEzMi41cTAgOTAgLTYyLjUgMTU0LjV0LTE1Ni41IDY0LjVoLTE1OXYtNDAwek00MDAgNzAwaDEzOXE3NiAwIDEzMCA2MS41dDU0IDEzOC41cTAgODIgLTg0IDEzMC41dC0yMzkgNDguNXYtMzc5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDk7IiBkPSJNMjAwIDB2NTdxNzcgNyAxMzQuNSA0MC41dDY1LjUgODAuNWwxNzMgODQ5cTEwIDU2IC0xMCA3NHQtOTEgMzdxLTYgMSAtMTAuNSAyLjV0LTkuNSAyLjV2NTdoNDI1bDIgLTU3cS0zMyAtOCAtNjIgLTI1LjV0LTQ2IC0zN3QtMjkuNSAtMzh0LTE3LjUgLTMwLjVsLTUgLTEybC0xMjggLTgyNXEtMTAgLTUyIDE0IC04MnQ5NSAtMzZ2LTU3aC01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MDsiIGQ9Ik0tNzUgMjAwaDc1djgwMGgtNzVsMTI1IDE2N2wxMjUgLTE2N2gtNzV2LTgwMGg3NWwtMTI1IC0xNjd6TTMwMCA5MDB2MzAwaDE1MGg3MDBoMTUwdi0zMDBoLTUwcTAgMjkgLTggNDguNXQtMTguNSAzMHQtMzMuNSAxNXQtMzkuNSA1LjV0LTUwLjUgMWgtMjAwdi04NTBsMTAwIC01MHYtMTAwaC00MDB2MTAwbDEwMCA1MHY4NTBoLTIwMHEtMzQgMCAtNTAuNSAtMXQtNDAgLTUuNXQtMzMuNSAtMTV0LTE4LjUgLTMwdC04LjUgLTQ4LjVoLTQ5eiAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDUxOyIgZD0iTTMzIDUxbDE2NyAxMjV2LTc1aDgwMHY3NWwxNjcgLTEyNWwtMTY3IC0xMjV2NzVoLTgwMHYtNzV6TTEwMCA5MDF2MzAwaDE1MGg3MDBoMTUwdi0zMDBoLTUwcTAgMjkgLTggNDguNXQtMTggMzB0LTMzLjUgMTV0LTQwIDUuNXQtNTAuNSAxaC0yMDB2LTY1MGwxMDAgLTUwdi0xMDBoLTQwMHYxMDBsMTAwIDUwdjY1MGgtMjAwcS0zNCAwIC01MC41IC0xdC0zOS41IC01LjV0LTMzLjUgLTE1dC0xOC41IC0zMHQtOCAtNDguNWgtNTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MjsiIGQ9Ik0wIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDExMDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTAgMzUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDgwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTgwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNSB2LTEwMHpNMCA2NTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoMTAwMHEyMSAwIDM1LjUgMTV0MTQuNSAzNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMCA5NTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoNjAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtNjAwcS0yMSAwIC0zNS41IC0xNC41IHQtMTQuNSAtMzUuNXYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTM7IiBkPSJNMCA1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMTAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek0wIDY1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMTAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNSB2LTEwMHpNMjAwIDM1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWg3MDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC03MDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMjAwIDk1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWg3MDBxMjEgMCAzNS41IDE1dDE0LjUgMzV2MTAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC03MDBxLTIxIDAgLTM1LjUgLTE0LjUgdC0xNC41IC0zNS41di0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NDsiIGQ9Ik0wIDUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTExMDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTEwMCA2NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwMHEtMjEgMCAtMzUuNSAxNSB0LTE0LjUgMzV6TTMwMCAzNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC04MDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTUwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg2MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC02MDAgcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTU7IiBkPSJNMCA1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0wIDM1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC0xMTAwcS0yMSAwIC0zNS41IDE1IHQtMTQuNSAzNXpNMCA2NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTEwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NjsiIGQ9Ik0wIDUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0wIDM1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTEwMHEtMjEgMCAtMzUuNSAxNSB0LTE0LjUgMzV6TTAgNjUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1ek0wIDk1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTEwMHEtMjEgMCAtMzUuNSAxNSB0LTE0LjUgMzV6TTMwMCA1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTgwMHEtMjEgMCAtMzUuNSAxNXQtMTQuNSAzNXpNMzAwIDM1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIwIC0xNC41IC0zNXQtMzUuNSAtMTVoLTgwMCBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTMwMCA2NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1aC04MDBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6TTMwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1IGgtODAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTc7IiBkPSJNLTEwMSA1MDB2MTAwaDIwMXY3NWwxNjYgLTEyNWwtMTY2IC0xMjV2NzVoLTIwMXpNMzAwIDBoMTAwdjExMDBoLTEwMHYtMTEwMHpNNTAwIDUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDYwMHEyMCAwIDM1IDE1dDE1IDM1djEwMHEwIDIxIC0xNSAzNS41dC0zNSAxNC41aC02MDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNNTAwIDM1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgzMDBxMjAgMCAzNSAxNXQxNSAzNSB2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek01MDAgNjUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDUwMHEyMCAwIDM1IDE1dDE1IDM1djEwMHEwIDIxIC0xNSAzNS41dC0zNSAxNC41aC01MDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNNTAwIDk1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMDBxMjAgMCAzNSAxNXQxNSAzNXYxMDAgcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTEwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTg7IiBkPSJNMSA1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWg2MDBxMjAgMCAzNSAxNXQxNSAzNXYxMDBxMCAyMSAtMTUgMzUuNXQtMzUgMTQuNWgtNjAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDB6TTEgMzUwcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDMwMHEyMCAwIDM1IDE1dDE1IDM1djEwMHEwIDIxIC0xNSAzNS41dC0zNSAxNC41aC0zMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMSA2NTAgcTAgLTIwIDE0LjUgLTM1dDM1LjUgLTE1aDUwMHEyMCAwIDM1IDE1dDE1IDM1djEwMHEwIDIxIC0xNSAzNS41dC0zNSAxNC41aC01MDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTEwMHpNMSA5NTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoMTAwcTIwIDAgMzUgMTV0MTUgMzV2MTAwcTAgMjEgLTE1IDM1LjV0LTM1IDE0LjVoLTEwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwek04MDEgMHYxMTAwaDEwMHYtMTEwMCBoLTEwMHpNOTM0IDU1MGwxNjcgLTEyNXY3NWgyMDB2MTAwaC0yMDB2NzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1OTsiIGQ9Ik0wIDI3NXY2NTBxMCAzMSAyMiA1M3Q1MyAyMmg3NTBxMzEgMCA1MyAtMjJ0MjIgLTUzdi02NTBxMCAtMzEgLTIyIC01M3QtNTMgLTIyaC03NTBxLTMxIDAgLTUzIDIydC0yMiA1M3pNOTAwIDYwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MDsiIGQ9Ik0wIDQ0djEwMTJxMCAxOCAxMyAzMXQzMSAxM2gxMTEycTE5IDAgMzEuNSAtMTN0MTIuNSAtMzF2LTEwMTJxMCAtMTggLTEyLjUgLTMxdC0zMS41IC0xM2gtMTExMnEtMTggMCAtMzEgMTN0LTEzIDMxek0xMDAgMjYzbDI0NyAxODJsMjk4IC0xMzFsLTc0IDE1NmwyOTMgMzE4bDIzNiAtMjg4djUwMGgtMTAwMHYtNzM3ek0yMDggNzUwcTAgNTYgMzkgOTV0OTUgMzl0OTUgLTM5dDM5IC05NXQtMzkgLTk1dC05NSAtMzl0LTk1IDM5dC0zOSA5NXogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MjsiIGQ9Ik0xNDggNzQ1cTAgMTI0IDYwLjUgMjMxLjV0MTY1IDE3MnQyMjYuNSA2NC41cTEyMyAwIDIyNyAtNjN0MTY0LjUgLTE2OS41dDYwLjUgLTIyOS41dC03MyAtMjcycS03MyAtMTE0IC0xNjYuNSAtMjM3dC0xNTAuNSAtMTg5bC01NyAtNjZxLTEwIDkgLTI3IDI2dC02Ni41IDcwLjV0LTk2IDEwOXQtMTA0IDEzNS41dC0xMDAuNSAxNTVxLTYzIDEzOSAtNjMgMjYyek0zNDIgNzcycTAgLTEwNyA3NS41IC0xODIuNXQxODEuNSAtNzUuNSBxMTA3IDAgMTgyLjUgNzUuNXQ3NS41IDE4Mi41dC03NS41IDE4MnQtMTgyLjUgNzV0LTE4MiAtNzUuNXQtNzUgLTE4MS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjM7IiBkPSJNMSA2MDBxMCAxMjIgNDcuNSAyMzN0MTI3LjUgMTkxdDE5MSAxMjcuNXQyMzMgNDcuNXQyMzMgLTQ3LjV0MTkxIC0xMjcuNXQxMjcuNSAtMTkxdDQ3LjUgLTIzM3QtNDcuNSAtMjMzdC0xMjcuNSAtMTkxdC0xOTEgLTEyNy41dC0yMzMgLTQ3LjV0LTIzMyA0Ny41dC0xOTEgMTI3LjV0LTEyNy41IDE5MXQtNDcuNSAyMzN6TTE3MyA2MDBxMCAtMTc3IDEyNS41IC0zMDJ0MzAxLjUgLTEyNXY4NTRxLTE3NiAwIC0zMDEuNSAtMTI1IHQtMTI1LjUgLTMwMnoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDY0OyIgZD0iTTExNyA0MDZxMCA5NCAzNCAxODZ0ODguNSAxNzIuNXQxMTIgMTU5dDExNSAxNzd0ODcuNSAxOTQuNXEyMSAtNzEgNTcuNSAtMTQyLjV0NzYgLTEzMC41dDgzIC0xMTguNXQ4MiAtMTE3dDcwIC0xMTZ0NTAgLTEyNS41dDE4LjUgLTEzNnEwIC04OSAtMzkgLTE2NS41dC0xMDIgLTEyNi41dC0xNDAgLTc5LjV0LTE1NiAtMzMuNXEtMTE0IDYgLTIxMS41IDUzdC0xNjEuNSAxMzguNXQtNjQgMjEwLjV6TTI0MyA0MTRxMTQgLTgyIDU5LjUgLTEzNiB0MTM2LjUgLTgwbDE2IDk4cS03IDYgLTE4IDE3dC0zNCA0OHQtMzMgNzdxLTE1IDczIC0xNCAxNDMuNXQxMCAxMjIuNWw5IDUxcS05MiAtMTEwIC0xMTkuNSAtMTg1dC0xMi41IC0xNTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NTsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjUgMTE3LjUgMjgyLjV0MjgyLjUgMTE3LjVxMzY2IC02IDM5NyAtMTRsLTE4NiAtMTg2aC0zMTFxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXYxMjVsMjAwIDIwMHYtMjI1cTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41IHQtMTE3LjUgMjgyLjV6TTQzNiAzNDFsMTYxIDUwbDQxMiA0MTJsLTExNCAxMTNsLTQwNSAtNDA1ek05OTUgMTAxNWwxMTMgLTExM2wxMTMgMTEzbC0yMSA4NWwtOTIgMjh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NjsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjUgMTE3LjUgMjgyLjV0MjgyLjUgMTE3LjVoMjYxbDIgLTgwcS0xMzMgLTMyIC0yMTggLTEyMGgtMTQ1cS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjVsMjAwIDE1M3YtNTNxMCAtMTY1IC0xMTcuNSAtMjgyLjV0LTI4Mi41IC0xMTcuNWgtMzAwcS0xNjUgMCAtMjgyLjUgMTE3LjV0LTExNy41IDI4Mi41IHpNNDIzIDUyNHEzMCAzOCA4MS41IDY0dDEwMyAzNS41dDk5IDE0dDc3LjUgMy41bDI5IC0xdi0yMDlsMzYwIDMyNGwtMzU5IDMxOHYtMjE2cS03IDAgLTE5IC0xdC00OCAtOHQtNjkuNSAtMTguNXQtNzYuNSAtMzd0LTc2LjUgLTU5dC02MiAtODh0LTM5LjUgLTEyMS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjc7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41aDMwMHE2MCAwIDEyNyAtMjNsLTE3OCAtMTc3aC0zNDlxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY2OWwyMDAgMjAwdi0xNjlxMCAtMTY1IC0xMTcuNSAtMjgyLjV0LTI4Mi41IC0xMTcuNWgtMzAwcS0xNjUgMCAtMjgyLjUgMTE3LjUgdC0xMTcuNSAyODIuNXpNMzQyIDYzMmwyODMgLTI4NGw1NjYgNTY3bC0xMzYgMTM3bC00MzAgLTQzMWwtMTQ3IDE0N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDY4OyIgZD0iTTAgNjAzbDMwMCAyOTZ2LTE5OGgyMDB2MjAwaC0yMDBsMzAwIDMwMGwyOTUgLTMwMGgtMTk1di0yMDBoMjAwdjE5OGwzMDAgLTI5NmwtMzAwIC0zMDB2MTk4aC0yMDB2LTIwMGgxOTVsLTI5NSAtMzAwbC0zMDAgMzAwaDIwMHYyMDBoLTIwMHYtMTk4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjk7IiBkPSJNMjAwIDUwdjEwMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM3bDUwMCA0ODd2LTExMDBsLTUwMCA0ODh2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDcwOyIgZD0iTTAgNTB2MTAwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MzdsNTAwIDQ4N3YtNDg3bDUwMCA0ODd2LTExMDBsLTUwMCA0ODh2LTQ4OGwtNTAwIDQ4OHYtNDM4cTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzE7IiBkPSJNMTM2IDU1MGw1NjQgNTUwdi00ODdsNTAwIDQ4N3YtMTEwMGwtNTAwIDQ4OHYtNDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzI7IiBkPSJNMjAwIDBsOTAwIDU1MGwtOTAwIDU1MHYtMTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDczOyIgZD0iTTIwMCAxNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41aDIwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2ODAwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0yMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTgwMHpNNjAwIDE1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMjAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXY4MDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTgwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDc0OyIgZD0iTTIwMCAxNTBxMCAtMjAgMTQuNSAtMzV0MzUuNSAtMTVoODAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djgwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtODAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di04MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NTsiIGQ9Ik0wIDB2MTEwMGw1MDAgLTQ4N3Y0ODdsNTY0IC01NTBsLTU2NCAtNTUwdjQ4OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDc2OyIgZD0iTTAgMHYxMTAwbDUwMCAtNDg3djQ4N2w1MDAgLTQ4N3Y0MzdxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MzhsLTUwMCAtNDg4djQ4OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDc3OyIgZD0iTTMwMCAwdjExMDBsNTAwIC00ODd2NDM3cTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzg7IiBkPSJNMTAwIDI1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTEwMCA1MDBoMTEwMGwtNTUwIDU2NHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDc5OyIgZD0iTTE4NSA1OTlsNTkyIC01OTJsMjQwIDI0MGwtMzUzIDM1M2wzNTMgMzUzbC0yNDAgMjQweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODA7IiBkPSJNMjcyIDE5NGwzNTMgMzUzbC0zNTMgMzUzbDI0MSAyNDBsNTcyIC01NzFsMjEgLTIybC0xIC0xdi0xbC01OTIgLTU5MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgxOyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMzAwdC0yMTcuNSAtMjE4dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTh0LTgwIDMwMHpNMzAwIDUwMGgyMDB2LTIwMGgyMDB2MjAwaDIwMHYyMDBoLTIwMHYyMDBoLTIwMHYtMjAwaC0yMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgyOyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMzAwdC0yMTcuNSAtMjE4dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTh0LTgwIDMwMHpNMzAwIDUwMGg2MDB2MjAwaC02MDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDgzOyIgZD0iTTMgNjAwcTAgMTYyIDgwIDI5OS41dDIxNy41IDIxNy41dDI5OS41IDgwdDI5OS41IC04MHQyMTcuNSAtMjE3LjV0ODAgLTI5OS41dC04MCAtMzAwdC0yMTcuNSAtMjE4dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTh0LTgwIDMwMHpNMjQ2IDQ1OWwyMTMgLTIxM2wxNDEgMTQybDE0MSAtMTQybDIxMyAyMTNsLTE0MiAxNDFsMTQyIDE0MWwtMjEzIDIxMmwtMTQxIC0xNDFsLTE0MSAxNDJsLTIxMiAtMjEzbDE0MSAtMTQxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODQ7IiBkPSJNMyA2MDBxMCAxNjIgODAgMjk5LjV0MjE3LjUgMjE3LjV0Mjk5LjUgODB0Mjk5LjUgLTgwdDIxNy41IC0yMTcuNXQ4MCAtMjk5LjV0LTgwIC0yOTkuNXQtMjE3LjUgLTIxNy41dC0yOTkuNSAtODB0LTI5OS41IDgwdC0yMTcuNSAyMTcuNXQtODAgMjk5LjV6TTI3MCA1NTFsMjc2IC0yNzdsNDExIDQxMWwtMTc1IDE3NGwtMjM2IC0yMzZsLTEwMiAxMDJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NTsiIGQ9Ik0zIDYwMHEwIDE2MiA4MCAyOTkuNXQyMTcuNSAyMTcuNXQyOTkuNSA4MHQyOTkuNSAtODB0MjE3LjUgLTIxNy41dDgwIC0yOTkuNXQtODAgLTMwMHQtMjE3LjUgLTIxOHQtMjk5LjUgLTgwdC0yOTkuNSA4MHQtMjE3LjUgMjE4dC04MCAzMDB6TTM2MyA3MDBoMTQ0cTQgMCAxMS41IC0xdDExIC0xdDYuNSAzdDMgOXQxIDExdDMuNSA4LjV0My41IDZ0NS41IDR0Ni41IDIuNXQ5IDEuNXQ5IDAuNWgxMS41aDEyLjVxMTkgMCAzMCAtMTB0MTEgLTI2IHEwIC0yMiAtNCAtMjh0LTI3IC0yMnEtNSAtMSAtMTIuNSAtM3QtMjcgLTEzLjV0LTM0IC0yN3QtMjYuNSAtNDZ0LTExIC02OC41aDIwMHE1IDMgMTQgOHQzMS41IDI1LjV0MzkuNSA0NS41dDMxIDY5dDE0IDk0cTAgNTEgLTE3LjUgODl0LTQyIDU4dC01OC41IDMydC01OC41IDE1dC01MS41IDNxLTEwNSAwIC0xNzIgLTU2dC02NyAtMTgzek01MDAgMzAwaDIwMHYxMDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODY7IiBkPSJNMyA2MDBxMCAxNjIgODAgMjk5LjV0MjE3LjUgMjE3LjV0Mjk5LjUgODB0Mjk5LjUgLTgwdDIxNy41IC0yMTcuNXQ4MCAtMjk5LjV0LTgwIC0zMDB0LTIxNy41IC0yMTh0LTI5OS41IC04MHQtMjk5LjUgODB0LTIxNy41IDIxOHQtODAgMzAwek00MDAgMzAwaDQwMHYxMDBoLTEwMHYzMDBoLTMwMHYtMTAwaDEwMHYtMjAwaC0xMDB2LTEwMHpNNTAwIDgwMGgyMDB2MTAwaC0yMDB2LTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDg3OyIgZD0iTTAgNTAwdjIwMGgxOTRxMTUgNjAgMzYgMTA0LjV0NTUuNSA4NnQ4OCA2OXQxMjYuNSA0MC41djIwMGgyMDB2LTIwMHE1NCAtMjAgMTEzIC02MHQxMTIuNSAtMTA1LjV0NzEuNSAtMTM0LjVoMjAzdi0yMDBoLTIwM3EtMjUgLTEwMiAtMTE2LjUgLTE4NnQtMTgwLjUgLTExN3YtMTk3aC0yMDB2MTk3cS0xNDAgMjcgLTIwOCAxMDIuNXQtOTggMjAwLjVoLTE5NHpNMjkwIDUwMHEyNCAtNzMgNzkuNSAtMTI3LjV0MTMwLjUgLTc4LjV2MjA2aDIwMCB2LTIwNnExNDkgNDggMjAxIDIwNmgtMjAxdjIwMGgyMDBxLTI1IDc0IC03NiAxMjcuNXQtMTI0IDc2LjV2LTIwNGgtMjAwdjIwM3EtNzUgLTI0IC0xMzAgLTc3LjV0LTc5IC0xMjUuNWgyMDl2LTIwMGgtMjEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODg7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MSAxMjEuNSAtMjkyLjV0MjkyLjUgLTEyMS41dDI5Mi41IDEyMS41dDEyMS41IDI5Mi41dC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek0zNTYgNDY1bDEzNSAxMzUgbC0xMzUgMTM1bDEwOSAxMDlsMTM1IC0xMzVsMTM1IDEzNWwxMDkgLTEwOWwtMTM1IC0xMzVsMTM1IC0xMzVsLTEwOSAtMTA5bC0xMzUgMTM1bC0xMzUgLTEzNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDg5OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzIyIDUzN2wxNDEgMTQxIGw4NyAtODdsMjA0IDIwNWwxNDIgLTE0MmwtMzQ2IC0zNDV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MDsiIGQ9Ik00IDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4NiA2MDBxMCAtMTE1IDYyIC0yMTVsNTY4IDU2N3EtMTAwIDYyIC0yMTYgNjJxLTE3MSAwIC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMzkxIDI0NXE5NyAtNTkgMjA5IC01OXExNzEgMCAyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNSBxMCAxMTIgLTU5IDIwOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTAgNTQ3bDYwMCA0NTN2LTMwMGg2MDB2LTMwMGgtNjAwdi0zMDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MjsiIGQ9Ik0wIDQwMHYzMDBoNjAwdjMwMGw2MDAgLTQ1M2wtNjAwIC00NDh2MzAxaC02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik0yMDQgNjAwbDQ1MCA2MDBsNDQ0IC02MDBoLTI5OHYtNjAwaC0zMDB2NjAwaC0yOTZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NDsiIGQ9Ik0xMDQgNjAwaDI5NnY2MDBoMzAwdi02MDBoMjk4bC00NDkgLTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDk1OyIgZD0iTTAgMjAwcTYgMTMyIDQxIDIzOC41dDEwMy41IDE5M3QxODQgMTM4dDI3MS41IDU5LjV2MjcxbDYwMCAtNDUzbC02MDAgLTQ0OHYzMDFxLTk1IC0yIC0xODMgLTIwdC0xNzAgLTUydC0xNDcgLTkyLjV0LTEwMCAtMTM1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NjsiIGQ9Ik0wIDB2NDAwbDEyOSAtMTI5bDI5NCAyOTRsMTQyIC0xNDJsLTI5NCAtMjk0bDEyOSAtMTI5aC00MDB6TTYzNSA3NzdsMTQyIC0xNDJsMjk0IDI5NGwxMjkgLTEyOXY0MDBoLTQwMGwxMjkgLTEyOXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTM0IDE3NmwyOTUgMjk1bC0xMjkgMTI5aDQwMHYtNDAwbC0xMjkgMTMwbC0yOTUgLTI5NXpNNjAwIDYwMHY0MDBsMTI5IC0xMjlsMjk1IDI5NWwxNDIgLTE0MWwtMjk1IC0yOTVsMTI5IC0xMzBoLTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTIzIDYwMHEwIDExOCA0NS41IDIyNC41dDEyMyAxODR0MTg0IDEyM3QyMjQuNSA0NS41dDIyNC41IC00NS41dDE4NCAtMTIzdDEyMyAtMTg0dDQ1LjUgLTIyNC41dC00NS41IC0yMjQuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjQuNSAtNDUuNXQtMjI0LjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjQuNXpNNDU2IDg1MWw1OCAtMzAycTQgLTIwIDIxLjUgLTM0LjV0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNSB0MjEuNSAzNC41bDU4IDMwMnE0IDIwIC04IDM0LjV0LTMzIDE0LjVoLTIwN3EtMjAgMCAtMzIgLTE0LjV0LTggLTM0LjV6TTUwMCAzMDBoMjAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwMjsiIGQ9Ik0wIDgwMGgxMDB2LTIwMGg0MDB2MzAwaDIwMHYtMzAwaDQwMHYyMDBoMTAwdjEwMGgtMTExdjZ0LTEgMTV0LTMgMThsLTM0IDE3MnEtMTEgMzkgLTQxLjUgNjN0LTY5LjUgMjRxLTMyIDAgLTYxIC0xN2wtMjM5IC0xNDRxLTIyIC0xMyAtNDAgLTM1cS0xOSAyNCAtNDAgMzZsLTIzOCAxNDRxLTMzIDE4IC02MiAxOHEtMzkgMCAtNjkuNSAtMjN0LTQwLjUgLTYxbC0zNSAtMTc3cS0yIC04IC0zIC0xOHQtMSAtMTV2LTZoLTExMXYtMTAweiBNMTAwIDBoNDAwdjQwMGgtNDAwdi00MDB6TTIwMCA5MDBxLTMgMCAxNCA0OHQzNSA5NmwxOCA0N2wyMTQgLTE5MWgtMjgxek03MDAgMHY0MDBoNDAwdi00MDBoLTQwMHpNNzMxIDkwMGwyMDIgMTk3cTUgLTEyIDEyIC0zMi41dDIzIC02NHQyNSAtNzJ0NyAtMjguNWgtMjY5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMDM7IiBkPSJNMCAtMjJ2MTQzbDIxNiAxOTNxLTkgNTMgLTEzIDgzdC01LjUgOTR0OSAxMTN0MzguNSAxMTR0NzQgMTI0cTQ3IDYwIDk5LjUgMTAyLjV0MTAzIDY4dDEyNy41IDQ4dDE0NS41IDM3LjV0MTg0LjUgNDMuNXQyMjAgNTguNXEwIC0xODkgLTIyIC0zNDN0LTU5IC0yNTh0LTg5IC0xODEuNXQtMTA4LjUgLTEyMHQtMTIyIC02OHQtMTI1LjUgLTMwdC0xMjEuNSAtMS41dC0xMDcuNSAxMi41dC04Ny41IDE3dC01Ni41IDcuNWwtOTkgLTU1eiBNMjM4LjUgMzAwLjVxMTkuNSAtNi41IDg2LjUgNzYuNXE1NSA2NiAzNjcgMjM0cTcwIDM4IDExOC41IDY5LjV0MTAyIDc5dDk5IDExMS41dDg2LjUgMTQ4cTIyIDUwIDI0IDYwdC02IDE5cS03IDUgLTE3IDV0LTI2LjUgLTE0LjV0LTMzLjUgLTM5LjVxLTM1IC01MSAtMTEzLjUgLTEwOC41dC0xMzkuNSAtODkuNWwtNjEgLTMycS0zNjkgLTE5NyAtNDU4IC00MDFxLTQ4IC0xMTEgLTI4LjUgLTExNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMDQ7IiBkPSJNMTExIDQwOHEwIC0zMyA1IC02M3E5IC01NiA0NCAtMTE5LjV0MTA1IC0xMDguNXEzMSAtMjEgNjQgLTE2dDYyIDIzLjV0NTcgNDkuNXQ0OCA2MS41dDM1IDYwLjVxMzIgNjYgMzkgMTg0LjV0LTEzIDE1Ny41cTc5IC04MCAxMjIgLTE2NHQyNiAtMTg0cS01IC0zMyAtMjAuNSAtNjkuNXQtMzcuNSAtODAuNXEtMTAgLTE5IC0xNC41IC0yOXQtMTIgLTI2dC05IC0yMy41dC0zIC0xOXQyLjUgLTE1LjV0MTEgLTkuNXQxOS41IC01dDMwLjUgMi41IHQ0MiA4cTU3IDIwIDkxIDM0dDg3LjUgNDQuNXQ4NyA2NHQ2NS41IDg4LjV0NDcgMTIycTM4IDE3MiAtNDQuNSAzNDEuNXQtMjQ2LjUgMjc4LjVxMjIgLTQ0IDQzIC0xMjlxMzkgLTE1OSAtMzIgLTE1NHEtMTUgMiAtMzMgOXEtNzkgMzMgLTEyMC41IDEwMHQtNDQgMTc1LjV0NDguNSAyNTcuNXEtMTMgLTggLTM0IC0yMy41dC03Mi41IC02Ni41dC04OC41IC0xMDUuNXQtNjAgLTEzOHQtOCAtMTY2LjVxMiAtMTIgOCAtNDEuNXQ4IC00M3Q2IC0zOS41IHQzLjUgLTM5LjV0LTEgLTMzLjV0LTYgLTMxLjV0LTEzLjUgLTI0dC0yMSAtMjAuNXQtMzEgLTEycS0zOCAtMTAgLTY3IDEzdC00MC41IDYxLjV0LTE1IDgxLjV0MTAuNSA3NXEtNTIgLTQ2IC04My41IC0xMDF0LTM5IC0xMDd0LTcuNSAtODV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNTsiIGQ9Ik0tNjEgNjAwbDI2IDQwcTYgMTAgMjAgMzB0NDkgNjMuNXQ3NC41IDg1LjV0OTcgOTB0MTE2LjUgODMuNXQxMzIuNSA1OXQxNDUuNSAyMy41dDE0NS41IC0yMy41dDEzMi41IC01OXQxMTYuNSAtODMuNXQ5NyAtOTB0NzQuNSAtODUuNXQ0OSAtNjMuNXQyMCAtMzBsMjYgLTQwbC0yNiAtNDBxLTYgLTEwIC0yMCAtMzB0LTQ5IC02My41dC03NC41IC04NS41dC05NyAtOTB0LTExNi41IC04My41dC0xMzIuNSAtNTl0LTE0NS41IC0yMy41IHQtMTQ1LjUgMjMuNXQtMTMyLjUgNTl0LTExNi41IDgzLjV0LTk3IDkwdC03NC41IDg1LjV0LTQ5IDYzLjV0LTIwIDMwek0xMjAgNjAwcTcgLTEwIDQwLjUgLTU4dDU2IC03OC41dDY4IC03Ny41dDg3LjUgLTc1dDEwMyAtNDkuNXQxMjUgLTIxLjV0MTIzLjUgMjB0MTAwLjUgNDUuNXQ4NS41IDcxLjV0NjYuNSA3NS41dDU4IDgxLjV0NDcgNjZxLTEgMSAtMjguNSAzNy41dC00MiA1NXQtNDMuNSA1M3QtNTcuNSA2My41dC01OC41IDU0IHE0OSAtNzQgNDkgLTE2M3EwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODh0LTIxMiA4OHQtODggMjEycTAgODUgNDYgMTU4cS0xMDIgLTg3IC0yMjYgLTI1OHpNMzc3IDY1NnE0OSAtMTI0IDE1NCAtMTkxbDEwNSAxMDVxLTM3IDI0IC03NSA3MnQtNTcgODRsLTIwIDM2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMDY7IiBkPSJNLTYxIDYwMGwyNiA0MHE2IDEwIDIwIDMwdDQ5IDYzLjV0NzQuNSA4NS41dDk3IDkwdDExNi41IDgzLjV0MTMyLjUgNTl0MTQ1LjUgMjMuNXE2MSAwIDEyMSAtMTdsMzcgMTQyaDE0OGwtMzE0IC0xMjAwaC0xNDhsMzcgMTQzcS04MiAyMSAtMTY1IDcxLjV0LTE0MCAxMDJ0LTEwOS41IDExMnQtNzIgODguNXQtMjkuNSA0M3pNMTIwIDYwMHEyMTAgLTI4MiAzOTMgLTMzNmwzNyAxNDFxLTEwNyAxOCAtMTc4LjUgMTAxLjV0LTcxLjUgMTkzLjUgcTAgODUgNDYgMTU4cS0xMDIgLTg3IC0yMjYgLTI1OHpNMzc3IDY1NnE0OSAtMTI0IDE1NCAtMTkxbDQ3IDQ3bDIzIDg3cS0zMCAyOCAtNTkgNjl0LTQ0IDY4bC0xNCAyNnpNNzgwIDE2MWwzOCAxNDVxMjIgMTUgNDQuNSAzNHQ0NiA0NHQ0MC41IDQ0dDQxIDUwLjV0MzMuNSA0My41dDMzIDQ0dDI0LjUgMzRxLTk3IDEyNyAtMTQwIDE3NWwzOSAxNDZxNjcgLTU0IDEzMS41IC0xMjUuNXQ4Ny41IC0xMDMuNXQzNiAtNTJsMjYgLTQwbC0yNiAtNDAgcS03IC0xMiAtMjUuNSAtMzh0LTYzLjUgLTc5LjV0LTk1LjUgLTEwMi41dC0xMjQgLTEwMHQtMTQ2LjUgLTc5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMDc7IiBkPSJNLTk3LjUgMzRxMTMuNSAtMzQgNTAuNSAtMzRoMTI5NHEzNyAwIDUwLjUgMzUuNXQtNy41IDY3LjVsLTY0MiAxMDU2cS0yMCAzMyAtNDggMzZ0LTQ4IC0yOWwtNjQyIC0xMDY2cS0yMSAtMzIgLTcuNSAtNjZ6TTE1NSAyMDBsNDQ1IDcyM2w0NDUgLTcyM2gtMzQ1djEwMGgtMjAwdi0xMDBoLTM0NXpNNTAwIDYwMGwxMDAgLTMwMGwxMDAgMzAwdjEwMGgtMjAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik0xMDAgMjYydjQxcTAgMjAgMTEgNDQuNXQyNiAzOC41bDM2MyAzMjV2MzM5cTAgNjIgNDQgMTA2dDEwNiA0NHQxMDYgLTQ0dDQ0IC0xMDZ2LTMzOWwzNjMgLTMyNXExNSAtMTQgMjYgLTM4LjV0MTEgLTQ0LjV2LTQxcTAgLTIwIC0xMiAtMjYuNXQtMjkgNS41bC0zNTkgMjQ5di0yNjNxMTAwIC05MSAxMDAgLTExM3YtNjRxMCAtMjEgLTEzIC0yOXQtMzIgMWwtOTQgNzhoLTIyMmwtOTQgLTc4cS0xOSAtOSAtMzIgLTF0LTEzIDI5djY0IHEwIDIyIDEwMCAxMTN2MjYzbC0zNTkgLTI0OXEtMTcgLTEyIC0yOSAtNS41dC0xMiAyNi41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMDk7IiBkPSJNMCA1MHEwIC0yMCAxNC41IC0zNXQzNS41IC0xNWgxMDAwcTIxIDAgMzUuNSAxNXQxNC41IDM1djc1MGgtMTEwMHYtNzUwek0wIDkwMGgxMTAwdjE1MHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtMTUwdjEwMGgtMTAwdi0xMDBoLTUwMHYxMDBoLTEwMHYtMTAwaC0xNTBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MHpNMTAwIDEwMHYxMDBoMTAwdi0xMDBoLTEwMHpNMTAwIDMwMHYxMDBoMTAwdi0xMDBoLTEwMHogTTEwMCA1MDB2MTAwaDEwMHYtMTAwaC0xMDB6TTMwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTMwMCAzMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTMwMCA1MDB2MTAwaDEwMHYtMTAwaC0xMDB6TTUwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTUwMCAzMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTUwMCA1MDB2MTAwaDEwMHYtMTAwaC0xMDB6TTcwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTcwMCAzMDB2MTAwaDEwMHYtMTAwaC0xMDB6TTcwMCA1MDAgdjEwMGgxMDB2LTEwMGgtMTAwek05MDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwek05MDAgMzAwdjEwMGgxMDB2LTEwMGgtMTAwek05MDAgNTAwdjEwMGgxMDB2LTEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTA7IiBkPSJNMCAyMDB2MjAwaDI1OWw2MDAgNjAwaDI0MXYxOThsMzAwIC0yOTVsLTMwMCAtMzAwdjE5N2gtMTU5bC02MDAgLTYwMGgtMzQxek0wIDgwMGgyNTlsMTIyIC0xMjJsMTQxIDE0MmwtMTgxIDE4MGgtMzQxdi0yMDB6TTY3OCAzODFsMTQxIDE0MmwxMjIgLTEyM2gxNTl2MTk4bDMwMCAtMjk1bC0zMDAgLTMwMHYxOTdoLTI0MXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTExOyIgZD0iTTAgNDAwdjYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01OTZsLTMwNCAtMzAwdjMwMGgtMTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTEyOyIgZD0iTTEwMCA2MDB2MjAwaDMwMHYtMjUwcTAgLTExMyA2IC0xNDVxMTcgLTkyIDEwMiAtMTE3cTM5IC0xMSA5MiAtMTFxMzcgMCA2Ni41IDUuNXQ1MCAxNS41dDM2IDI0dDI0IDMxLjV0MTQgMzcuNXQ3IDQydDIuNSA0NXQwIDQ3djI1djI1MGgzMDB2LTIwMHEwIC00MiAtMyAtODN0LTE1IC0xMDR0LTMxLjUgLTExNnQtNTggLTEwOS41dC04OSAtOTYuNXQtMTI5IC02NS41dC0xNzQuNSAtMjUuNXQtMTc0LjUgMjUuNXQtMTI5IDY1LjV0LTg5IDk2LjUgdC01OCAxMDkuNXQtMzEuNSAxMTZ0LTE1IDEwNHQtMyA4M3pNMTAwIDkwMHYzMDBoMzAwdi0zMDBoLTMwMHpNODAwIDkwMHYzMDBoMzAwdi0zMDBoLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTEzOyIgZD0iTS0zMCA0MTFsMjI3IC0yMjdsMzUyIDM1M2wzNTMgLTM1M2wyMjYgMjI3bC01NzggNTc5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTQ7IiBkPSJNNzAgNzk3bDU4MCAtNTc5bDU3OCA1NzlsLTIyNiAyMjdsLTM1MyAtMzUzbC0zNTIgMzUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTU7IiBkPSJNLTE5OCA3MDBsMjk5IDI4M2wzMDAgLTI4M2gtMjAzdi00MDBoMzg1bDIxNSAtMjAwaC04MDB2NjAwaC0xOTZ6TTQwMiAxMDAwbDIxNSAtMjAwaDM4MXYtNDAwaC0xOThsMjk5IC0yODNsMjk5IDI4M2gtMjAwdjYwMGgtNzk2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTY7IiBkPSJNMTggOTM5cS01IDI0IDEwIDQycTE0IDE5IDM5IDE5aDg5NmwzOCAxNjJxNSAxNyAxOC41IDI3LjV0MzAuNSAxMC41aDk0cTIwIDAgMzUgLTE0LjV0MTUgLTM1LjV0LTE1IC0zNS41dC0zNSAtMTQuNWgtNTRsLTIwMSAtOTYxcS0yIC00IC02IC0xMC41dC0xOSAtMTcuNXQtMzMgLTExaC0zMXYtNTBxMCAtMjAgLTE0LjUgLTM1dC0zNS41IC0xNXQtMzUuNSAxNXQtMTQuNSAzNXY1MGgtMzAwdi01MHEwIC0yMCAtMTQuNSAtMzV0LTM1LjUgLTE1IHQtMzUuNSAxNXQtMTQuNSAzNXY1MGgtNTBxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzVxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDUzNWw0OCAyMDBoLTYzM3EtMzIgMCAtNTQuNSAyMXQtMjcuNSA0M3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTE3OyIgZD0iTTAgMHY4MDBoMTIwMHYtODAwaC0xMjAwek0wIDkwMHYxMDBoMjAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgzMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjVoNTAwdi0xMDBoLTEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTExODsiIGQ9Ik0xIDBsMzAwIDcwMGgxMjAwbC0zMDAgLTcwMGgtMTIwMHpNMSA0MDB2NjAwaDIwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41aDUwMHYtMjAwaC0xMDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTk7IiBkPSJNMzAyIDMwMGgxOTh2NjAwaC0xOThsMjk4IDMwMGwyOTggLTMwMGgtMTk4di02MDBoMTk4bC0yOTggLTMwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTIwOyIgZD0iTTAgNjAwbDMwMCAyOTh2LTE5OGg2MDB2MTk4bDMwMCAtMjk4bC0zMDAgLTI5N3YxOTdoLTYwMHYtMTk3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjE7IiBkPSJNMCAxMDB2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0zMSA0MDBsMTcyIDczOXE1IDIyIDIzIDQxLjV0MzggMTkuNWg2NzJxMTkgMCAzNy41IC0yMi41dDIzLjUgLTQ1LjVsMTcyIC03MzJoLTExMzh6TTgwMCAxMDBoMTAwdjEwMGgtMTAwdi0xMDB6IE0xMDAwIDEwMGgxMDB2MTAwaC0xMDB2LTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTIyOyIgZD0iTS0xMDEgNjAwdjUwcTAgMjQgMjUgNDl0NTAgMzhsMjUgMTN2LTI1MGwtMTEgNS41dC0yNCAxNHQtMzAgMjEuNXQtMjQgMjcuNXQtMTEgMzEuNXpNOTkgNTAwdjI1MHY1cTAgMTMgMC41IDE4LjV0Mi41IDEzdDggMTAuNXQxNSAzaDIwMGw2NzUgMjUwdi04NTBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMiAtMTIgLTMgLTE3LjV0LTExIC02dC0yMSAtMC41aC04aC04M3EtMjAgMCAtMzQuNSAxNHQtMTguNSAzNXEtNTYgMzM3IC01NiAzNTF6IE0xMTAwIDIwMHY4NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41cTIwIDAgMzUgLTE0LjV0MTUgLTM1LjV2LTg1MHEwIC0yMCAtMTUgLTM1dC0zNSAtMTVxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMzsiIGQ9Ik03NCAzNTBxMCAyMSAxMy41IDM1LjV0MzMuNSAxNC41aDE3bDExOCAxNzNsNjMgMzI3cTE1IDc3IDc2IDE0MHQxNDQgODNsLTE4IDMycS02IDE5IDMgMzJ0MjkgMTNoOTRxMjAgMCAyOSAtMTAuNXQzIC0yOS41bC0xOCAtMzdxODMgLTE5IDE0NCAtODIuNXQ3NiAtMTQwLjVsNjMgLTMyN2wxMTggLTE3M2gxN3EyMCAwIDMzLjUgLTE0LjV0MTMuNSAtMzUuNXEwIC0yMCAtMTMgLTQwdC0zMSAtMjdxLTIyIC05IC02MyAtMjN0LTE2Ny41IC0zNyB0LTI1MS41IC0yM3QtMjQ1LjUgMjAuNXQtMTc4LjUgNDEuNWwtNTggMjBxLTE4IDcgLTMxIDI3LjV0LTEzIDQwLjV6TTQ5NyAxMTBxMTIgLTQ5IDQwIC03OS41dDYzIC0zMC41dDYzIDMwLjV0MzkgNzkuNXEtNDggLTYgLTEwMiAtNnQtMTAzIDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNDsiIGQ9Ik0yMSA0NDVsMjMzIC00NWwtNzggLTIyNGwyMjQgNzhsNDUgLTIzM2wxNTUgMTc5bDE1NSAtMTc5bDQ1IDIzM2wyMjQgLTc4bC03OCAyMjRsMjM0IDQ1bC0xODAgMTU1bDE4MCAxNTZsLTIzNCA0NGw3OCAyMjVsLTIyNCAtNzhsLTQ1IDIzM2wtMTU1IC0xODBsLTE1NSAxODBsLTQ1IC0yMzNsLTIyNCA3OGw3OCAtMjI1bC0yMzMgLTQ0bDE3OSAtMTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjU7IiBkPSJNMCAyMDBoMjAwdjYwMGgtMjAwdi02MDB6TTMwMCAyNzVxMCAtNzUgMTAwIC03NWg2MXExMjMgLTEwMCAxMzkgLTEwMGgyNTBxNDYgMCA4MyA1N2wyMzggMzQ0cTI5IDMxIDI5IDc0djEwMHEwIDQ0IC0zMC41IDg0LjV0LTY5LjUgNDAuNWgtMzI4cTI4IDExOCAyOCAxMjV2MTUwcTAgNDQgLTMwLjUgODQuNXQtNjkuNSA0MC41aC01MHEtMjcgMCAtNTEgLTIwdC0zOCAtNDhsLTk2IC0xOThsLTE0NSAtMTk2cS0yMCAtMjYgLTIwIC02M3YtNDAweiBNNDAwIDMwMHYzNzVsMTUwIDIxMmwxMDAgMjEzaDUwdi0xNzVsLTUwIC0yMjVoNDUwdi0xMjVsLTI1MCAtMzc1aC0yMTRsLTEzNiAxMDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTAgNDAwdjYwMGgyMDB2LTYwMGgtMjAwek0zMDAgNTI1djQwMHEwIDc1IDEwMCA3NWg2MXExMjMgMTAwIDEzOSAxMDBoMjUwcTQ2IDAgODMgLTU3bDIzOCAtMzQ0cTI5IC0zMSAyOSAtNzR2LTEwMHEwIC00NCAtMzAuNSAtODQuNXQtNjkuNSAtNDAuNWgtMzI4cTI4IC0xMTggMjggLTEyNXYtMTUwcTAgLTQ0IC0zMC41IC04NC41dC02OS41IC00MC41aC01MHEtMjcgMCAtNTEgMjB0LTM4IDQ4bC05NiAxOThsLTE0NSAxOTYgcS0yMCAyNiAtMjAgNjN6TTQwMCA1MjVsMTUwIC0yMTJsMTAwIC0yMTNoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0bC0xMzYgLTEwMGgtMTAwdi0zNzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNzsiIGQ9Ik04IDIwMHY2MDBoMjAwdi02MDBoLTIwMHpNMzA4IDI3NXY1MjVxMCAxNyAxNCAzNS41dDI4IDI4LjVsMTQgOWwzNjIgMjMwcTE0IDYgMjUgNnExNyAwIDI5IC0xMmwxMDkgLTExMnExNCAtMTQgMTQgLTM0cTAgLTE4IC0xMSAtMzJsLTg1IC0xMjFoMzAycTg1IDAgMTM4LjUgLTM4dDUzLjUgLTExMHQtNTQuNSAtMTExdC0xMzguNSAtMzloLTEwN2wtMTMwIC0zMzlxLTcgLTIyIC0yMC41IC00MS41dC0yOC41IC0xOS41aC0zNDEgcS03IDAgLTkwIDgxdC04MyA5NHpNNDA4IDI4OWwxMDAgLTg5aDI5M2wxMzEgMzM5cTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3ExNiAwIDI1IDE1dDkgMzZxMCAyMCAtOSAzNC41dC0yNSAxNC41aC00NTdoLTYuNWgtNy41dC02LjUgMC41dC02IDF0LTUgMS41dC01LjUgMi41dC00IDR0LTQgNS41cS01IDEyIC01IDIwcTAgMTQgMTAgMjdsMTQ3IDE4M2wtODYgODNsLTMzOSAtMjM2di01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik0tMTAxIDY1MXEwIDcyIDU0IDExMHQxMzkgMzdoMzAybC04NSAxMjFxLTExIDE2IC0xMSAzMnEwIDIxIDE0IDM0bDEwOSAxMTNxMTMgMTIgMjkgMTJxMTEgMCAyNSAtNmwzNjUgLTIzMHE3IC00IDE2LjUgLTEwLjV0MjYgLTI2dDE2LjUgLTM2LjV2LTUyNnEwIC0xMyAtODUuNSAtOTMuNXQtOTMuNSAtODAuNWgtMzQycS0xNSAwIC0yOC41IDIwdC0xOS41IDQxbC0xMzEgMzM5aC0xMDZxLTg0IDAgLTEzOSAzOXQtNTUgMTExek0tMSA2MDFoMjIyIHExNSAwIDI4LjUgLTIwLjV0MTkuNSAtNDAuNWwxMzEgLTMzOWgyOTNsMTA2IDg5djUwMmwtMzQyIDIzN2wtODcgLTgzbDE0NSAtMTg0cTEwIC0xMSAxMCAtMjZxMCAtMTEgLTUgLTIwcS0xIC0zIC0zLjUgLTUuNWwtNCAtNHQtNSAtMi41dC01LjUgLTEuNXQtNi41IC0xdC02LjUgLTAuNWgtNy41aC02LjVoLTQ3NnYtMTAwek05OTkgMjAxdjYwMGgyMDB2LTYwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjk7IiBkPSJNOTcgNzE5bDIzMCAtMzYzcTQgLTYgMTAuNSAtMTUuNXQyNiAtMjV0MzYuNSAtMTUuNWg1MjVxMTMgMCA5NCA4M3Q4MSA5MHYzNDJxMCAxNSAtMjAgMjguNXQtNDEgMTkuNWwtMzM5IDEzMXYxMDZxMCA4NCAtMzkgMTM5dC0xMTEgNTV0LTExMCAtNTMuNXQtMzggLTEzOC41di0zMDJsLTEyMSA4NHEtMTUgMTIgLTMzLjUgMTEuNXQtMzIuNSAtMTMuNWwtMTEyIC0xMTBxLTIyIC0yMiAtNiAtNTN6TTE3MiA3MzlsODMgODZsMTgzIC0xNDYgcTIyIC0xOCA0NyAtNXEzIDEgNS41IDMuNWw0IDR0Mi41IDV0MS41IDUuNXQxIDYuNXQwLjUgNnY3LjV2N3Y0NTZxMCAyMiAyNSAzMXQ1MCAtMC41dDI1IC0zMC41di0yMDJxMCAtMTYgMjAgLTI5LjV0NDEgLTE5LjVsMzM5IC0xMzB2LTI5NGwtODkgLTEwMGgtNTAzek00MDAgMHYyMDBoNjAwdi0yMDBoLTYwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTMwOyIgZD0iTTEgNTg1cS0xNSAtMzEgNyAtNTNsMTEyIC0xMTBxMTMgLTEzIDMyIC0xMy41dDM0IDEwLjVsMTIxIDg1bC0xIC0zMDJxMCAtODQgMzguNSAtMTM4dDExMC41IC01NHQxMTEgNTV0MzkgMTM5djEwNmwzMzkgMTMxcTIwIDYgNDAuNSAxOS41dDIwLjUgMjguNXYzNDJxMCA3IC04MSA5MHQtOTQgODNoLTUyNXEtMTcgMCAtMzUuNSAtMTR0LTI4LjUgLTI4bC0xMCAtMTV6TTc2IDU2NWwyMzcgMzM5aDUwM2w4OSAtMTAwdi0yOTRsLTM0MCAtMTMwIHEtMjAgLTYgLTQwIC0yMHQtMjAgLTI5di0yMDJxMCAtMjIgLTI1IC0zMXQtNTAgMHQtMjUgMzF2NDU2djE0LjV0LTEuNSAxMS41dC01IDEydC05LjUgN3EtMjQgMTMgLTQ2IC01bC0xODQgLTE0NnpNMzA1IDExMDR2MjAwaDYwMHYtMjAwaC02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMTsiIGQ9Ik01IDU5N3EwIDEyMiA0Ny41IDIzMi41dDEyNy41IDE5MC41dDE5MC41IDEyNy41dDIzMi41IDQ3LjVxMTYyIDAgMjk5LjUgLTgwdDIxNy41IC0yMTh0ODAgLTMwMHQtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMzAwIDgwdC0yMTggMjE3LjV0LTgwIDI5OS41ek0zMDAgNTAwaDMwMGwtMiAtMTk0bDQwMiAyOTRsLTQwMiAyOTh2LTE5N2gtMjk4di0yMDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMjsiIGQ9Ik0wIDU5N3EwIDEyMiA0Ny41IDIzMi41dDEyNy41IDE5MC41dDE5MC41IDEyNy41dDIzMS41IDQ3LjVxMTIyIDAgMjMyLjUgLTQ3LjV0MTkwLjUgLTEyNy41dDEyNy41IC0xOTAuNXQ0Ny41IC0yMzIuNXEwIC0xNjIgLTgwIC0yOTkuNXQtMjE4IC0yMTcuNXQtMzAwIC04MHQtMjk5LjUgODB0LTIxNy41IDIxNy41dC04MCAyOTkuNXpNMjAwIDYwMGw0MDAgLTI5NHYxOTRoMzAydjIwMWgtMzAwdjE5N3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTMzOyIgZD0iTTUgNTk3cTAgMTIyIDQ3LjUgMjMyLjV0MTI3LjUgMTkwLjV0MTkwLjUgMTI3LjV0MjMyLjUgNDcuNXExMjEgMCAyMzEuNSAtNDcuNXQxOTAuNSAtMTI3LjV0MTI3LjUgLTE5MC41dDQ3LjUgLTIzMi41cTAgLTE2MiAtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMzAwIDgwdC0yMTggMjE3LjV0LTgwIDI5OS41ek0zMDAgNjAwaDIwMHYtMzAwaDIwMHYzMDBoMjAwbC0zMDAgNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzQ7IiBkPSJNNSA1OTdxMCAxMjIgNDcuNSAyMzIuNXQxMjcuNSAxOTAuNXQxOTAuNSAxMjcuNXQyMzIuNSA0Ny41cTEyMSAwIDIzMS41IC00Ny41dDE5MC41IC0xMjcuNXQxMjcuNSAtMTkwLjV0NDcuNSAtMjMyLjVxMCAtMTYyIC04MCAtMjk5LjV0LTIxNy41IC0yMTcuNXQtMjk5LjUgLTgwdC0zMDAgODB0LTIxOCAyMTcuNXQtODAgMjk5LjV6TTMwMCA2MDBsMzAwIC00MDBsMzAwIDQwMGgtMjAwdjMwMGgtMjAwdi0zMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTM1OyIgZD0iTTUgNTk3cTAgMTIyIDQ3LjUgMjMyLjV0MTI3LjUgMTkwLjV0MTkwLjUgMTI3LjV0MjMyLjUgNDcuNXExMjEgMCAyMzEuNSAtNDcuNXQxOTAuNSAtMTI3LjV0MTI3LjUgLTE5MC41dDQ3LjUgLTIzMi41cTAgLTE2MiAtODAgLTI5OS41dC0yMTcuNSAtMjE3LjV0LTI5OS41IC04MHQtMzAwIDgwdC0yMTggMjE3LjV0LTgwIDI5OS41ek0yNTQgNzgwcS04IC0zNCA1LjUgLTkzdDcuNSAtODdxMCAtOSAxNyAtNDR0MTYgLTYwcTEyIDAgMjMgLTUuNSB0MjMgLTE1dDIwIC0xMy41cTIwIC0xMCAxMDggLTQycTIyIC04IDUzIC0zMS41dDU5LjUgLTM4LjV0NTcuNSAtMTFxOCAtMTggLTE1IC01NS41dC0yMCAtNTcuNXExMiAtMjEgMjIuNSAtMzQuNXQyOCAtMjd0MzYuNSAtMTcuNXEwIC02IC0zIC0xNS41dC0zLjUgLTE0LjV0NC41IC0xN3ExMDEgLTIgMjIxIDExMXEzMSAzMCA0NyA0OHQzNCA0OXQyMSA2MnEtMTQgOSAtMzcuNSA5LjV0LTM1LjUgNy41cS0xNCA3IC00OSAxNXQtNTIgMTkgcS05IDAgLTM5LjUgLTAuNXQtNDYuNSAtMS41dC0zOSAtNi41dC0zOSAtMTYuNXEtNTAgLTM1IC02NiAtMTJxLTQgMiAtMy41IDI1LjV0MC41IDI1LjVxLTYgMTMgLTI2LjUgMTd0LTI0LjUgN3EyIDIyIC0yIDQxdC0xNi41IDI4dC0zOC41IC0yMHEtMjMgLTI1IC00MiA0cS0xOSAyOCAtOCA1OHE4IDE2IDIyIDIycTYgLTEgMjYgLTEuNXQzMy41IC00LjV0MTkuNSAtMTNxMTIgLTE5IDMyIC0zNy41dDM0IC0yNy41bDE0IC04cTAgMyA5LjUgMzkuNSB0NS41IDU3LjVxLTQgMjMgMTQuNSA0NC41dDIyLjUgMzEuNXE1IDE0IDEwIDM1dDguNSAzMXQxNS41IDIyLjV0MzQgMjEuNXEtNiAxOCAxMCAzN3E4IDAgMjMuNSAtMS41dDI0LjUgLTEuNXQyMC41IDQuNXQyMC41IDE1LjVxLTEwIDIzIC0zMC41IDQyLjV0LTM4IDMwdC00OSAyNi41dC00My41IDIzcTExIDQxIDEgNDRxMzEgLTEzIDU4LjUgLTE0LjV0MzkuNSAzLjVsMTEgNHE2IDM2IC0xNyA1My41dC02NCAyOC41dC01NiAyMyBxLTE5IC0zIC0zNyAwcS0xNSAtMTIgLTM2LjUgLTIxdC0zNC41IC0xMnQtNDQgLTh0LTM5IC02cS0xNSAtMyAtNDYgMHQtNDUgLTNxLTIwIC02IC01MS41IC0yNS41dC0zNC41IC0zNC41cS0zIC0xMSA2LjUgLTIyLjV0OC41IC0xOC41cS0zIC0zNCAtMjcuNSAtOTF0LTI5LjUgLTc5ek01MTggOTE1cTMgMTIgMTYgMzAuNXQxNiAyNS41cTEwIC0xMCAxOC41IC0xMHQxNCA2dDE0LjUgMTQuNXQxNiAxMi41cTAgLTE4IDggLTQyLjV0MTYuNSAtNDQgdDkuNSAtMjMuNXEtNiAxIC0zOSA1dC01My41IDEwdC0zNi41IDE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzY7IiBkPSJNMCAxNjQuNXEwIDIxLjUgMTUgMzcuNWw2MDAgNTk5cS0zMyAxMDEgNiAyMDEuNXQxMzUgMTU0LjVxMTY0IDkyIDMwNiAtOWwtMjU5IC0xMzhsMTQ1IC0yMzJsMjUxIDEyNnExMyAtMTc1IC0xNTEgLTI2N3EtMTIzIC03MCAtMjUzIC0yM2wtNTk2IC01OTZxLTE1IC0xNiAtMzYuNSAtMTZ0LTM2LjUgMTZsLTExMSAxMTBxLTE1IDE1IC0xNSAzNi41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzc7IiBob3Jpei1hZHYteD0iMTIyMCIgZD0iTTAgMTk2djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXpNMCA1OTZ2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDAgcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXpNMCA5OTZ2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek02MDAgNTk2aDUwMHYxMDBoLTUwMHYtMTAwek04MDAgMTk2aDMwMHYxMDBoLTMwMHYtMTAwek05MDAgOTk2aDIwMHYxMDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzg7IiBkPSJNMTAwIDExMDB2MTAwaDEwMDB2LTEwMGgtMTAwMHpNMTUwIDEwMDBoOTAwbC0zNTAgLTUwMHYtMzAwbC0yMDAgLTIwMHY1MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzOTsiIGQ9Ik0wIDIwMHYyMDBoMTIwMHYtMjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXpNMCA1MDB2NDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgzMDB2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgyMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMGgzMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTQwMGgtNTAwdjEwMGgtMjAwdi0xMDBoLTUwMHogTTUwMCAxMDAwaDIwMHYxMDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDA7IiBkPSJNMCAwdjQwMGwxMjkgLTEyOWwyMDAgMjAwbDE0MiAtMTQybC0yMDAgLTIwMGwxMjkgLTEyOWgtNDAwek0wIDgwMGwxMjkgMTI5bDIwMCAtMjAwbDE0MiAxNDJsLTIwMCAyMDBsMTI5IDEyOWgtNDAwdi00MDB6TTcyOSAzMjlsMTQyIDE0MmwyMDAgLTIwMGwxMjkgMTI5di00MDBoLTQwMGwxMjkgMTI5ek03MjkgODcxbDIwMCAyMDBsLTEyOSAxMjloNDAwdi00MDBsLTEyOSAxMjlsLTIwMCAtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDE7IiBkPSJNMCA1OTZxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODIgNTk2cTAgLTE3MiAxMjEuNSAtMjkzdDI5Mi41IC0xMjF0MjkyLjUgMTIxdDEyMS41IDI5M3EwIDE3MSAtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNMjkxIDY1NSBxMCAyMyAxNS41IDM4LjV0MzguNSAxNS41dDM5IC0xNnQxNiAtMzhxMCAtMjMgLTE2IC0zOXQtMzkgLTE2cS0yMiAwIC0zOCAxNnQtMTYgMzl6TTQwMCA4NTBxMCAyMiAxNiAzOC41dDM5IDE2LjVxMjIgMCAzOCAtMTZ0MTYgLTM5dC0xNiAtMzl0LTM4IC0xNnEtMjMgMCAtMzkgMTYuNXQtMTYgMzguNXpNNTEzIDYwOXEwIDMyIDIxIDU2LjV0NTIgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIyIDE2IDM4LjV0MzkgMTYuNSBxMjIgMCAzOCAtMTZ0MTYgLTM5dC0xNiAtMzl0LTM4IC0xNnEtMTYgMCAtMjkgMTBsLTU1IC0xNDVxMTcgLTIyIDE3IC01MXEwIC0zNiAtMjUuNSAtNjEuNXQtNjEuNSAtMjUuNXEtMzcgMCAtNjIuNSAyNS41dC0yNS41IDYxLjV6TTgwMCA2NTVxMCAyMiAxNiAzOHQzOSAxNnQzOC41IC0xNS41dDE1LjUgLTM4LjV0LTE2IC0zOXQtMzggLTE2cS0yMyAwIC0zOSAxNnQtMTYgMzl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MjsiIGQ9Ik0tNDAgMzc1cS0xMyAtOTUgMzUgLTE3M3EzNSAtNTcgOTQgLTg5dDEyOSAtMzJxNjMgMCAxMTkgMjhxMzMgMTYgNjUgNDAuNXQ1Mi41IDQ1LjV0NTkuNSA2NHE0MCA0NCA1NyA2MWwzOTQgMzk0cTM1IDM1IDQ3IDg0dC0zIDk2cS0yNyA4NyAtMTE3IDEwNHEtMjAgMiAtMjkgMnEtNDYgMCAtNzkuNSAtMTd0LTY3LjUgLTUxbC0zODggLTM5NmwtNyAtN2w2OSAtNjdsMzc3IDM3M3EyMCAyMiAzOSAzOHEyMyAyMyA1MCAyM3EzOCAwIDUzIC0zNiBxMTYgLTM5IC0yMCAtNzVsLTU0NyAtNTQ3cS01MiAtNTIgLTEyNSAtNTJxLTU1IDAgLTEwMCAzM3QtNTQgOTZxLTUgMzUgMi41IDY2dDMxLjUgNjN0NDIgNTB0NTYgNTRxMjQgMjEgNDQgNDFsMzQ4IDM0OHE1MiA1MiA4Mi41IDc5LjV0ODQgNTR0MTA3LjUgMjYuNXEyNSAwIDQ4IC00cTk1IC0xNyAxNTQgLTk0LjV0NTEgLTE3NS41cS03IC0xMDEgLTk4IC0xOTJsLTI1MiAtMjQ5bC0yNTMgLTI1Nmw3IC03bDY5IC02MGw1MTcgNTExIHE2NyA2NyA5NSAxNTd0MTEgMTgzcS0xNiA4NyAtNjcgMTU0dC0xMzAgMTAzcS02OSAzMyAtMTUyIDMzcS0xMDcgMCAtMTk3IC01NXEtNDAgLTI0IC0xMTEgLTk1bC01MTIgLTUxMnEtNjggLTY4IC04MSAtMTYzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDM7IiBkPSJNNzkgNzg0cTAgMTMxIDk5IDIyOS41dDIzMCA5OC41cTE0NCAwIDI0MiAtMTI5cTEwMyAxMjkgMjQ1IDEyOXExMzAgMCAyMjcgLTk4LjV0OTcgLTIyOS41cTAgLTQ2IC0xNy41IC05MXQtNjEgLTk5dC03NyAtODkuNXQtMTA0LjUgLTEwNS41cS0xOTcgLTE5MSAtMjkzIC0zMjJsLTE3IC0yM2wtMTYgMjNxLTQzIDU4IC0xMDAgMTIyLjV0LTkyIDk5LjV0LTEwMSAxMDBsLTg0LjUgODQuNXQtNjggNzR0LTYwIDc4dC0zMy41IDcwLjV0LTE1IDc4eiBNMjUwIDc4NHEwIC0yNyAzMC41IC03MHQ2MS41IC03NS41dDk1IC05NC41bDIyIC0yMnE5MyAtOTAgMTkwIC0yMDFxODIgOTIgMTk1IDIwM2wxMiAxMnE2NCA2MiA5Ny41IDk3dDY0LjUgNzl0MzEgNzJxMCA3MSAtNDggMTE5LjV0LTEwNiA0OC41cS03MyAwIC0xMzEgLTgzbC0xMTggLTE3MWwtMTE0IDE3NHEtNTEgODAgLTEyNCA4MHEtNTkgMCAtMTA4LjUgLTQ5LjV0LTQ5LjUgLTExOC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDQ7IiBkPSJNNTcgMzUzcTAgLTk0IDY2IC0xNjBsMTQxIC0xNDFxNjYgLTY2IDE1OSAtNjZxOTUgMCAxNTkgNjZsMjgzIDI4M3E2NiA2NiA2NiAxNTl0LTY2IDE1OWwtMTQxIDE0MXEtMTIgMTIgLTE5IDE3bC0xMDUgLTEwNWwyMTIgLTIxMmwtMzg5IC0zODlsLTI0NyAyNDhsOTUgOTVsLTE4IDE4cS00NiA0NSAtNzUgMTAxbC01NSAtNTVxLTY2IC02NiAtNjYgLTE1OXpNMjY5IDcwNnEwIC05MyA2NiAtMTU5bDE0MSAtMTQxbDE5IC0xN2wxMDUgMTA1IGwtMjEyIDIxMmwzODkgMzg5bDI0NyAtMjQ3bC05NSAtOTZsMTggLTE4cTQ2IC00NiA3NyAtOTlsMjkgMjlxMzUgMzUgNjIuNSA4OHQyNy41IDk2cTAgOTMgLTY2IDE1OWwtMTQxIDE0MXEtNjYgNjYgLTE1OSA2NnEtOTUgMCAtMTU5IC02NmwtMjgzIC0yODNxLTY2IC02NCAtNjYgLTE1OXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQ1OyIgZD0iTTIwMCAxMDB2OTUzcTAgMjEgMzAgNDZ0ODEgNDh0MTI5IDM4dDE2MyAxNXQxNjIgLTE1dDEyNyAtMzh0NzkgLTQ4dDI5IC00NnYtOTUzcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41ek0zMDAgMzAwaDYwMHY3MDBoLTYwMHYtNzAwek00OTYgMTUwcTAgLTQzIDMwLjUgLTczLjV0NzMuNSAtMzAuNXQ3My41IDMwLjV0MzAuNSA3My41dC0zMC41IDczLjV0LTczLjUgMzAuNSB0LTczLjUgLTMwLjV0LTMwLjUgLTczLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0NjsiIGQ9Ik0wIDBsMzAzIDM4MGwyMDcgMjA4bC0yMTAgMjEyaDMwMGwyNjcgMjc5bC0zNSAzNnEtMTUgMTQgLTE1IDM1dDE1IDM1cTE0IDE1IDM1IDE1dDM1IC0xNWwyODMgLTI4MnExNSAtMTUgMTUgLTM2dC0xNSAtMzVxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMzYgMzVsLTI3OSAtMjY3di0zMDBsLTIxMiAyMTBsLTIwOCAtMjA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDg7IiBkPSJNMjk1IDQzM2gxMzlxNSAtNzcgNDguNSAtMTI2LjV0MTE3LjUgLTY0LjV2MzM1bC0yNyA3cS00NiAxNCAtNzkgMjYuNXQtNzIgMzZ0LTYyLjUgNTJ0LTQwIDcyLjV0LTE2LjUgOTlxMCA5MiA0NCAxNTkuNXQxMDkgMTAxdDE0NCA0MC41djc4aDEwMHYtNzlxMzggLTQgNzIuNSAtMTMuNXQ3NS41IC0zMS41dDcxIC01My41dDUxLjUgLTg0dDI0LjUgLTExOC41aC0xNTlxLTggNzIgLTM1IDEwOS41dC0xMDEgNTAuNXYtMzA3bDY0IC0xNCBxMzQgLTcgNjQgLTE2LjV0NzAgLTMxLjV0NjcuNSAtNTJ0NDcuNSAtODAuNXQyMCAtMTEyLjVxMCAtMTM5IC04OSAtMjI0dC0yNDQgLTk2di03N2gtMTAwdjc4cS0xNTIgMTcgLTIzNyAxMDRxLTQwIDQwIC01Mi41IDkzLjV0LTE1LjUgMTM5LjV6TTQ2NiA4ODlxMCAtMjkgOCAtNTF0MTYuNSAtMzR0MjkuNSAtMjIuNXQzMSAtMTMuNXQzOCAtMTBxNyAtMiAxMSAtM3YyNzRxLTYxIC04IC05Ny41IC0zNy41dC0zNi41IC0xMDIuNXpNNzAwIDIzNyBxMTcwIDE4IDE3MCAxNTFxMCA2NCAtNDQgOTkuNXQtMTI2IDYwLjV2LTMxMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTQ5OyIgZD0iTTEwMCA2MDB2MTAwaDE2NnEtMjQgNDkgLTQ0IDEwNHEtMTAgMjYgLTE0LjUgNTUuNXQtMyA3Mi41dDI1IDkwdDY4LjUgODdxOTcgODggMjYzIDg4cTEyOSAwIDIzMCAtODl0MTAxIC0yMDhoLTE1M3EwIDUyIC0zNCA4OS41dC03NCA1MS41dC03NiAxNHEtMzcgMCAtNzkgLTE0LjV0LTYyIC0zNS41cS00MSAtNDQgLTQxIC0xMDFxMCAtMTEgMi41IC0yNC41dDUuNSAtMjR0OS41IC0yNi41dDEwLjUgLTI1dDE0IC0yNy41dDE0IC0yNS41IHQxNS41IC0yN3QxMy41IC0yNGgyNDJ2LTEwMGgtMTk3cTggLTUwIC0yLjUgLTExNXQtMzEuNSAtOTRxLTQxIC01OSAtOTkgLTExM3EzNSAxMSA4NCAxOHQ3MCA3cTMyIDEgMTAyIC0xNnQxMDQgLTE3cTc2IDAgMTM2IDMwbDUwIC0xNDdxLTQxIC0yNSAtODAuNSAtMzYuNXQtNTkgLTEzdC02MS41IC0xLjVxLTIzIDAgLTEyOCAzM3QtMTU1IDI5cS0zOSAtNCAtODIgLTE3dC02NiAtMjVsLTI0IC0xMWwtNTUgMTQ1bDE2LjUgMTF0MTUuNSAxMCB0MTMuNSA5LjV0MTQuNSAxMnQxNC41IDE0dDE3LjUgMTguNXE0OCA1NSA1NCAxMjYuNXQtMzAgMTQyLjVoLTIyMXoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUwOyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTYwMiA5MDBsMjk4IDMwMGwyOTggLTMwMGgtMTk4di05MDBoLTIwMHY5MDBoLTE5OHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTIgMzAwaDE5OHY5MDBoMjAwdi05MDBoMTk4bC0yOTggLTMwMHpNNzAwIDB2MjAwaDEwMHYtMTAwaDIwMHYtMTAwaC0zMDB6TTcwMCA0MDB2MTAwaDMwMHYtMjAwaC05OXYtMTAwaC0xMDB2MTAwaDk5djEwMGgtMjAwek03MDAgNzAwdjUwMGgzMDB2LTUwMGgtMTAwdjEwMGgtMTAwdi0xMDBoLTEwMHpNODAxIDkwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTUyOyIgZD0iTTIgMzAwaDE5OHY5MDBoMjAwdi05MDBoMTk4bC0yOTggLTMwMHpNNzAwIDB2NTAwaDMwMHYtNTAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwek03MDAgNzAwdjIwMGgxMDB2LTEwMGgyMDB2LTEwMGgtMzAwek03MDAgMTEwMHYxMDBoMzAwdi0yMDBoLTk5di0xMDBoLTEwMHYxMDBoOTl2MTAwaC0yMDB6TTgwMSAyMDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MzsiIGQ9Ik0yIDMwMGwyOTggLTMwMGwyOTggMzAwaC0xOTh2OTAwaC0yMDB2LTkwMGgtMTk4ek04MDAgMTAwdjQwMGgzMDB2LTUwMGgtMTAwdjEwMGgtMjAwek04MDAgMTEwMHYxMDBoMjAwdi01MDBoLTEwMHY0MDBoLTEwMHpNOTAxIDIwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTU0OyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTgwMCA0MDB2MTAwaDIwMHYtNTAwaC0xMDB2NDAwaC0xMDB6TTgwMCA4MDB2NDAwaDMwMHYtNTAwaC0xMDB2MTAwaC0yMDB6TTkwMSA5MDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1NTsiIGQ9Ik0yIDMwMGwyOTggLTMwMGwyOTggMzAwaC0xOTh2OTAwaC0yMDB2LTkwMGgtMTk4ek03MDAgMTAwdjIwMGg1MDB2LTIwMGgtNTAwek03MDAgNDAwdjIwMGg0MDB2LTIwMGgtNDAwek03MDAgNzAwdjIwMGgzMDB2LTIwMGgtMzAwek03MDAgMTAwMHYyMDBoMjAwdi0yMDBoLTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTU2OyIgZD0iTTIgMzAwbDI5OCAtMzAwbDI5OCAzMDBoLTE5OHY5MDBoLTIwMHYtOTAwaC0xOTh6TTcwMCAxMDB2MjAwaDIwMHYtMjAwaC0yMDB6TTcwMCA0MDB2MjAwaDMwMHYtMjAwaC0zMDB6TTcwMCA3MDB2MjAwaDQwMHYtMjAwaC00MDB6TTcwMCAxMDAwdjIwMGg1MDB2LTIwMGgtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMCA0MDB2MzAwcTAgMTY1IDExNy41IDI4Mi41dDI4Mi41IDExNy41aDMwMHExNjIgMCAyODEgLTExOC41dDExOSAtMjgxLjV2LTMwMHEwIC0xNjUgLTExOC41IC0yODIuNXQtMjgxLjUgLTExNy41aC0zMDBxLTE2NSAwIC0yODIuNSAxMTcuNXQtMTE3LjUgMjgyLjV6TTIwMCAzMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41IGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1ODsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjMgMTE5IDI4MS41dDI4MSAxMTguNWgzMDBxMTY1IDAgMjgyLjUgLTExNy41dDExNy41IC0yODIuNXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTYzIDAgLTI4MS41IDExNy41dC0xMTguNSAyODIuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNNDAwIDMwMGwzMzMgMjUwbC0zMzMgMjUwdi01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjMgMTE3LjUgMjgxLjV0MjgyLjUgMTE4LjVoMzAwcTE2MyAwIDI4MS41IC0xMTl0MTE4LjUgLTI4MXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTMwMHEtMTY1IDAgLTI4Mi41IDExNy41dC0xMTcuNSAyODIuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMzAwIDcwMGwyNTAgLTMzM2wyNTAgMzMzaC01MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MDsiIGQ9Ik0wIDQwMHYzMDBxMCAxNjUgMTE3LjUgMjgyLjV0MjgyLjUgMTE3LjVoMzAwcTE2NSAwIDI4Mi41IC0xMTcuNXQxMTcuNSAtMjgyLjV2LTMwMHEwIC0xNjIgLTExOC41IC0yODF0LTI4MS41IC0xMTloLTMwMHEtMTY1IDAgLTI4Mi41IDExOC41dC0xMTcuNSAyODEuNXpNMjAwIDMwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjUgaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMzAwIDQwMGg1MDBsLTI1MCAzMzN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik0wIDQwMHYzMDBoMzAwdjIwMGw0MDAgLTM1MGwtNDAwIC0zNTB2MjAwaC0zMDB6TTUwMCAwdjIwMGg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtNTAwdjIwMGg0MDBxMTY1IDAgMjgyLjUgLTExNy41dDExNy41IC0yODIuNXYtMzAwcTAgLTE2NSAtMTE3LjUgLTI4Mi41dC0yODIuNSAtMTE3LjVoLTQwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTIxNiA1MTlxMTAgLTE5IDMyIC0xOWgzMDJxLTE1NSAtNDM4IC0xNjAgLTQ1OHEtNSAtMjEgNCAtMzJsOSAtOGw5IC0xcTEzIDAgMjYgMTZsNTM4IDYzMHExNSAxOSA2IDM2cS04IDE4IC0zMiAxNmgtMzAwcTEgNCA3OCAyMTkuNXQ3OSAyMjcuNXEyIDE3IC02IDI3bC04IDhoLTlxLTE2IDAgLTI1IC0xNXEtNCAtNSAtOTguNSAtMTExLjV0LTIyOCAtMjU3dC0yMDkuNSAtMjM4LjVxLTE3IC0xOSAtNyAtNDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MzsiIGQ9Ik0wIDQwMHEwIC0xNjUgMTE3LjUgLTI4Mi41dDI4Mi41IC0xMTcuNWgzMDBxNDcgMCAxMDAgMTV2MTg1aC01MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoNTAwdjE4NXEtMTQgNCAtMTE0IDcuNXQtMTkzIDUuNWwtOTMgMnEtMTY1IDAgLTI4Mi41IC0xMTcuNXQtMTE3LjUgLTI4Mi41di0zMDB6TTYwMCA0MDB2MzAwaDMwMHYyMDBsNDAwIC0zNTBsLTQwMCAtMzUwdjIwMGgtMzAweiAiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY0OyIgZD0iTTAgNDAwcTAgLTE2NSAxMTcuNSAtMjgyLjV0MjgyLjUgLTExNy41aDMwMHExNjMgMCAyODEuNSAxMTcuNXQxMTguNSAyODIuNXY5OGwtNzggNzNsLTEyMiAtMTIzdi0xNDhxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTUwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2NTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxNTZsMTE4IDEyMmwtNzQgNzhoLTEwMHEtMTY1IDAgLTI4Mi41IC0xMTcuNXQtMTE3LjUgLTI4Mi41IHYtMzAwek00OTYgNzA5bDM1MyAzNDJsLTE0OSAxNDloNTAwdi01MDBsLTE0OSAxNDlsLTM0MiAtMzUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjU7IiBkPSJNNCA2MDBxMCAxNjIgODAgMjk5dDIxNyAyMTd0Mjk5IDgwdDI5OSAtODB0MjE3IC0yMTd0ODAgLTI5OXQtODAgLTI5OXQtMjE3IC0yMTd0LTI5OSAtODB0LTI5OSA4MHQtMjE3IDIxN3QtODAgMjk5ek0xODYgNjAwcTAgLTE3MSAxMjEuNSAtMjkyLjV0MjkyLjUgLTEyMS41dDI5Mi41IDEyMS41dDEyMS41IDI5Mi41dC0xMjEuNSAyOTIuNXQtMjkyLjUgMTIxLjV0LTI5Mi41IC0xMjEuNXQtMTIxLjUgLTI5Mi41ek00MDYgNjAwIHEwIDgwIDU3IDEzN3QxMzcgNTd0MTM3IC01N3Q1NyAtMTM3dC01NyAtMTM3dC0xMzcgLTU3dC0xMzcgNTd0LTU3IDEzN3oiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTY2OyIgZD0iTTAgMHYyNzVxMCAxMSA3IDE4dDE4IDdoMTA0OHExMSAwIDE5IC03LjV0OCAtMTcuNXYtMjc1aC0xMTAwek0xMDAgODAwbDQ0NSAtNTAwbDQ1MCA1MDBoLTI5NXY0MDBoLTMwMHYtNDAwaC0zMDB6TTkwMCAxNTBoMTAwdjUwaC0xMDB2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjc7IiBkPSJNMCAwdjI3NXEwIDExIDcgMTh0MTggN2gxMDQ4cTExIDAgMTkgLTcuNXQ4IC0xNy41di0yNzVoLTExMDB6TTEwMCA3MDBoMzAwdi0zMDBoMzAwdjMwMGgyOTVsLTQ0NSA1MDB6TTkwMCAxNTBoMTAwdjUwaC0xMDB2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjg7IiBkPSJNMCAwdjI3NXEwIDExIDcgMTh0MTggN2gxMDQ4cTExIDAgMTkgLTcuNXQ4IC0xNy41di0yNzVoLTExMDB6TTEwMCA3MDVsMzA1IC0zMDVsNTk2IDU5NmwtMTU0IDE1NWwtNDQyIC00NDJsLTE1MCAxNTF6TTkwMCAxNTBoMTAwdjUwaC0xMDB2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjk7IiBkPSJNMCAwdjI3NXEwIDExIDcgMTh0MTggN2gxMDQ4cTExIDAgMTkgLTcuNXQ4IC0xNy41di0yNzVoLTExMDB6TTEwMCA5ODhsOTcgLTk4bDIxMiAyMTNsLTk3IDk3ek0yMDAgNDAxaDcwMHY2OTlsLTI1MCAtMjM5bC0xNDkgMTQ5bC0yMTIgLTIxMmwxNDkgLTE0OXpNOTAwIDE1MGgxMDB2NTBoLTEwMHYtNTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MDsiIGQ9Ik0wIDB2Mjc1cTAgMTEgNyAxOHQxOCA3aDEwNDhxMTEgMCAxOSAtNy41dDggLTE3LjV2LTI3NWgtMTEwMHpNMjAwIDYxMmwyMTIgLTIxMmw5OCA5N2wtMjEzIDIxMnpNMzAwIDEyMDBsMjM5IC0yNTBsLTE0OSAtMTQ5bDIxMiAtMjEybDE0OSAxNDhsMjQ4IC0yMzd2NzAwaC02OTl6TTkwMCAxNTBoMTAwdjUwaC0xMDB2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzE7IiBkPSJNMjMgNDE1bDExNzcgNzg0di0xMDc5bC00NzUgMjcybC0zMTAgLTM5M3Y0MTZoLTM5MnpNNDk0IDIxMGw2NzIgOTM4bC02NzIgLTcxMnYtMjI2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMCAxNTB2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMGwyMDAgLTIwMHYtODUwcTAgLTIxIC0xNSAtMzUuNXQtMzUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek02MDAgMTAwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTczOyIgZD0iTTAgMTUwdjEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDBsMjAwIC0yMDB2LTIxOGwtMjc2IC0yNzVsLTEyMCAxMjBsLTEyNiAtMTI3aC0zNzh2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNTgxIDMwNmwxMjMgMTIzbDEyMCAtMTIwbDM1MyAzNTJsMTIzIC0xMjNsLTQ3NSAtNDc2ek02MDAgMTAwMGgxMDB2MjAwaC0xMDB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTc0OyIgZD0iTTAgMTUwdjEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDBsMjAwIC0yMDB2LTI2OWwtMTAzIC0xMDNsLTE3MCAxNzBsLTI5OCAtMjk4aC0zMjl2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDEwMDBoMTAwdjIwMGgtMTAwdi0yMDB6TTcwMCAxMzNsMTcwIDE3MGwtMTcwIDE3MGwxMjcgMTI3bDE3MCAtMTcwbDE3MCAxNzBsMTI3IC0xMjhsLTE3MCAtMTY5bDE3MCAtMTcwIGwtMTI3IC0xMjdsLTE3MCAxNzBsLTE3MCAtMTcweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzU7IiBkPSJNMCAxNTB2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMGwyMDAgLTIwMHYtMzAwaC00MDB2LTIwMGgtNTAwdi00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTYwMCAzMDBsMzAwIC0zMDBsMzAwIDMwMGgtMjAwdjMwMGgtMjAwdi0zMDBoLTIwMHpNNjAwIDEwMDB2MjAwaDEwMHYtMjAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0wIDE1MHYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwbDIwMCAtMjAwdi00MDJsLTIwMCAyMDBsLTI5OCAtMjk4aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNNjAwIDMwMGgyMDB2LTMwMGgyMDB2MzAwaDIwMGwtMzAwIDMwMHpNNjAwIDEwMDB2MjAwaDEwMHYtMjAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik0wIDI1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTEwMHEyMSAwIDM1LjUgMTQuNXQxNC41IDM1LjV2NTUwaC0xMjAwdi01NTB6TTAgOTAwaDEyMDB2MTUwcTAgMjEgLTE0LjUgMzUuNXQtMzUuNSAxNC41aC0xMTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTB6TTEwMCAzMDB2MjAwaDQwMHYtMjAwaC00MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3ODsiIGQ9Ik0wIDQwMGwzMDAgMjk4di0xOThoNDAwdi0yMDBoLTQwMHYtMTk4ek0xMDAgODAwdjIwMGgxMDB2LTIwMGgtMTAwek0zMDAgODAwdjIwMGgxMDB2LTIwMGgtMTAwek01MDAgODAwdjIwMGg0MDB2MTk4bDMwMCAtMjk4bC0zMDAgLTI5OHYxOThoLTQwMHpNODAwIDMwMHYyMDBoMTAwdi0yMDBoLTEwMHpNMTAwMCAzMDBoMTAwdjIwMGgtMTAwdi0yMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3OTsiIGQ9Ik0xMDAgNzAwdjQwMGw1MCAxMDBsNTAgLTEwMHYtMzAwaDEwMHYzMDBsNTAgMTAwbDUwIC0xMDB2LTMwMGgxMDB2MzAwbDUwIDEwMGw1MCAtMTAwdi00MDBsLTEwMCAtMjAzdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3ek04MDAgNTk3cTAgLTI5IDEwLjUgLTU1LjV0MjUgLTQzdDI5IC0yOC41dDI1LjUgLTE4bDEwIC01di0zOTdxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWgyMDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djExMDZxMCAzMSAtMTggNDAuNXQtNDQgLTcuNWwtMjc2IC0xMTdxLTI1IC0xNiAtNDMuNSAtNTAuNXQtMTguNSAtNjUuNXYtMzU5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODA7IiBkPSJNMTAwIDBoNDAwdjU2cS03NSAwIC04Ny41IDZ0LTEyLjUgNDR2Mzk0aDUwMHYtMzk0cTAgLTM4IC0xMi41IC00NHQtODcuNSAtNnYtNTZoNDAwdjU2cS00IDAgLTExIDAuNXQtMjQgM3QtMzAgN3QtMjQgMTV0LTExIDI0LjV2ODg4cTAgMjIgMjUgMzQuNXQ1MCAxMy41bDI1IDJ2NTZoLTQwMHYtNTZxNzUgMCA4Ny41IC02dDEyLjUgLTQ0di0zOTRoLTUwMHYzOTRxMCAzOCAxMi41IDQ0dDg3LjUgNnY1NmgtNDAwdi01NnE0IDAgMTEgLTAuNSB0MjQgLTN0MzAgLTd0MjQgLTE1dDExIC0yNC41di04ODhxMCAtMjIgLTI1IC0zNC41dC01MCAtMTMuNWwtMjUgLTJ2LTU2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNMCAzMDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0zMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHpNMTAwIDEwMGg0MDBsMjAwIDIwMGgxMDVsMjk1IDk4di0yOThoLTQyNWwtMTAwIC0xMDBoLTM3NXpNMTAwIDMwMHYyMDBoMzAwdi0yMDBoLTMwMHpNMTAwIDYwMHYyMDBoMzAwdi0yMDBoLTMwMHogTTEwMCAxMDAwaDQwMGwyMDAgLTIwMHYtOThsMjk1IDk4aDEwNXYyMDBoLTQyNWwtMTAwIDEwMGgtMzc1ek03MDAgNDAydjE2M2w0MDAgMTMzdi0xNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MjsiIGQ9Ik0xNi41IDk3NC41cTAuNSAtMjEuNSAxNiAtOTB0NDYuNSAtMTQwdDEwNCAtMTc3LjV0MTc1IC0yMDhxMTAzIC0xMDMgMjA3LjUgLTE3NnQxODAgLTEwMy41dDEzNyAtNDd0OTIuNSAtMTYuNWwzMSAxbDE2MyAxNjJxMTYgMTcgMTMgNDAuNXQtMjIgMzcuNWwtMTkyIDEzNnEtMTkgMTQgLTQ1IDEydC00MiAtMTlsLTExOSAtMTE4cS0xNDMgMTAzIC0yNjcgMjI3cS0xMjYgMTI2IC0yMjcgMjY4bDExOCAxMThxMTcgMTcgMjAgNDEuNSB0LTExIDQ0LjVsLTEzOSAxOTRxLTE0IDE5IC0zNi41IDIydC00MC41IC0xNGwtMTYyIC0xNjJxLTEgLTExIC0wLjUgLTMyLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik0wIDUwdjIxMnEwIDIwIDEwLjUgNDUuNXQyNC41IDM5LjVsMzY1IDMwM3Y1MHEwIDQgMSAxMC41dDEyIDIyLjV0MzAgMjguNXQ2MCAyM3Q5NyAxMC41dDk3IC0xMHQ2MCAtMjMuNXQzMCAtMjcuNXQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNCAyNC41IC0zOS41dDEwLjUgLTQ1LjV2LTIxMnEwIC0yMSAtMTUgLTM1LjV0LTM1IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMCA3MTIgcTAgLTIxIDE0LjUgLTMzLjV0MzQuNSAtOC41bDIwMiAzM3EyMCA0IDM0LjUgMjF0MTQuNSAzOHYxNDZxMTQxIDI0IDMwMCAyNHQzMDAgLTI0di0xNDZxMCAtMjEgMTQuNSAtMzh0MzQuNSAtMjFsMjAyIC0zM3EyMCAtNCAzNC41IDguNXQxNC41IDMzLjV2MjAwcS02IDggLTE5IDIwLjV0LTYzIDQ1dC0xMTIgNTd0LTE3MSA0NXQtMjM1IDIwLjVxLTkyIDAgLTE3NSAtMTAuNXQtMTQxLjUgLTI3dC0xMDguNSAtMzYuNXQtODEuNSAtNDAgdC01My41IC0zNi41dC0zMSAtMjcuNWwtOSAtMTB2LTIwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg0OyIgZD0iTTEwMCAwdjEwMGgxMTAwdi0xMDBoLTExMDB6TTE3NSAyMDBoOTUwbC0xMjUgMTUwdjI1MGwxMDAgMTAwdjQwMGgtMTAwdi0yMDBoLTEwMHYyMDBoLTIwMHYtMjAwaC0xMDB2MjAwaC0yMDB2LTIwMGgtMTAwdjIwMGgtMTAwdi00MDBsMTAwIC0xMDB2LTI1MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg1OyIgZD0iTTEwMCAwaDMwMHY0MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNDAwek01MDAgMHYxMDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMDBoLTMwMHpNOTAwIDB2NzAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTcwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODY7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjMwMGgtMjAwdjEwMGgyMDB2MTAwaC0zMDB2LTMwMGgyMDB2LTEwMGgtMjAwdi0xMDB6TTYwMCAzMDBoMjAwdjEwMGgxMDB2MzAwaC0xMDB2MTAwaC0yMDB2LTUwMCB6TTcwMCA0MDB2MzAwaDEwMHYtMzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NzsiIGQ9Ik0tMTAwIDMwMHY1MDBxMCAxMjQgODggMjEydDIxMiA4OGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnpNMTAwIDIwMGg5MDB2NzAwaC05MDB2LTcwMHpNMjAwIDMwMGgxMDB2MjAwaDEwMHYtMjAwaDEwMHY1MDBoLTEwMHYtMjAwaC0xMDB2MjAwaC0xMDB2LTUwMHpNNjAwIDMwMGgyMDB2MTAwaDEwMHYzMDBoLTEwMHYxMDBoLTIwMHYtNTAwIHpNNzAwIDQwMHYzMDBoMTAwdi0zMDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTS0xMDAgMzAwdjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4aDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAgMjAwaDkwMHY3MDBoLTkwMHYtNzAwek0yMDAgMzAwaDMwMHYxMDBoLTIwMHYzMDBoMjAwdjEwMGgtMzAwdi01MDB6TTYwMCAzMDBoMzAwdjEwMGgtMjAwdjMwMGgyMDB2MTAwaC0zMDB2LTUwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTg5OyIgZD0iTS0xMDAgMzAwdjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4aDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAgMjAwaDkwMHY3MDBoLTkwMHYtNzAwek0yMDAgNTUwbDMwMCAtMTUwdjMwMHpNNjAwIDQwMGwzMDAgMTUwbC0zMDAgMTUwdi0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MDsiIGQ9Ik0tMTAwIDMwMHY1MDBxMCAxMjQgODggMjEydDIxMiA4OGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnpNMTAwIDIwMGg5MDB2NzAwaC05MDB2LTcwMHpNMjAwIDMwMHY1MDBoNzAwdi01MDBoLTcwMHpNMzAwIDQwMGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB2LTMwMHpNNTc1IDU0OSBxMCAtNjUgMjcgLTEwN3Q2OCAtNDJoMTMwdjMwMGgtMTMwcS0zOCAwIC02Ni41IC00M3QtMjguNSAtMTA4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTE7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjMwMGgtMjAwdjEwMGgyMDB2MTAwaC0zMDB2LTMwMGgyMDB2LTEwMGgtMjAwdi0xMDB6TTYwMSAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTcwMCA3MDBoMTAwIHYtNDAwaDEwMHY1MDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTI7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCAzMDBoMzAwdjQwMGgtMjAwdjEwMGgtMTAwdi01MDB6TTMwMSA0MDB2MjAwaDEwMHYtMjAwaC0xMDB6TTYwMSAzMDBoMTAwdjEwMGgtMTAwdi0xMDB6TTcwMCA3MDBoMTAwIHYtNDAwaDEwMHY1MDBoLTIwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTM7IiBkPSJNLTEwMCAzMDB2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODhoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ6TTEwMCAyMDBoOTAwdjcwMGgtOTAwdi03MDB6TTIwMCA3MDB2MTAwaDMwMHYtMzAwaC05OXYtMTAwaC0xMDB2MTAwaDk5djIwMGgtMjAwek0yMDEgMzAwdjEwMGgxMDB2LTEwMGgtMTAwek02MDEgMzAwdjEwMGgxMDB2LTEwMGgtMTAweiBNNzAwIDcwMHYxMDBoMjAwdi01MDBoLTEwMHY0MDBoLTEwMHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMTk0OyIgZD0iTTQgNjAwcTAgMTYyIDgwIDI5OXQyMTcgMjE3dDI5OSA4MHQyOTkgLTgwdDIxNyAtMjE3dDgwIC0yOTl0LTgwIC0yOTl0LTIxNyAtMjE3dC0yOTkgLTgwdC0yOTkgODB0LTIxNyAyMTd0LTgwIDI5OXpNMTg2IDYwMHEwIC0xNzEgMTIxLjUgLTI5Mi41dDI5Mi41IC0xMjEuNXQyOTIuNSAxMjEuNXQxMjEuNSAyOTIuNXQtMTIxLjUgMjkyLjV0LTI5Mi41IDEyMS41dC0yOTIuNSAtMTIxLjV0LTEyMS41IC0yOTIuNXpNNDAwIDUwMHYyMDAgbDEwMCAxMDBoMzAwdi0xMDBoLTMwMHYtMjAwaDMwMHYtMTAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NTsiIGQ9Ik0wIDYwMHEwIDE2MiA4MCAyOTl0MjE3IDIxN3QyOTkgODB0Mjk5IC04MHQyMTcgLTIxN3Q4MCAtMjk5dC04MCAtMjk5dC0yMTcgLTIxN3QtMjk5IC04MHQtMjk5IDgwdC0yMTcgMjE3dC04MCAyOTl6TTE4MiA2MDBxMCAtMTcxIDEyMS41IC0yOTIuNXQyOTIuNSAtMTIxLjV0MjkyLjUgMTIxLjV0MTIxLjUgMjkyLjV0LTEyMS41IDI5Mi41dC0yOTIuNSAxMjEuNXQtMjkyLjUgLTEyMS41dC0xMjEuNSAtMjkyLjV6TTQwMCA0MDB2NDAwaDMwMCBsMTAwIC0xMDB2LTEwMGgtMTAwdjEwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaC0xMDB6TTcwMCA0MDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NzsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoMjIydjMwMGg0MDB2LTMwMGgxMjhxMTIwIDAgMjA1IDg2dDg1IDIwOHEwIDEyMCAtODUgMjA2LjV0LTIwNSA4Ni41cS00NiAwIC05MCAtMTRxLTQ0IDk3IC0xMzQuNSAxNTYuNXQtMjAwLjUgNTkuNXEtMTUyIDAgLTI2MCAtMTA3LjV0LTEwOCAtMjYwLjVxMCAtMjUgMiAtMzdxLTY2IC0xNCAtMTA4LjUgLTY3LjV0LTQyLjUgLTEyMi41ek0zMDAgMjAwaDIwMHYzMDBoMjAwdi0zMDAgaDIwMGwtMzAwIC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5ODsiIGQ9Ik0tMTQgNDk0cTAgLTgwIDU2LjUgLTEzN3QxMzUuNSAtNTdoOGw0MTQgNDE0bDQwMyAtNDAzcTk0IDI2IDE1NC41IDEwNHQ2MC41IDE3OHEwIDEyMSAtODUgMjA3LjV0LTIwNSA4Ni41cS00NiAwIC05MCAtMTRxLTQ0IDk3IC0xMzQuNSAxNTYuNXQtMjAwLjUgNTkuNXEtMTUyIDAgLTI2MCAtMTA3LjV0LTEwOCAtMjYwLjVxMCAtMjUgMiAtMzdxLTY2IC0xNCAtMTA4LjUgLTY3LjV0LTQyLjUgLTEyMi41ek0zMDAgMjAwbDMwMCAzMDAgbDMwMCAtMzAwaC0yMDB2LTMwMGgtMjAwdjMwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTk7IiBkPSJNMTAwIDIwMGg0MDB2LTE1NWwtNzUgLTQ1aDM1MGwtNzUgNDV2MTU1aDQwMGwtMjcwIDMwMGgxNzBsLTI3MCAzMDBoMTcwbC0zMDAgMzMzbC0zMDAgLTMzM2gxNzBsLTI3MCAtMzAwaDE3MHoiIC8+CjxnbHlwaCB1bmljb2RlPSImI3hlMjAwOyIgZD0iTTEyMSA3MDBxMCAtNTMgMjguNSAtOTd0NzUuNSAtNjVxLTQgLTE2IC00IC0zOHEwIC03NCA1Mi41IC0xMjYuNXQxMjYuNSAtNTIuNXE1NiAwIDEwMCAzMHYtMzA2bC03NSAtNDVoMzUwbC03NSA0NXYzMDZxNDYgLTMwIDEwMCAtMzBxNzQgMCAxMjYuNSA1Mi41dDUyLjUgMTI2LjVxMCAyNCAtOSA1NXE1MCAzMiA3OS41IDgzdDI5LjUgMTEycTAgOTAgLTYxLjUgMTU1LjV0LTE1MC41IDcxLjVxLTI2IDg5IC05OS41IDE0NS41IHQtMTY3LjUgNTYuNXEtMTE2IDAgLTE5Ny41IC04MS41dC04MS41IC0xOTcuNXEwIC00IDEgLTEydDEgLTExcS0xNCAyIC0yMyAycS03NCAwIC0xMjYuNSAtNTIuNXQtNTIuNSAtMTI2LjV6IiAvPgo8L2ZvbnQ+CjwvZGVmcz48L3N2Zz4g","glyphicons-halflings-regular.ttf":"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LGRk/tRkZGQBLGT+cAEs/tQAAAAABf+cAAAEsARMAA8AEwAfACcAKwBIALINAAArsBDNsBMvsATNAbAsL7AA1rAQzbAQELERASuwCc2xLQErsREQERK1FBkgIygqJBc5ALETEBEStRQaICYoKSQXOTAxAxE0NjMhMhYVERQGIyEiJjchESETMzUzFTMRIxUjNSMBMzUzESM1IxMRMxFksHwCvHywsHz9RHywyAOE/HxkZGRkZGRkAZDIZGTIZGQBLAH0fLCwfP4MfLCwGAK8/ajIyAH0yMj+DGQBLGT+cAEs/tQAAAT/nAAABLAETAAPABMAGwAjAEQAsg0AACuwEM2wEy+wBM0BsCQvsADWsBDNsBAQsREBK7AJzbElASuxERARErMUFRwdJBc5ALETEBESsxQaHCIkFzkwMQMRNDYzITIWFREUBiMhIiY3IREhEyE1IxEzNSEBITUjETM1IWSwfAK8fLCwfP1EfLDIA4T8fGQBLMjI/tQBkAEsyMj+1AEsAfR8sLB8/gx8sLAYArz9qGQBLGT+DGQBLGQAAAAABP+cAAAEsARMAA8AEwAWABkARACyDQAAK7AQzbATL7AEzQGwGi+wANawEM2wEBCxEQErsAnNsRsBK7EREBESsxQVFxgkFzkAsRMQERKzFRYXGSQXOTAxAxE0NjMhMhYVERQGIyEiJjchESETBRETLQFksHwCvHywsHz9RHywyAOE/HxkASxkASz+1AEsAfR8sLB8/gx8sLAYArz+opYBLP7UlpYAAAAABf+cAAAEsARMAA8AEwAXAB8AJwBaALINAAArsBDNsBQvsBjNsCMysB8vsCUzsBXNsBMvsATNAbAoL7AA1rAQzbAQELEUASuwGM2wGBCxHAErsCHNsCEQsSQBK7AXzbAXELERASuwCc2xKQErADAxAxE0NjMhMhYVERQGIyEiJjchESETESERJTMyNjQmKwEEFBY7AREjImSwfAK8fLCwfP1EfLDIA4T8fGQCvP2ogik2OSaCARM2KYKCJgEsAfR8sLB8/gx8sLAYArz9qAH0/gxkVIJWVoJUASwAAAX/nAAABLAETAAPABMAHwAjACkASACyDQAAK7AQzbATL7AEzQGwKi+wANawEM2wEBCxEQErsAnNsSsBK7EREBEStRQVICEkJyQXOQCxExARErUUGiAiJigkFzkwMQMR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AGwAaQBiADIALgA1AC4ANQA4ADMAMgA5AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEoAYQBuACAASwBvAHYAYQByAGkAawBKAGEAbgAgAEsAbwB2AGEAcgBpAGsAdwB3AHcALgBnAGwAeQBwAGgAaQBjAG8AbgBzAC4AYwBvAG0AdwB3AHcALgBnAGwAeQBwAGgAaQBjAG8AbgBzAC4AYwBvAG0AdwB3AHcALgBnAGwAeQBwAGgAaQBjAG8AbgBzAC4AYwBvAG0AVwBlAGIAZgBvAG4AdAAgADEALgAwAE0AbwBuACAAUwBlAHAAIAAxADYAIAAxADUAOgA1ADQAOgAzADcAIAAyADAAMQAzAAIAAAAAAAD/tQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAA2wAAAQIBAwADAA0ADgEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgDvARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wZnbHlwaDEHdW5pMDAwRAd1bmkwMEEwB3VuaTIwMDAHdW5pMjAwMQd1bmkyMDAyB3VuaTIwMDMHdW5pMjAwNAd1bmkyMDA1B3VuaTIwMDYHdW5pMjAwNwd1bmkyMDA4B3VuaTIwMDkHdW5pMjAwQQd1bmkyMDJGB3VuaTIwNUYERXVybwd1bmkyNjAxB3VuaTI3MDkHdW5pMjcwRgd1bmlFMDAwB3VuaUUwMDEHdW5pRTAwMgd1bmlFMDAzB3VuaUUwMDUHdW5pRTAwNgd1bmlFMDA3B3VuaUUwMDgHdW5pRTAwOQd1bmlFMDEwB3VuaUUwMTEHdW5pRTAxMgd1bmlFMDEzB3VuaUUwMTQHdW5pRTAxNQd1bmlFMDE2B3VuaUUwMTcHdW5pRTAxOAd1bmlFMDE5B3VuaUUwMjAHdW5pRTAyMQd1bmlFMDIyB3VuaUUwMjMHdW5pRTAyNAd1bmlFMDI1B3VuaUUwMjYHdW5pRTAyNwd1bmlFMDI4B3VuaUUwMjkHdW5pRTAzMAd1bmlFMDMxB3VuaUUwMzIHdW5pRTAzMwd1bmlFMDM0B3VuaUUwMzUHdW5pRTAzNgd1bmlFMDM3B3VuaUUwMzgHdW5pRTAzOQd1bmlFMDQwB3VuaUUwNDEHdW5pRTA0Mgd1bmlFMDQzB3VuaUUwNDQHdW5pRTA0NQd1bmlFMDQ2B3VuaUUwNDcHdW5pRTA0OAd1bmlFMDQ5B3VuaUUwNTAHdW5pRTA1MQd1bmlFMDUyB3VuaUUwNTMHdW5pRTA1NAd1bmlFMDU1B3VuaUUwNTYHdW5pRTA1Nwd1bmlFMDU4B3VuaUUwNTkHdW5pRTA2MAd1bmlFMDYyB3VuaUUwNjMHdW5pRTA2NAd1bmlFMDY1B3VuaUUwNjYHdW5pRTA2Nwd1bmlFMDY4B3VuaUUwNjkHdW5pRTA3MAd1bmlFMDcxB3VuaUUwNzIHdW5pRTA3Mwd1bmlFMDc0B3VuaUUwNzUHdW5pRTA3Ngd1bmlFMDc3B3VuaUUwNzgHdW5pRTA3OQd1bmlFMDgwB3VuaUUwODEHdW5pRTA4Mgd1bmlFMDgzB3VuaUUwODQHdW5pRTA4NQd1bmlFMDg2B3VuaUUwODcHdW5pRTA4OAd1bmlFMDg5B3VuaUUwOTAHdW5pRTA5MQd1bmlFMDkyB3VuaUUwOTMHdW5pRTA5NAd1bmlFMDk1B3VuaUUwOTYHdW5pRTA5Nwd1bmlFMTAxB3VuaUUxMDIHdW5pRTEwMwd1bmlFMTA0B3VuaUUxMDUHdW5pRTEwNgd1bmlFMTA3B3VuaUUxMDgHdW5pRTEwOQd1bmlFMTEwB3VuaUUxMTEHdW5pRTExMgd1bmlFMTEzB3VuaUUxMTQHdW5pRTExNQd1bmlFMTE2B3VuaUUxMTcHdW5pRTExOAd1bmlFMTE5B3VuaUUxMjAHdW5pRTEyMQd1bmlFMTIyB3VuaUUxMjMHdW5pRTEyNAd1bmlFMTI1B3VuaUUxMjYHdW5pRTEyNwd1bmlFMTI4B3VuaUUxMjkHdW5pRTEzMAd1bmlFMTMxB3VuaUUxMzIHdW5pRTEzMwd1bmlFMTM0B3VuaUUxMzUHdW5pRTEzNgd1bmlFMTM3B3VuaUUxMzgHdW5pRTEzOQd1bmlFMTQwB3VuaUUxNDEHdW5pRTE0Mgd1bmlFMTQzB3VuaUUxNDQHdW5pRTE0NQd1bmlFMTQ2B3VuaUUxNDgHdW5pRTE0OQd1bmlFMTUwB3VuaUUxNTEHdW5pRTE1Mgd1bmlFMTUzB3VuaUUxNTQHdW5pRTE1NQd1bmlFMTU2B3VuaUUxNTcHdW5pRTE1OAd1bmlFMTU5B3VuaUUxNjAHdW5pRTE2MQd1bmlFMTYyB3VuaUUxNjMHdW5pRTE2NAd1bmlFMTY1B3VuaUUxNjYHdW5pRTE2Nwd1bmlFMTY4B3VuaUUxNjkHdW5pRTE3MAd1bmlFMTcxB3VuaUUxNzIHdW5pRTE3Mwd1bmlFMTc0B3VuaUUxNzUHdW5pRTE3Ngd1bmlFMTc3B3VuaUUxNzgHdW5pRTE3OQd1bmlFMTgwB3VuaUUxODEHdW5pRTE4Mgd1bmlFMTgzB3VuaUUxODQHdW5pRTE4NQd1bmlFMTg2B3VuaUUxODcHdW5pRTE4OAd1bmlFMTg5B3VuaUUxOTAHdW5pRTE5MQd1bmlFMTkyB3VuaUUxOTMHdW5pRTE5NAd1bmlFMTk1B3VuaUUxOTcHdW5pRTE5OAd1bmlFMTk5B3VuaUUyMDC4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAAVI3Yf0AAA==","glyphicons-halflings-regular.woff":"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"} diff --git a/docs/assets/js/uglify.js b/docs/assets/js/uglify.js new file mode 100644 index 000000000..5235dea68 --- /dev/null +++ b/docs/assets/js/uglify.js @@ -0,0 +1,14 @@ +/** @license uglifyweb Copyright (c) 2011, The Dojo Foundation All Rights Reserved. + * The parts that are unique to this repo (not much, just some wrapper code) are + * released under the new BSD and MIT licenses. + * + * This file includes UglifyJS and some parts of es5-shim, both which have + * their own licenses: + * + * https://github.com/mishoo/UglifyJS (BSD) + * https://github.com/kriskowal/es5-shim (MIT) + * + * More info on the project: https://github.com/jrburke/uglifyweb + */ + +(function(){var a=Object.prototype.toString,b="a"[0]!="a",c=function(a){if(a==null)throw new TypeError;return b&&typeof a=="string"&&a?a.split(""):Object(a)};Array.prototype.forEach||(Array.prototype.forEach=function(a){var b=c(this),d=arguments[1],e=0,f=b.length>>>0;while(e>>0;if(!d&&arguments.length==1)throw new TypeError;var e=0,f;if(arguments.length<2){do{if(e in b){f=b[e++];break}if(++e>=d)throw new TypeError}while(!0)}else f=arguments[1];for(;e0&&(a.splice(c-1,2),c-=2);else break;a=a.join("/")}return a}function h(a,d){return function(){return c.apply(null,b.call(arguments,0).concat([a,d]))}}function i(a){return function(b){return g(b,a)}}function j(b){return function(c){a[b]=c}}function k(b,c){var d,e,f=b.indexOf("!");return f!==-1?(d=g(b.slice(0,f),c),b=b.slice(f+1),e=a[d],e&&e.normalize?b=e.normalize(b,i(c)):b=g(b,c)):b=g(b,c),{f:d?d+"!"+b:b,n:b,p:e}}function l(b,c,d,e){var f=[],g,i,l,m,n,o;e||(e=b);if(typeof d=="function"){if(c)for(m=0;m=48&&a<=57}function t(a){return s(a)||r(a)}function u(a){return q.non_spacing_mark.test(a)||q.space_combining_mark.test(a)}function v(a){return q.connector_punctuation.test(a)}function w(a){return a=="$"||a=="_"||r(a)}function x(a){return w(a)||u(a)||s(a)||v(a)||a=="‌"||a=="‍"}function y(a){if(i.test(a))return parseInt(a.substr(2),16);if(j.test(a))return parseInt(a.substr(1),8);if(k.test(a))return parseFloat(a)}function z(a,b,c,d){this.message=a,this.line=b,this.col=c,this.pos=d,this.stack=(new Error).stack}function A(a,b,c,d){throw new z(a,b,c,d)}function B(a,b,c){return a.type==b&&(c==null||a.value==c)}function D(a){function c(){return b.text.charAt(b.pos)}function e(a,c){var d=b.text.charAt(b.pos++);if(a&&!d)throw C;return d=="\n"?(b.newline_before=b.newline_before||!c,++b.line,b.col=0):++b.col,d}function i(){return!b.peek()}function j(a,c){var d=b.text.indexOf(a,b.pos);if(c&&d==-1)throw C;return d}function k(){b.tokline=b.line,b.tokcol=b.col,b.tokpos=b.pos}function p(a,c,d){b.regex_allowed=a=="operator"&&!S(F,c)||a=="keyword"&&S(f,c)||a=="punc"&&S(n,c);var e={type:a,value:c,line:b.tokline,col:b.tokcol,pos:b.tokpos,nlb:b.newline_before};return d||(e.comments_before=b.comments_before,b.comments_before=[]),b.newline_before=!1,e}function q(){while(S(m,c()))e()}function r(a){var b="",d=c(),f=0;while(d&&a(d,f++))b+=e(),d=c();return b}function u(a){A(a,b.tokline,b.tokcol,b.tokpos)}function v(a){var b=!1,c=!1,d=!1,e=a==".",f=r(function(f,g){return f=="x"||f=="X"?d?!1:d=!0:!!d||f!="E"&&f!="e"?f=="-"?c||g==0&&!a?!0:!1:f=="+"?c:(c=!1,f=="."?!e&&!d?e=!0:!1:t(f)):b?!1:b=c=!0});a&&(f=a+f);var g=y(f);if(!isNaN(g))return p("num",g);u("Invalid syntax: "+f)}function z(a){var b=e(!0,a);switch(b){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"v":return" ";case"f":return"\f";case"0":return"\0";case"x":return String.fromCharCode(B(2));case"u":return String.fromCharCode(B(4));case"\n":return"";default:return b}}function B(a){var b=0;for(;a>0;--a){var c=parseInt(e(!0),16);isNaN(c)&&u("Invalid hex-character pattern in string"),b=b<<4|c}return b}function D(){return N("Unterminated string constant",function(){var a=e(),b="";for(;;){var c=e(!0);if(c=="\\"){var d=0,f=null;c=r(function(a){if(a>="0"&&a<="7"){if(!f)return f=a,++d;if(f<="3"&&d<=2)return++d;if(f>="4"&&d<=1)return++d}return!1}),d>0?c=String.fromCharCode(parseInt(c,8)):c=z(!0)}else if(c==a)break;b+=c}return p("string",b)})}function E(){e();var a=j("\n"),c;return a==-1?(c=b.text.substr(b.pos),b.pos=b.text.length):(c=b.text.substring(b.pos,a),b.pos=a),p("comment1",c,!0)}function G(){return e(),N("Unterminated multiline comment",function(){var a=j("*/",!0),c=b.text.substring(b.pos,a),d=p("comment2",c,!0);return b.pos=a+2,b.line+=c.split("\n").length-1,b.newline_before=c.indexOf("\n")>=0,/^@cc_on/i.test(c)&&(T("WARNING: at line "+b.line),T('*** Found "conditional comment": '+c),T("*** UglifyJS DISCARDS ALL COMMENTS. This means your code might no longer work properly in Internet Explorer.")),d})}function H(){var a=!1,b="",d;while((d=c())!=null)if(!a)if(d=="\\")a=!0,e();else if(x(d))b+=e();else break;else d!="u"&&u("Expecting UnicodeEscapeSequence -- uXXXX"),d=z(),x(d)||u("Unicode char: "+d.charCodeAt(0)+" is not valid in identifier"),b+=d,a=!1;return b}function I(a){return N("Unterminated regular expression",function(){var b=!1,c,d=!1;while(c=e(!0))if(b)a+="\\"+c,b=!1;else if(c=="[")d=!0,a+=c;else if(c=="]"&&d)d=!1,a+=c;else{if(c=="/"&&!d)break;c=="\\"?b=!0:a+=c}var f=H();return p("regexp",[a,f])})}function J(a){function b(a){if(!c())return a;var d=a+c();return S(l,d)?(e(),b(d)):a}return p("operator",b(a||e()))}function K(){e();var a=b.regex_allowed;switch(c()){case"/":return b.comments_before.push(E()),b.regex_allowed=a,O();case"*":return b.comments_before.push(G()),b.regex_allowed=a,O()}return b.regex_allowed?I(""):J("/")}function L(){return e(),s(c())?v("."):p("punc",".")}function M(){var a=H();return S(d,a)?S(l,a)?p("operator",a):S(g,a)?p("atom",a):p("keyword",a):p("name",a)}function N(a,b){try{return b()}catch(c){if(c===C)u(a);else throw c}}function O(a){if(a!=null)return I(a);q(),k();var b=c();if(!b)return p("eof");if(s(b))return v();if(b=='"'||b=="'")return D();if(S(o,b))return p("punc",e());if(b==".")return L();if(b=="/")return K();if(S(h,b))return J();if(b=="\\"||w(b))return M();u("Unexpected character '"+b+"'")}var b={text:a.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/^\uFEFF/,""),pos:0,tokpos:0,line:0,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]};return O.context=function(a){return a&&(b=a),b},O}function K(a,b,c){this.name=a,this.start=b,this.end=c}function L(a,b,c){function e(a,b){return B(d.token,a,b)}function f(){return d.peeked||(d.peeked=d.input())}function g(){return d.prev=d.token,d.peeked?(d.token=d.peeked,d.peeked=null):d.token=d.input(),d.token}function h(){return d.prev}function i(a,b,c,e){var f=d.input.context();A(a,b!=null?b:f.tokline,c!=null?c:f.tokcol,e!=null?e:f.tokpos)}function j(a,b){i(b,a.line,a.col)}function k(a){a==null&&(a=d.token),j(a,"Unexpected token: "+a.type+" ("+a.value+")")}function l(a,b){if(e(a,b))return g();j(d.token,"Unexpected token "+d.token.type+", expected "+a)}function m(a){return l("punc",a)}function n(){return!b&&(d.token.nlb||e("eof")||e("punc","}"))}function o(){e("punc",";")?g():n()||k()}function p(){return P(arguments)}function q(){m("(");var a=bk();return m(")"),a}function r(a,b,c){return a instanceof K?a:new K(a,b,c)}function s(a){return c?function(){var b=d.token,c=a.apply(this,arguments);return c[0]=r(c[0],b,h()),c}:a}function u(a){d.labels.push(a);var c=d.token,e=t();return b&&!S(I,e[0])&&k(c),d.labels.pop(),p("label",a,e)}function v(){return p("stat",N(bk,o))}function w(a){var b;return n()||(b=e("name")?d.token.value:null),b!=null?(g(),R(b,d.labels)||i("Label "+b+" without matching loop or statement")):d.in_loop==0&&i(a+" not inside a loop or switch"),o(),p(a,b)}function x(){m("(");var a=null;if(!e("punc",";")){a=e("keyword","var")?(g(),V(!0)):bk(!0,!0);if(e("operator","in"))return z(a)}return y(a)}function y(a){m(";");var b=e("punc",";")?null:bk();m(";");var c=e("punc",")")?null:bk();return m(")"),p("for",a,b,c,bl(t))}function z(a){var b=a[0]=="var"?p("name",a[1][0]):a;g();var c=bk();return m(")"),p("for-in",a,b,c,bl(t))}function L(){var a=q(),b=t(),c;return e("keyword","else")&&(g(),c=t()),p("if",a,b,c)}function O(){m("{");var a=[];while(!e("punc","}"))e("eof")&&k(),a.push(t());return g(),a}function T(){var a=O(),b,c;if(e("keyword","catch")){g(),m("("),e("name")||i("Name expected");var f=d.token.value;g(),m(")"),b=[f,O()]}return e("keyword","finally")&&(g(),c=O()),!b&&!c&&i("Missing catch/finally blocks"),p("try",a,b,c)}function U(a){var b=[];for(;;){e("name")||k();var c=d.token.value;g(),e("operator","=")?(g(),b.push([c,bk(!1,a)])):b.push([c]);if(!e("punc",","))break;g()}return b}function V(a){return p("var",U(a))}function W(){return p("const",U())}function X(){var a=Y(!1),b;return e("punc","(")?(g(),b=Z(")")):b=[],bc(p("new",a,b),!0)}function Z(a,b,c){var d=!0,f=[];while(!e("punc",a)){d?d=!1:m(",");if(b&&e("punc",a))break;e("punc",",")&&c?f.push(["atom","undefined"]):f.push(bk(!1))}return g(),f}function $(){return p("array",Z("]",!b,!0))}function _(){var a=!0,c=[];while(!e("punc","}")){a?a=!1:m(",");if(!b&&e("punc","}"))break;var f=d.token.type,h=ba();f!="name"||h!="get"&&h!="set"||!!e("punc",":")?(m(":"),c.push([h,bk(!1)])):c.push([bb(),C(!1),h])}return g(),p("object",c)}function ba(){switch(d.token.type){case"num":case"string":return N(d.token.value,g)}return bb()}function bb(){switch(d.token.type){case"name":case"operator":case"keyword":case"atom":return N(d.token.value,g);default:k()}}function bc(a,b){return e("punc",".")?(g(),bc(p("dot",a,bb()),b)):e("punc","[")?(g(),bc(p("sub",a,N(bk,M(m,"]"))),b)):b&&e("punc","(")?(g(),bc(p("call",a,Z(")")),!0)):a}function bd(a){if(e("operator")&&S(E,d.token.value))return be("unary-prefix",N(d.token.value,g),bd(a));var b=Y(a);while(e("operator")&&S(F,d.token.value)&&!d.token.nlb)b=be("unary-postfix",d.token.value,b),g();return b}function be(a,b,c){return(b=="++"||b=="--")&&!bi(c)&&i("Invalid use of "+b+" operator"),p(a,b,c)}function bf(a,b,c){var f=e("operator")?d.token.value:null;f&&f=="in"&&c&&(f=null);var h=f!=null?H[f]:null;if(h!=null&&h>b){g();var i=bf(bd(!0),h,c);return bf(p("binary",f,a,i),b,c)}return a}function bg(a){return bf(bd(!0),0,a)}function bh(a){var b=bg(a);if(e("operator","?")){g();var c=bk(!1);return m(":"),p("conditional",b,c,bk(!1,a))}return b}function bi(a){if(!b)return!0;switch(a[0]+""){case"dot":case"sub":case"new":case"call":return!0;case"name":return a[1]!="this"}}function bj(a){var b=bh(a),c=d.token.value;if(e("operator")&&S(G,c)){if(bi(b))return g(),p("assign",G[c],b,bj(a));i("Invalid assignment")}return b}function bl(a){try{return++d.in_loop,a()}finally{--d.in_loop}}var d={input:typeof a=="string"?D(a,!0):a,token:null,prev:null,peeked:null,in_function:0,in_loop:0,labels:[]};d.token=g();var t=s(function(){if(e("operator","/")||e("operator","/="))d.peeked=null,d.token=d.input(d.token.value.substr(1));switch(d.token.type){case"num":case"string":case"regexp":case"operator":case"atom":return v();case"name":return B(f(),"punc",":")?u(N(d.token.value,g,g)):v();case"punc":switch(d.token.value){case"{":return p("block",O());case"[":case"(":return v();case";":return g(),p("block");default:k()};case"keyword":switch(N(d.token.value,g)){case"break":return w("break");case"continue":return w("continue");case"debugger":return o(),p("debugger");case"do":return function(a){return l("keyword","while"),p("do",N(q,o),a)}(bl(t));case"for":return x();case"function":return C(!0);case"if":return L();case"return":return d.in_function==0&&i("'return' outside of function"),p("return",e("punc",";")?(g(),null):n()?null:N(bk,o));case"switch":return p("switch",q(),Q());case"throw":return d.token.nlb&&i("Illegal newline after 'throw'"),p("throw",N(bk,o));case"try":return T();case"var":return N(V,o);case"const":return N(W,o);case"while":return p("while",q(),bl(t));case"with":return p("with",q(),t());default:k()}}}),C=s(function(a){var b=e("name")?N(d.token.value,g):null;return a&&!b&&k(),m("("),p(a?"defun":"function",b,function(a,b){while(!e("punc",")"))a?a=!1:m(","),e("name")||k(),b.push(d.token.value),g();return g(),b}(!0,[]),function(){++d.in_function;var a=d.in_loop;d.in_loop=0;var b=O();return--d.in_function,d.in_loop=a,b}())}),Q=M(bl,function(){m("{");var a=[],b=null;while(!e("punc","}"))e("eof")&&k(),e("keyword","case")?(g(),b=[],a.push([bk(),b]),m(":")):e("keyword","default")?(g(),m(":"),b=[],a.push([null,b])):(b||k(),b.push(t()));return g(),a}),Y=s(function(a){if(e("operator","new"))return g(),X();if(e("punc")){switch(d.token.value){case"(":return g(),bc(N(bk,M(m,")")),a);case"[":return g(),bc($(),a);case"{":return g(),bc(_(),a)}k()}if(e("keyword","function"))return g(),bc(C(!1),a);if(S(J,d.token.type)){var b=d.token.type=="regexp"?p("regexp",d.token.value[0],d.token.value[1]):p(d.token.type,d.token.value);return bc(N(b,g),a)}k()}),bk=s(function(a,b){arguments.length==0&&(a=!0);var c=bj(b);return a&&e("punc",",")?(g(),p("seq",c,bk(!0,b))):c});return p("toplevel",function(a){while(!e("eof"))a.push(t());return a}([]))}function M(a){var b=P(arguments,1);return function(){return a.apply(this,b.concat(P(arguments)))}}function N(a){a instanceof Function&&(a=a());for(var b=1,c=arguments.length;--c>0;++b)arguments[b]();return a}function O(a){var b={};for(var c=0;c=0;)if(b[c]===a)return!0;return!1}function S(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var d=O(["break","case","catch","const","continue","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","throw","try","typeof","var","void","while","with"]),e=O(["abstract","boolean","byte","char","class","debugger","double","enum","export","extends","final","float","goto","implements","import","int","interface","long","native","package","private","protected","public","short","static","super","synchronized","throws","transient","volatile"]),f=O(["return","new","delete","throw","else","case"]),g=O(["false","null","true","undefined"]),h=O(Q("+-*&%=<>!?|~^")),i=/^0x[0-9a-f]+$/i,j=/^0[0-7]+$/,k=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,l=O(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),m=O(Q(" \n\r\t\f ​᠎              ")),n=O(Q("[{}(,.;:")),o=O(Q("[]{}(),;:")),p=O(Q("gmsiy")),q={letter:new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};z.prototype.toString=function(){return this.message+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")"+"\n\n"+this.stack};var C={},E=O(["typeof","void","delete","--","++","!","~","-","+"]),F=O(["--","++"]),G=function(a,b,c){while(c>=","<<=",">>>=","|=","^=","&="],{"=":!0},0),H=function(a,b){for(var c=0,d=1;c","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),I=O(["for","do","while","switch"]),J=O(["atom","num","string","regexp","name"]);K.prototype.toString=function(){return this.name};var T=function(){};b.tokenizer=D,b.parse=L,b.slice=P,b.curry=M,b.member=R,b.array_to_hash=O,b.PRECEDENCE=H,b.KEYWORDS_ATOM=g,b.RESERVED_WORDS=e,b.KEYWORDS=d,b.ATOMIC_START_TOKEN=J,b.OPERATORS=l,b.is_alphanumeric_char=t,b.set_logger=function(a){T=a}}),f("lib/process",["require","exports","module","./parse-js"],function(a,b,c){function i(){function a(a){return[this[0],K(a,function(a){var b=[a[0]];return a.length>1&&(b[1]=g(a[1])),b})]}function b(a){var b=[this[0]];return a!=null&&b.push(K(a,g)),b}function g(a){if(a==null)return null;try{f.push(a);var b=a[0],e=d[b];if(e){var g=e.apply(a,a.slice(1));if(g!=null)return g}return e=c[b],e.apply(a,a.slice(1))}finally{f.pop()}}function h(a){if(a==null)return null;try{return f.push(a),c[a[0]].apply(a,a.slice(1))}finally{f.pop()}}function i(a,b){var c={},e;for(e in a)J(a,e)&&(c[e]=d[e],d[e]=a[e]);var f=b();for(e in c)J(c,e)&&(c[e]?d[e]=c[e]:delete d[e]);return f}var c={string:function(a){return[this[0],a]},num:function(a){return[this[0],a]},name:function(a){return[this[0],a]},toplevel:function(a){return[this[0],K(a,g)]},block:b,splice:b,"var":a,"const":a,"try":function(a,b,c){return[this[0],K(a,g),b!=null?[b[0],K(b[1],g)]:null,c!=null?K(c,g):null]},"throw":function(a){return[this[0],g(a)]},"new":function(a,b){return[this[0],g(a),K(b,g)]},"switch":function(a,b){return[this[0],g(a),K(b,function(a){return[a[0]?g(a[0]):null,K(a[1],g)]})]},"break":function(a){return[this[0],a]},"continue":function(a){return[this[0],a]},conditional:function(a,b,c){return[this[0],g(a),g(b),g(c)]},assign:function(a,b,c){return[this[0],a,g(b),g(c)]},dot:function(a){return[this[0],g(a)].concat(e(arguments,1))},call:function(a,b){return[this[0],g(a),K(b,g)]},"function":function(a,b,c){return[this[0],a,b.slice(),K(c,g)]},defun:function(a,b,c){return[this[0],a,b.slice(),K(c,g)]},"if":function(a,b,c){return[this[0],g(a),g(b),g(c)]},"for":function(a,b,c,d){return[this[0],g(a),g(b),g(c),g(d)]},"for-in":function(a,b,c,d){return[this[0],g(a),g(b),g(c),g(d)]},"while":function(a,b){return[this[0],g(a),g(b)]},"do":function(a,b){return[this[0],g(a),g(b)]},"return":function(a){return[this[0],g(a)]},binary:function(a,b,c){return[this[0],a,g(b),g(c)]},"unary-prefix":function(a,b){return[this[0],a,g(b)]},"unary-postfix":function(a,b){return[this[0],a,g(b)]},sub:function(a,b){return[this[0],g(a),g(b)]},object:function(a){return[this[0],K(a,function(a){return a.length==2?[a[0],g(a[1])]:[a[0],g(a[1]),a[2]]})]},regexp:function(a,b){return[this[0],a,b]},array:function(a){return[this[0],K(a,g)]},stat:function(a){return[this[0],g(a)]},seq:function(){return[this[0]].concat(K(e(arguments),g))},label:function(a,b){return[this[0],a,g(b)]},"with":function(a,b){return[this[0],g(a),g(b)]},atom:function(a){return[this[0],a]}},d={},f=[];return{walk:g,dive:h,with_walkers:i,parent:function(){return f[f.length-2]},stack:function(){return f}}}function j(a){this.names={},this.mangled={},this.rev_mangled={},this.cname=-1,this.refs={},this.uses_with=!1,this.uses_eval=!1,this.parent=a,this.children=[],a?(this.level=a.level+1,a.children.push(this)):this.level=0}function l(a){function f(a){b=new j(b);var c=b.body=a();return c.scope=b,b=b.parent,c}function g(a,c){return b.define(a,c)}function h(a){b.refs[a]=!0}function k(a,b,c){var e=this[0]=="defun";return[this[0],e?g(a,"defun"):a,b,f(function(){return e||g(a,"lambda"),K(b,function(a){g(a,"arg")}),K(c,d)})]}function l(a){return function(b){K(b,function(b){g(b[0],a),b[1]&&h(b[0])})}}var b=null,c=i(),d=c.walk,e=[];return f(function(){function i(a,b){for(b=a.children.length;--b>=0;)i(a.children[b]);for(b in a.refs)if(J(a.refs,b))for(var c=a.has(b),d=a;d;d=d.parent){d.refs[b]=c;if(d===c)break}}var f=c.with_walkers({"function":k,defun:k,label:function(a,b){g(a,"label")},"break":function(a){a&&h(a)},"continue":function(a){a&&h(a)},"with":function(a,c){for(var d=b;d;d=d.parent)d.uses_with=!0},"var":l("var"),"const":l("const"),"try":function(a,b,c){if(b!=null)return[this[0],K(a,d),[g(b[0],"catch"),K(b[1],d)],c!=null?K(c,d):null]},name:function(a){a=="eval"&&e.push(b),h(a)}},function(){return d(a)});return K(e,function(a){if(!a.has("eval"))while(a)a.uses_eval=!0,a=a.parent}),i(b),f})}function m(a,b){function g(a,c){return!b.toplevel&&!e.parent?a:b.except&&f(a,b.except)?a:e.get_mangled(a,c)}function h(a){if(b.defines)return!e.has(a)&&J(b.defines,a)?b.defines[a]:null}function j(a,b,c){var f=this[0]=="defun",h;return a&&(f?a=g(a):(h={},!e.uses_eval&&!e.uses_with?a=h[a]=e.next_mangled():h[a]=a)),c=k(c.scope,function(){return b=K(b,function(a){return g(a)}),K(c,d)},h),[this[0],a,b,c]}function k(a,b,c){var d=e;e=a;if(c)for(var f in c)J(c,f)&&a.set_mangle(f,c[f]);for(var f in a.names)J(a.names,f)&&g(f,!0);var h=b();return h.scope=a,e=d,h}function m(a){return[this[0],K(a,function(a){return[g(a[0]),d(a[1])]})]}var c=i(),d=c.walk,e;return b=b||{},c.with_walkers({"function":j,defun:function(){var a=j.apply(this,arguments);switch(c.parent()[0]){case"toplevel":case"function":case"defun":return K.at_top(a)}return a},label:function(a,b){return[this[0],g(a),d(b)]},"break":function(a){if(a)return[this[0],g(a)]},"continue":function(a){if(a)return[this[0],g(a)]},"var":m,"const":m,name:function(a){return h(a)||[this[0],g(a)]},"try":function(a,b,c){return[this[0],K(a,d),b!=null?[g(b[0]),K(b[1],d)]:null,c!=null?K(c,d):null]},toplevel:function(a){var b=this;return k(b.scope,function(){return[b[0],K(a,d)]})}},function(){return d(l(a))})}function o(a,b){return E(a).length>E(b[0]=="stat"?b[1]:b).length?b:a}function p(a){return a[0]=="block"&&a[1]&&a[1].length>0?a[1][a[1].length-1]:a}function q(a){if(a)switch(p(a)[0]){case"return":case"break":case"continue":case"throw":return!0}}function r(a){return a[0]=="unary-prefix"&&f(a[1],["!","delete"])||a[0]=="binary"&&f(a[1],["in","instanceof","==","!=","===","!==","<","<=",">=",">"])||a[0]=="binary"&&f(a[1],["&&","||"])&&r(a[2])&&r(a[3])||a[0]=="conditional"&&r(a[2])&&r(a[3])||a[0]=="assign"&&a[1]===!0&&r(a[3])||a[0]=="seq"&&r(a[a.length-1])}function s(a){return!a||a[0]=="block"&&(!a[1]||a[1].length==0)}function t(a){return a[0]=="string"||a[0]=="unary-prefix"&&a[1]=="typeof"||a[0]=="binary"&&a[1]=="+"&&(t(a[2])||t(a[3]))}function v(a){s(a)||n("Dropping unreachable code: "+E(a,!0))}function w(a){function d(a){a=K(a,c);for(var b=0;b0&&(x(["block",a],function(a,b,c,d){if(a[0]=="assign"&&a[1]===!0&&a[2][0]=="name"&&J(f,a[2][1])){for(var e=g.length;--e>=0;)if(g[e][0]==a[2][1]){g[e][1]&&c(),g[e][1]=a[3],g.push(g.splice(e,1)[0]);break}var h=b.parent();if(h[0]=="seq"){var i=h[2];i.unshift(0,h.length),h.splice.apply(h,i)}else h[0]=="stat"?h.splice(0,h.length,"block"):c();d()}c()}),a.unshift(["var",g])),d=e,a}function f(a){var c=null;for(var d=a.length;--d>=0;){var e=a[d];if(!e[1])continue;e=["assign",!0,["name",e[0]],e[1]],c==null?c=e:c=["seq",e,c]}return c==null?b.parent()[0]=="for-in"?["name",a[0][0]]:K.skip:["stat",c]}function g(a){return[this[0],e(a,this.scope)]}var b=i(),c=b.walk,d;return b.with_walkers({"function":function(a,b,c){for(var d=b.length;--d>=0&&!c.scope.references(b[d]);)b.pop();return c.scope.references(a)||(a=null),[this[0],a,b,e(c,c.scope)]},defun:function(a,b,c){if(!d.references(a))return K.skip;for(var f=b.length;--f>=0&&!c.scope.references(b[f]);)b.pop();return[this[0],a,b,e(c,c.scope)]},"var":f,toplevel:g},function(){return c(l(a))})}function z(a,b){function h(a){var c=["unary-prefix","!",a];switch(a[0]){case"unary-prefix":return a[1]=="!"&&r(a[2])?a[2]:c;case"seq":return a=e(a),a[a.length-1]=h(a[a.length-1]),a;case"conditional":return o(c,["conditional",a[1],h(a[2]),h(a[3])]);case"binary":var d=a[1],f=a[2],g=a[3];if(!b.keep_comps)switch(d){case"<=":return["binary",">",f,g];case"<":return["binary",">=",f,g];case">=":return["binary","<",f,g];case">":return["binary","<=",f,g]}switch(d){case"==":return["binary","!=",f,g];case"!=":return["binary","==",f,g];case"===":return["binary","!==",f,g];case"!==":return["binary","===",f,g];case"&&":return o(c,["binary","||",h(f),h(g)]);case"||":return o(c,["binary","&&",h(f),h(g)])}}return c}function j(a,b,c){var d=function(){return a[0]=="unary-prefix"&&a[1]=="!"?c?["conditional",a[2],c,b]:["binary","||",a[2],b]:c?o(["conditional",a,b,c],["conditional",h(a),c,b]):["binary","&&",a,b]};return u(a,function(a,d){return v(d?c:b),d?b:c},d)}function k(a,b){var c=g;g=a;var d=b();return d.scope=a,g=c,d}function m(a){return a!=null&&a[0]=="block"&&a[1]&&(a[1].length==1?a=a[1][0]:a[1].length==0&&(a=["block"])),a}function p(a,b,c){var d=this[0]=="defun";return c=k(c.scope,function(){var b=t(c,"lambda");return!d&&a&&!g.references(a)&&(a=null),b}),[this[0],a,b,c]}function t(a,c){return a=K(a,d),a=a.reduce(function(a,b){return b[0]=="block"?b[1]&&a.push.apply(a,b[1]):a.push(b),a},[]),a=function(b,c){return a.forEach(function(a){c&&(a[0]=="var"&&c[0]=="var"||a[0]=="const"&&c[0]=="const")?c[1]=c[1].concat(a[1]):(b.push(a),c=a)}),b}([]),b.dead_code&&(a=function(c,d){return a.forEach(function(a){d?a[0]=="function"||a[0]=="defun"?c.push(a):a[0]=="var"||a[0]=="const"?(b.no_warnings||n("Variables declared in unreachable code"),a[1]=K(a[1],function(a){return a[1]&&!b.no_warnings&&v(["assign",!0,["name",a[0]],a[1]]),[a[0]]}),c.push(a)):b.no_warnings||v(a):(c.push(a),f(a[0],["return","throw","break","continue"])&&(d=!0))}),c}([])),b.make_seqs&&(a=function(b,c){return a.forEach(function(a){c&&c[0]=="stat"&&a[0]=="stat"?c[1]=["seq",c[1],a[1]]:(b.push(a),c=a)}),b.length>=2&&b[b.length-2][0]=="stat"&&(b[b.length-1][0]=="return"||b[b.length-1][0]=="throw")&&b[b.length-1][1]&&b.splice(b.length-2,2,[b[b.length-1][0],["seq",b[b.length-2][1],b[b.length-1][1]]]),b}([])),a}function x(a,b,c){return u(a,function(a,e){return e?(b=d(b),v(c),b||["block"]):(c=d(c),v(b),c||["block"])},function(){return y(a,b,c)})}function y(a,b,c){a=d(a),b=d(b),c=d(c),s(b)?(a=h(a),b=c,c=null):s(c)?c=null:function(){var d=E(a),e=h(a),f=E(e);if(f.length0){var f=e[e.length-1];f[0]=="break"&&!f[1]&&e.pop()}return[a[0]?d(a[0]):null,e]})]},"function":p,defun:p,block:function(a){if(a)return m(["block",t(a)])},binary:function(a,b,c){return u(["binary",a,d(b),d(c)],function(a){return o(d(a),this)},function(){return function(){if(a!="=="&&a!="!=")return;var e=d(b),f=d(c);return e&&e[0]=="unary-prefix"&&e[1]=="!"&&e[2][0]=="num"?b=["num",+!e[2][1]]:f&&f[0]=="unary-prefix"&&f[1]=="!"&&f[2][0]=="num"&&(c=["num",+!f[2][1]]),["binary",a,b,c]}()||this})},conditional:function(a,b,c){return j(d(a),d(b),d(c))},"try":function(a,b,c){return["try",t(a),b!=null?[b[0],t(b[1])]:null,c!=null?t(c):null]},"unary-prefix":function(a,b){b=d(b);var c=["unary-prefix",a,b];return a=="!"&&(c=o(c,h(b))),u(c,function(a,b){return d(a)},function(){return c})},name:function(a){switch(a){case"true":return["unary-prefix","!",["num",0]];case"false":return["unary-prefix","!",["num",1]]}},"while":z,assign:function(a,b,c){b=d(b),c=d(c);var e=["+","-","/","*","%",">>","<<",">>>","|","^","&"];return a===!0&&b[0]==="name"&&c[0]==="binary"&&~e.indexOf(c[1])&&c[2][0]==="name"&&c[2][1]===b[1]?[this[0],c[1],b,c[3]]:[this[0],a,b,c]}},function(){for(var b=0;b<2;++b)a=w(a),a=l(a),a=d(a);return a})}function B(a,b){var c=0,d=0;return a=a.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g,function(a){switch(a){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case'"':return++c,'"';case"'":return++d,"'";case"\0":return"\\0"}return a}),b&&(a=C(a)),c>d?"'"+a.replace(/\x27/g,"\\'")+"'":'"'+a.replace(/\x22/g,'\\"')+'"'}function C(a){return a.replace(/[\u0080-\uffff]/g,function(a){var b=a.charCodeAt(0).toString(16);while(b.length<4)b="0"+b;return"\\u"+b})}function E(a,b){function m(a){var c=B(a,b.ascii_only);return b.inline_script&&(c=c.replace(/<\x2fscript([>/\t\n\f\r ])/gi,"<\\/script$1")),c}function n(a){return a=a.toString(),b.ascii_only&&(a=C(a)),a}function o(a){return a==null&&(a=""),c&&(a=G(" ",b.indent_start+j*b.indent_level)+a),a}function p(a,b){b==null&&(b=1),j+=b;try{return a.apply(null,e(arguments,1))}finally{j-=b}}function q(a){if(c)return a.join(" ");var b=[];for(var d=0;db.length?b:a}return u([a[0],u(a.slice(1))])}function v(a){if(a[0]=="function"||a[0]=="object"){var b=e(x.stack()),c=b.pop(),d=b.pop();while(d){if(d[0]=="stat")return!0;if((d[0]=="seq"||d[0]=="call"||d[0]=="dot"||d[0]=="sub"||d[0]=="conditional")&&d[1]===c||(d[0]=="binary"||d[0]=="assign"||d[0]=="unary-postfix")&&d[2]===c)c=d,d=b.pop();else return!1}}return!J(A,a[0])}function w(a){var b=a.toString(10),c=[b.replace(/^0\./,".")],d;return Math.floor(a)===a?(a<0?c.push("-0x"+(-a).toString(16).toLowerCase(),"-0"+(-a).toString(8)):c.push("0x"+a.toString(16).toLowerCase(),"0"+a.toString(8)),(d=/^(.*?)(0+)$/.exec(a))&&c.push(d[1]+"e"+d[2].length)):(d=/^0?\.(0+)(.*)$/.exec(a))&&c.push(d[2]+"e-"+(d[1].length+d[2].length),b.substr(b.indexOf("."))),u(c)}function z(a){if(a==null)return";";if(a[0]=="do")return N([a]);var b=a;for(;;){var c=b[0];if(c=="if"){if(!b[3])return y(["block",[a]]);b=b[3]}else if(c=="while"||c=="do")b=b[2];else if(c=="for"||c=="for-in")b=b[4];else break}return y(a)}function E(a,b,c,d){var e=d||"function";return a&&(e+=" "+n(a)),e+="("+r(K(b,n))+")",e=q([e,N(c)]),v(this)?"("+e+")":e}function F(a){switch(a[0]){case"with":case"while":return s(a[2]);case"for":case"for-in":return s(a[4]);case"if":if(s(a[2])&&!a[3])return!0;if(a[3])return s(a[3])?!0:F(a[3]);return F(a[2])}}function L(a,b){for(var d=[],e=a.length-1,f=0;f<=e;++f){var g=a[f],h=y(g);h!=";"&&(!c&&f==e&&!F(g)&&(h=h.replace(/;+\s*$/,"")),d.push(h))}return b?d:K(d,o)}function M(a){var b=a.length;return b==0?"{}":"{"+k+K(a,function(a,d){var e=a[1].length>0,f=p(function(){return o(a[0]?q(["case",y(a[0])+":"]):"default:")},.5)+(e?k+p(function(){return L(a[1]).join(k)}):"");return!c&&e&&d0?o(a):a}).join(k)},block:N,"var":function(a){return"var "+r(K(a,O))+";"},"const":function(a){return"const "+r(K(a,O))+";"},"try":function(a,b,c){var d=["try",N(a)];return b&&d.push("catch","("+b[0]+")",N(b[1])),c&&d.push("finally",N(c)),q(d)},"throw":function(a){return q(["throw",y(a)])+";"},"new":function(a,b){return b=b.length>0?"("+r(K(b,function(a){return t(a,"seq")}))+")":"",q(["new",t(a,"seq","binary","conditional","assign",function(a){var b=i(),c={};try{b.with_walkers({call:function(){throw c},"function":function(){return this}},function(){b.walk(a)})}catch(d){if(d===c)return!0;throw d}})+b])},"switch":function(a,b){return q(["switch","("+y(a)+")",M(b)])},"break":function(a){var b="break";return a!=null&&(b+=" "+n(a)),b+";"},"continue":function(a){var b="continue";return a!=null&&(b+=" "+n(a)),b+";"},conditional:function(a,b,c){return q([t(a,"assign","seq","conditional"),"?",t(b,"seq"),":",t(c,"seq")])},assign:function(a,b,c){return a&&a!==!0?a+="=":a="=",q([y(b),a,t(c,"seq")])},dot:function(a){var b=y(a),c=1;a[0]=="num"?/\./.test(a[1])||(b+="."):v(a)&&(b="("+b+")");while(cg[d[1]]||d[0]=="function"&&v(this))h="("+h+")";return f(e[0],["assign","conditional","seq"])||e[0]=="binary"&&g[a]>=g[e[1]]&&(e[1]!=a||!f(a,["&&","||","*"]))?i="("+i+")":!c&&b.inline_script&&(a=="<"||a=="<<")&&e[0]=="regexp"&&/^script/i.test(e[1])&&(i=" "+i),q([h,a,i])},"unary-prefix":function(a,b){var c=y(b);return b[0]=="num"||b[0]=="unary-prefix"&&!J(h,a+b[1])||!v(b)||(c="("+c+")"),a+(d.is_alphanumeric_char(a.charAt(0))?" ":"")+c},"unary-postfix":function(a,b){var c=y(b);return b[0]=="num"||b[0]=="unary-postfix"&&!J(h,a+b[1])||!v(b)||(c="("+c+")"),c+a},sub:function(a,b){var c=y(a);return v(a)&&(c="("+c+")"),c+"["+y(b)+"]"},object:function(a){var d=v(this);if(a.length==0)return d?"({})":"{}";var e="{"+k+p(function(){return K(a,function(a){if(a.length==3)return o(E(a[0],a[1][2],a[1][3],a[2]));var d=a[0],e=t(a[1],"seq");return b.quote_keys?d=m(d):(typeof d=="number"||!c&&+d+""==d)&&parseFloat(d)>=0?d=w(+d):I(d)||(d=m(d)),o(q(c&&b.space_colon?[d,":",e]:[d+":",e]))}).join(","+k)})+k+o("}");return d?"("+e+")":e},regexp:function(a,b){return"/"+a+"/"+b},array:function(a){return a.length==0?"[]":q(["[",r(K(a,function(b,d){return!c&&b[0]=="atom"&&b[1]=="undefined"?d===a.length-1?",":"":t(b,"seq")})),"]"])},stat:function(a){return y(a).replace(/;*\s*$/,";")},seq:function(){return r(K(e(arguments),y))},label:function(a,b){return q([n(a),":",y(b)])},"with":function(a,b){return q(["with","("+y(a)+")",y(b)])},atom:function(a){return n(a)}},function(){return y(a)})}function F(a,b){var c=[0];return d.parse(function(){function h(a){return a.pos-f}function i(a){f=a.pos,c.push(f)}function j(){var a=e.apply(this,arguments);c:{if(g&&g.type=="keyword")break c;if(h(a)>b)switch(a.type){case"keyword":case"atom":case"name":case"punc":i(a);break c}}return g=a,a}var e=d.tokenizer(a),f=0,g;return j.context=function(){return e.context.apply(this,arguments)},j}()),c.map(function(b,d){return a.substring(b,c[d+1]||a.length)}).join("\n")}function G(a,b){if(b>0){if(b==1)return a;var c=G(a,b>>1);return c+=c,b&1&&(c+=a),c}return""}function H(a,b){var c={};a===!0&&(a={});for(var d in b)J(b,d)&&(c[d]=a&&J(a,d)?a[d]:b[d]);return c}function I(a){return/^[a-z_$][a-z0-9_$]*$/i.test(a)&&a!="this"&&!J(d.KEYWORDS_ATOM,a)&&!J(d.RESERVED_WORDS,a)&&!J(d.KEYWORDS,a)}function J(a,b){return Object.prototype.hasOwnProperty.call(a,b)}var d=a("./parse-js"),e=d.slice,f=d.member,g=d.PRECEDENCE,h=d.OPERATORS,k=function(){var a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";return function(b){var c="";do c=a.charAt(b%54)+c,b=Math.floor(b/54);while(b>0);return c}}();j.prototype={has:function(a){for(var b=this;b;b=b.parent)if(J(b.names,a))return b},has_mangled:function(a){for(var b=this;b;b=b.parent)if(J(b.rev_mangled,a))return b},toJSON:function(){return{names:this.names,uses_eval:this.uses_eval,uses_with:this.uses_with}},next_mangled:function(){for(;;){var a=k(++this.cname),b;b=this.has_mangled(a);if(b&&this.refs[b.rev_mangled[a]]===b)continue;b=this.has(a);if(b&&b!==this&&this.refs[a]===b&&!b.has_mangled(a))continue;if(J(this.refs,a)&&this.refs[a]==null)continue;if(!I(a))continue;return a}},set_mangle:function(a,b){return this.rev_mangled[b]=a,this.mangled[a]=b},get_mangled:function(a,b){if(this.uses_eval||this.uses_with)return a;var c=this.has(a);return c?J(c.mangled,a)?c.mangled[a]:b?c.set_mangle(a,c.next_mangled()):a:a},references:function(a){return a&&!this.parent||this.uses_with||this.uses_eval||this.refs[a]},define:function(a,b){if(a!=null){if(b=="var"||!J(this.names,a))this.names[a]=b||"var";return a}}};var n=function(){},u=function(){function b(c){switch(c[0]){case"string":case"num":return c[1];case"name":case"atom":switch(c[1]){case"true":return!0;case"false":return!1;case"null":return null}break;case"unary-prefix":switch(c[1]){case"!":return!b(c[2]);case"typeof":return typeof b(c[2]);case"~":return~b(c[2]);case"-":return-b(c[2]);case"+":return+b(c[2])}break;case"binary":var d=c[2],e=c[3];switch(c[1]){case"&&":return b(d)&&b(e);case"||":return b(d)||b(e);case"|":return b(d)|b(e);case"&":return b(d)&b(e);case"^":return b(d)^b(e);case"+":return b(d)+b(e);case"*":return b(d)*b(e);case"/":return b(d)/b(e);case"%":return b(d)%b(e);case"-":return b(d)-b(e);case"<<":return b(d)<>":return b(d)>>b(e);case">>>":return b(d)>>>b(e);case"==":return b(d)==b(e);case"===":return b(d)===b(e);case"!=":return b(d)!=b(e);case"!==":return b(d)!==b(e);case"<":return b(d)":return b(d)>b(e);case">=":return b(d)>=b(e);case"in":return b(d)in b(e);case"instanceof":return b(d)instanceof b(e)}}throw a}var a={};return function(c,d,e){try{var f=b(c),g;switch(typeof f){case"string":g=["string",f];break;case"number":g=["num",f];break;case"boolean":g=["name",String(f)];break;default:throw new Error("Can't handle constant of type: "+typeof f)}return d.call(c,g,f)}catch(h){if(h===a){if(c[0]!="binary"||c[1]!="==="&&c[1]!="!=="||!(t(c[2])&&t(c[3])||r(c[2])&&r(c[3]))){if(e&&c[0]=="binary"&&(c[1]=="||"||c[1]=="&&"))try{var i=b(c[2]);c=c[1]=="&&"&&(i?c[3]:i)||c[1]=="||"&&(i?i:c[3])||c}catch(j){}}else c[1]=c[1].substr(0,2);return e?e.call(c,c):null}throw h}}}(),A=d.array_to_hash(["name","array","object","string","dot","sub","call","regexp","defun"]),D=d.array_to_hash(["if","while","do","for","for-in","with"]),K;(function(){function b(a){this.v=a}function c(a){this.v=a}K=function(d,e,f){function j(){var j=e.call(f,d[i],i);j instanceof b?(j=j.v,j instanceof c?h.push.apply(h,j.v):h.push(j)):j!=a&&(j instanceof c?g.push.apply(g,j.v):g.push(j))}var g=[],h=[],i;if(d instanceof Array)for(i=0;i +
        + + +

        Available glyphs

        +

        Includes 200 glyphs in font format from the Glyphicon Halflings set. Glyphicons Halflings are normally not available for free, but their creator has made them available for Bootstrap free of cost. As a thank you, we only ask that you to include a link back to Glyphicons whenever possible.

        +
        +
          + {% for iconClassName in site.data.glyphicons %} +
        • + + glyphicon {{ iconClassName }} +
        • + {% endfor %} +
        +
        + + +

        How to use

        +

        For performance reasons, all icons require a base class and individual icon class. To use, place the following code just about anywhere. Be sure to leave a space between the icon and text for proper padding.

        +
        +

        Don't mix with other components

        +

        Icon classes cannot be combined with other elements. They are designed to be standalone elements.

        +
        +{% highlight html %} + +{% endhighlight %} + + +

        Examples

        +

        Use them in buttons, button groups for a toolbar, navigation, or prepended form inputs.

        +
        + + +
        +{% highlight html %} + +{% endhighlight %} + +
        + + + +
        + +

        Toggleable, contextual menu for displaying lists of links. Made interactive with the dropdown JavaScript plugin.

        + + +

        Wrap the dropdown's trigger and the dropdown menu within .dropdown, or another element that declares position: relative;. Then add the menu's HTML.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + +

        By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. Add .dropdown-menu-right to a .dropdown-menu to right align the dropdown menu.

        +
        +

        May require additional positioning

        +

        Dropdowns are automatically positioned via CSS within the normal flow of the document. This means dropdowns may be cropped by parents with certain overflow properties or appear out of bounds of the viewport. Address these issues on your own as they arise.

        +
        +
        +

        Deprecated .pull-right alignment

        +

        As of v3.1, we've deprecated .pull-right on dropdown menus. To right-align a menu, use .dropdown-menu-right. Right-aligned nav components in the navbar use a mixin version of this class to automatically align the menu. To override it, use .dropdown-menu-left.

        +
        +{% highlight html %} + +{% endhighlight %} + + +

        Add a header to label sections of actions in any dropdown menu.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + +

        Add .disabled to a <li> in the dropdown to disable the link.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} +
        + + + + +
        + +

        Group a series of buttons together on a single line with the button group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.

        + +
        +

        Tooltips & popovers in button groups require special setting

        +

        When using tooltips or popovers on elements within a .btn-group, you'll have to specify the option container: 'body' to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).

        +
        + +

        Basic example

        +

        Wrap a series of buttons with .btn in .btn-group.

        +
        +
        + + + +
        +
        +{% highlight html %} +
        + + + +
        +{% endhighlight %} + +

        Button toolbar

        +

        Combine sets of <div class="btn-group"> into a <div class="btn-toolbar"> for more complex components.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +

        Sizing

        +

        Instead of applying button sizing classes to every button in a group, just add .btn-group-* to the .btn-group.

        +
        + + + + +
        +{% highlight html %} +
        ...
        +
        ...
        +
        ...
        +
        ...
        +{% endhighlight %} + +

        Nesting

        +

        Place a .btn-group within another .btn-group when you want dropdown menus mixed with a series of buttons.

        +
        +
        + + + +
        + + +
        +
        +
        +{% highlight html %} +
        + + + +
        + + +
        +
        +{% endhighlight %} + +

        Vertical variation

        +

        Make a set of buttons appear vertically stacked rather than horizontally. Split button dropdowns are not supported here.

        +
        +
        + + +
        + + +
        + + +
        + + +
        +
        + + +
        +
        + + +
        +
        +
        +{% highlight html %} +
        + ... +
        +{% endhighlight %} + +

        Justified link variation

        +

        Make a group of buttons stretch at the same size to span the entire width of its parent. Also works with button dropdowns within the button group.

        + +
        +

        Handling borders

        +

        Due to the specific HTML and CSS used to justify buttons (namely display: table-cell), the borders between them are doubled. In regular button groups, margin-left: -1px is used to stack the borders instead of removing them. However, margin doesn't work with display: table-cell. As a result, depending on your customizations to Bootstrap, you may wish to remove or re-color the borders.

        +
        + +
        +

        Element-specific usage

        +

        This only works with <a> elements as the <button> doesn't pick up the styles we use to justify content (some display: table-cell;-fu).

        +
        + + +{% highlight html %} +
        + ... +
        +{% endhighlight %} + +
        + + + + +
        + +

        Use any button to trigger a dropdown menu by placing it within a .btn-group and providing the proper menu markup.

        + +
        +

        Plugin dependency

        +

        Button dropdowns require the dropdown plugin to be included in your version of Bootstrap.

        +
        + +

        Single button dropdowns

        +

        Turn a button into a dropdown toggle with some basic markup changes.

        + +{% highlight html %} + + +{% endhighlight %} + +

        Split button dropdowns

        +

        Similarly, create split button dropdowns with the same markup changes, only with a separate button.

        +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        +
        +{% highlight html %} + +
        + + + +
        +{% endhighlight %} + +

        Sizing

        +

        Button dropdowns work with buttons of all sizes.

        +
        + + + +
        +{% highlight html %} + +
        + + +
        + + +
        + + +
        + + +
        + + +
        +{% endhighlight %} + +

        Dropup variation

        +

        Trigger dropdown menus above elements by adding .dropup to the parent.

        +
        + +
        +{% highlight html %} +
        + + + +
        +{% endhighlight %} + +
        + + + + + +
        + +

        Extend form controls by adding text or buttons before, after, or on both sides of any text-based input. Use .input-group with an .input-group-addon to prepend or append elements to a .form-control.

        + +
        +

        Cross-browser compatibility

        +

        Avoid using <select> elements here as they cannot be fully styled in WebKit browsers.

        +
        +
        +

        Tooltips & popovers in input groups require special setting

        +

        When using tooltips or popovers on elements within an .input-group, you'll have to specify the option container: 'body' to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).

        +
        +
        +

        Don't mix with form groups

        +

        Do not apply input group classes directly to form groups. An input group is an isolated component.

        +
        + + +

        Basic example

        +

        Place one add-on or button on either side of an input. You may also place one on both sides of an input. We do not support multiple add-ons on a single side.

        +
        +
        + @ + +
        +
        +
        + + .00 +
        +
        +
        + $ + + .00 +
        +
        +{% highlight html %} +
        + @ + +
        + +
        + + .00 +
        + +
        + $ + + .00 +
        +{% endhighlight %} + + +

        Sizing

        +

        Add the relative form sizing classes to the .input-group itself and contents within will automatically resize—no need for repeating the form control size classes on each element.

        +
        +
        + @ + +
        +
        +
        + @ + +
        +
        +
        + @ + +
        +
        +{% highlight html %} +
        + @ + +
        + +
        + @ + +
        + +
        + @ + +
        +{% endhighlight %} + + +

        Checkboxes and radio addons

        +

        Place any checkbox or radio option within an input group's addon instead of text.

        +
        +
        +
        +
        + + + + +
        +
        +
        +
        + + + + +
        +
        +
        +
        +{% highlight html %} +
        +
        +
        + + + + +
        +
        +
        +
        + + + + +
        +
        +
        +{% endhighlight %} + + +

        Button addons

        +

        Buttons in input groups are a bit different and require one extra level of nesting. Instead of .input-group-addon, you'll need to use .input-group-btn to wrap the buttons. This is required due to default browser styles that cannot be overridden.

        +
        +
        +
        +
        + + + + +
        +
        +
        +
        + + + + +
        +
        +
        +
        +{% highlight html %} +
        +
        +
        + + + + +
        +
        +
        +
        + + + + +
        +
        +
        +{% endhighlight %} + +

        Buttons with dropdowns

        +

        +
        +
        +
        +
        + + +
        +
        +
        +
        + + +
        +
        +
        +
        +{% highlight html %} +
        +
        +
        + + +
        +
        +
        +
        + + +
        +
        +
        +{% endhighlight %} + +

        Segmented buttons

        +
        +
        +
        +
        +
        + + + +
        + +
        +
        +
        +
        + +
        + + + +
        +
        +
        +
        +
        +{% highlight html %} +
        +
        + +
        + +
        + +
        + +
        + +
        +
        +{% endhighlight %} + +
        + + + + +
        + + +

        Navs available in Bootstrap have shared markup, starting with the base .nav class, as well as shared states. Swap modifier classes to switch between each style.

        + + +

        Note the .nav-tabs class requires the .nav base class.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} +
        +

        Requires JavaScript tabs plugin

        +

        For tabs with tabbable areas, you must use the tabs JavaScript plugin.

        +
        + + +

        Take that same HTML, but use .nav-pills instead:

        +
        + +
        +{% highlight html %} + +{% endhighlight %} +

        Pills are also vertically stackable. Just add .nav-stacked.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + + +

        Easily make tabs or pills equal widths of their parent at screens wider than 768px with .nav-justified. On smaller screens, the nav links are stacked.

        +
        +

        Safari and responsive justified navs

        +

        Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the justified nav example.

        +
        +
        + +
        + +
        +{% highlight html %} + + +{% endhighlight %} + + + +

        For any nav component (tabs, pills, or list), add .disabled for gray links and no hover effects.

        + +
        +

        Link functionality not impacted

        +

        This class will only change the <a>'s appearance, not its functionality. Use custom JavaScript to disable links here.

        +
        + + +{% highlight html %} + +{% endhighlight %} + + + +

        Add dropdown menus with a little extra HTML and the dropdowns JavaScript plugin.

        + +

        Tabs with dropdowns

        + +{% highlight html %} + +{% endhighlight %} + +

        Pills with dropdowns

        + +{% highlight html %} + +{% endhighlight %} + +
        + + + + +
        + + + +

        Navbars are responsive meta components that serve as navigation headers for your application or site. They begin collapsed (and are toggleable) in mobile views and become horizontal as the available viewport width increases.

        + +
        +

        Customize the collapsing point

        +

        Depending on the content in your navbar, you might need to change the point at which your navbar switches between collapsed and horizontal mode. Customize the @grid-float-breakpoint variable or add your own media query.

        +
        +
        +

        Requires JavaScript

        +

        If JavaScript is disabled and the viewport is narrow enough that the navbar collapses, it will be impossible to expand the navbar and view the content within the .navbar-collapse.

        +
        + +
        + +
        +{% highlight html %} + +{% endhighlight %} + +
        +

        Plugin dependency

        +

        The responsive navbar requires the collapse plugin to be included in your version of Bootstrap.

        +
        + +
        +

        Make navbars accessible

        +

        Be sure to add a role="navigation" to every navbar to help with accessibility.

        +
        + + + +

        Place form content within .navbar-form for proper vertical alignment and collapsed behavior in narrow viewports. Use the alignment options to decide where it resides within the navbar content.

        +

        As a heads up, .navbar-form shares much of its code with .form-inline via mixin. Some form controls, like input groups, may require fixed widths to be show up properly within a navbar.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +
        +

        Mobile device caveats

        +

        There are some caveats regarding using form controls within fixed elements on mobile devices. See our browser support docs for details.

        +
        + +
        +

        Always add labels

        +

        Screen readers will have trouble with your forms if you don't include a label for every input. For these inline navbar forms, you can hide the labels using the .sr-only class.

        +
        + + + +

        Add the .navbar-btn class to <button> elements not residing in a <form> to vertically center them in the navbar.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +
        +

        Context-specific usage

        +

        Like the standard button classes, .navbar-btn can be used on <a> and <input> elements. However, neither .navbar-btn nor the standard button classes should be used on <a> elements within .navbar-nav.

        +
        + + +

        Wrap strings of text in an element with .navbar-text, usually on a <p> tag for proper leading and color.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + + +

        For folks using standard links that are not within the regular navbar navigation component, use the .navbar-link class to add the proper colors for the default and inverse navbar options.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + + +

        Align nav links, forms, buttons, or text, using the .navbar-left or .navbar-right utility classes. Both classes will add a CSS float in the specified direction. For example, to align nav links, put them in a separate <ul> with the respective utility class applied.

        +

        These classes are mixin-ed versions of .pull-left and .pull-right, but they're scoped to media queries for easier handling of navbar components across device sizes.

        + + + +

        Add .navbar-fixed-top and include a .container or .container-fluid to center and pad navbar content.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +
        +

        Body padding required

        +

        The fixed navbar will overlay your other content, unless you add padding to the top of the <body>. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

        +{% highlight css %} +body { padding-top: 70px; } +{% endhighlight %} +

        Make sure to include this after the core Bootstrap CSS.

        +
        + + + +

        Add .navbar-fixed-bottom and include a .container or .container-fluid to center and pad navbar content.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +
        +

        Body padding required

        +

        The fixed navbar will overlay your other content, unless you add padding to the bottom of the <body>. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

        +{% highlight css %} +body { padding-bottom: 70px; } +{% endhighlight %} +

        Make sure to include this after the core Bootstrap CSS.

        +
        + + + +

        Create a full-width navbar that scrolls away with the page by adding .navbar-static-top and include a .container or .container-fluid to center and pad navbar content.

        +

        Unlike the .navbar-fixed-* classes, you do not need to change any padding on the body.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + + +

        Modify the look of the navbar by adding .navbar-inverse.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +
        + + + + +
        + +

        Indicate the current page's location within a navigational hierarchy.

        +

        Separators are automatically added in CSS through :before and content.

        +
        + + + +
        +{% highlight html %} + +{% endhighlight %} +
        + + + + +
        + +

        Provide pagination links for your site or app with the multi-page pagination component, or the simpler pager alternative.

        + +

        Default pagination

        +

        Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +

        Disabled and active states

        +

        Links are customizable for different circumstances. Use .disabled for unclickable links and .active to indicate the current page.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} +

        You can optionally swap out active or disabled anchors for <span> to remove click functionality while retaining intended styles.

        +{% highlight html %} +
          +
        • «
        • +
        • 1 (current)
        • + ... +
        +{% endhighlight %} + + +

        Sizing

        +

        Fancy larger or smaller pagination? Add .pagination-lg or .pagination-sm for additional sizes.

        +
        +
        + +
        +
        + +
        +
        + +
        +
        +{% highlight html %} +
          ...
        +
          ...
        +
          ...
        +{% endhighlight %} + + +

        Pager

        +

        Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.

        + +

        Default example

        +

        By default, the pager centers links.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + +

        Aligned links

        +

        Alternatively, you can align each link to the sides:

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + +

        Optional disabled state

        +

        Pager links also use the general .disabled utility class from the pagination.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} +
        + + + + +
        + +

        + +

        Example

        +
        +

        Example heading New

        +

        Example heading New

        +

        Example heading New

        +

        Example heading New

        +
        Example heading New
        +
        Example heading New
        +
        +{% highlight html %} +

        Example heading New

        +{% endhighlight %} + +

        Available variations

        +

        Add any of the below mentioned modifier classes to change the appearance of a label.

        +
        + Default + Primary + Success + Info + Warning + Danger +
        +{% highlight html %} +Default +Primary +Success +Info +Warning +Danger +{% endhighlight %} + +
        + + + + +
        + +

        Easily highlight new or unread items by adding a <span class="badge"> to links, Bootstrap navs, and more.

        + +
        + Inbox 42 +
        +{% highlight html %} +Inbox 42 +{% endhighlight %} + +

        Self collapsing

        +

        When there are no new or unread items, badges will simply collapse (via CSS's :empty selector) provided no content exists within.

        + +
        +

        Cross-browser compatibility

        +

        Badges won't self collapse in Internet Explorer 8 because it lacks support for the :empty selector.

        +
        + +

        Adapts to active nav states

        +

        Built-in styles are included for placing badges in active states in pill and list navigations.

        +
        + +
        + +
        + +
        +{% highlight html %} + +{% endhighlight %} +
        + + + + +
        + +

        A lightweight, flexible component that can optionally extend the entire viewport to showcase key content on your site.

        +
        +
        +

        Hello, world!

        +

        This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

        +

        Learn more

        +
        +
        +{% highlight html %} +
        +

        Hello, world!

        +

        ...

        +

        Learn more

        +
        +{% endhighlight %} +

        To make the jumbotron full width, and without rounded corners, place it outside all .containers and instead add a .container within.

        +{% highlight html %} +
        +
        + ... +
        +
        +{% endhighlight %} + +
        + + + + +
        + +

        A simple shell for an h1 to appropriately space out and segment sections of content on a page. It can utilize the h1's default small element, as well as most other components (with additional styles).

        +
        + +
        +{% highlight html %} + +{% endhighlight %} +
        + + + + +
        + +

        Extend Bootstrap's grid system with the thumbnail component to easily display grids of images, videos, text, and more.

        + +

        Default example

        +

        By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.

        +
        +
        +
        + + Generic placeholder thumbnail + +
        +
        + + Generic placeholder thumbnail + +
        +
        + + Generic placeholder thumbnail + +
        +
        + + Generic placeholder thumbnail + +
        +
        +
        +{% highlight html %} +
        +
        + + ... + +
        + ... +
        +{% endhighlight %} + +

        Custom content

        +

        With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.

        +
        +
        +
        +
        + Generic placeholder thumbnail +
        +

        Thumbnail label

        +

        Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

        +

        Button Button

        +
        +
        +
        +
        +
        + Generic placeholder thumbnail +
        +

        Thumbnail label

        +

        Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

        +

        Button Button

        +
        +
        +
        +
        +
        + Generic placeholder thumbnail +
        +

        Thumbnail label

        +

        Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

        +

        Button Button

        +
        +
        +
        +
        +
        +{% highlight html %} +
        +
        +
        + ... +
        +

        Thumbnail label

        +

        ...

        +

        Button Button

        +
        +
        +
        +
        +{% endhighlight %} +
        + + + + + +
        + +

        Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages. For inline dismissal, use the alerts jQuery plugin.

        + +

        Examples

        +

        Wrap any text and an optional dismiss button in .alert and one of the four contextual classes (e.g., .alert-success) for basic alert messages.

        + +
        +

        No default class

        +

        Alerts don't have default classes, only base and modifier classes. A default gray alert doesn't make too much sense, so you're required to specify a type via contextual class. Choose from success, info, warning, or danger.

        +
        + +
        +
        + Well done! You successfully read this important alert message. +
        +
        + Heads up! This alert needs your attention, but it's not super important. +
        +
        + Warning! Better check yourself, you're not looking too good. +
        +
        + Oh snap! Change a few things up and try submitting again. +
        +
        +{% highlight html %} +
        ...
        +
        ...
        +
        ...
        +
        ...
        +{% endhighlight %} + +

        Dismissable alerts

        +

        Build on any alert by adding an optional .alert-dismissable and close button.

        +
        +
        + + Warning! Better check yourself, you're not looking too good. +
        +
        +{% highlight html %} +
        + + Warning! Better check yourself, you're not looking too good. +
        +{% endhighlight %} + +
        +

        Ensure proper behavior across all devices

        +

        Be sure to use the <button> element with the data-dismiss="alert" data attribute.

        +
        + + +

        Use the .alert-link utility class to quickly provide matching colored links within any alert.

        +
        +
        + Well done! You successfully read this important alert message. +
        +
        + Heads up! This alert needs your attention, but it's not super important. +
        +
        + Warning! Better check yourself, you're not looking too good. +
        +
        + Oh snap! Change a few things up and try submitting again. +
        +
        +{% highlight html %} +
        + ... +
        +
        + ... +
        +
        + ... +
        +
        + ... +
        +{% endhighlight %} +
        + + + + + +
        + +

        Provide up-to-date feedback on the progress of a workflow or action with simple yet flexible progress bars.

        + +
        +

        Cross-browser compatibility

        +

        Progress bars use CSS3 transitions and animations to achieve some of their effects. These features are not supported in Internet Explorer 9 and below or older versions of Firefox. Opera 12 does not support animations.

        +
        + +

        Basic example

        +

        Default progress bar.

        +
        +
        +
        + 60% Complete +
        +
        +
        +{% highlight html %} +
        +
        + 60% Complete +
        +
        +{% endhighlight %} + +

        Contextual alternatives

        +

        Progress bars use some of the same button and alert classes for consistent styles.

        +
        +
        +
        + 40% Complete (success) +
        +
        +
        +
        + 20% Complete +
        +
        +
        +
        + 60% Complete (warning) +
        +
        +
        +
        + 80% Complete (danger) +
        +
        +
        +{% highlight html %} +
        +
        + 40% Complete (success) +
        +
        +
        +
        + 20% Complete +
        +
        +
        +
        + 60% Complete (warning) +
        +
        +
        +
        + 80% Complete +
        +
        +{% endhighlight %} + +

        Striped

        +

        Uses a gradient to create a striped effect. Not available in IE8.

        +
        +
        +
        + 40% Complete (success) +
        +
        +
        +
        + 20% Complete +
        +
        +
        +
        + 60% Complete (warning) +
        +
        +
        +
        + 80% Complete (danger) +
        +
        +
        +{% highlight html %} +
        +
        + 40% Complete (success) +
        +
        +
        +
        + 20% Complete +
        +
        +
        +
        + 60% Complete (warning) +
        +
        +
        +
        + 80% Complete (danger) +
        +
        +{% endhighlight %} + +

        Animated

        +

        Add .active to .progress-striped to animate the stripes right to left. Not available in all versions of IE.

        +
        +
        +
        45% Complete
        +
        +
        +{% highlight html %} +
        +
        + 45% Complete +
        +
        +{% endhighlight %} + +

        Stacked

        +

        Place multiple bars into the same .progress to stack them.

        +
        +
        +
        + 35% Complete (success) +
        +
        + 20% Complete (warning) +
        +
        + 10% Complete (danger) +
        +
        +
        +{% highlight html %} +
        +
        + 35% Complete (success) +
        +
        + 20% Complete (warning) +
        +
        + 10% Complete (danger) +
        +
        +{% endhighlight %} +
        + + + + + +
        + +

        Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.

        + +

        Default media

        +

        The default media allow to float a media object (images, video, audio) to the left or right of a content block.

        +
        +
        + + Generic placeholder image + +
        +

        Media heading

        + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
        +
        +
        + + Generic placeholder image + +
        +

        Media heading

        + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
        + + Generic placeholder image + +
        +

        Nested media heading

        + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. +
        +
        +
        +
        +
        +{% highlight html %} +
        + + ... + +
        +

        Media heading

        + ... +
        +
        +{% endhighlight %} + +

        Media list

        +

        With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).

        +
        +
          +
        • + + Generic placeholder image + +
          +

          Media heading

          +

          Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

          + +
          + + Generic placeholder image + +
          +

          Nested media heading

          + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. + +
          + + Generic placeholder image + +
          +

          Nested media heading

          + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
          +
          +
          +
          + +
          + + Generic placeholder image + +
          +

          Nested media heading

          + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
          +
          +
          +
        • +
        • + + Generic placeholder image + +
          +

          Media heading

          + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. +
          +
        • +
        +
        +{% highlight html %} +
          +
        • + + ... + +
          +

          Media heading

          + ... +
          +
        • +
        +{% endhighlight %} +
        + + + + +
        + +

        List groups are a flexible and powerful component for displaying not only simple lists of elements, but complex ones with custom content.

        + +

        Basic example

        +

        The most basic list group is simply an unordered list with list items, and the proper classes. Build upon it with the options that follow, or your own CSS as needed.

        +
        +
          +
        • Cras justo odio
        • +
        • Dapibus ac facilisis in
        • +
        • Morbi leo risus
        • +
        • Porta ac consectetur ac
        • +
        • Vestibulum at eros
        • +
        +
        +{% highlight html %} +
          +
        • Cras justo odio
        • +
        • Dapibus ac facilisis in
        • +
        • Morbi leo risus
        • +
        • Porta ac consectetur ac
        • +
        • Vestibulum at eros
        • +
        +{% endhighlight %} + +

        Badges

        +

        Add the badges component to any list group item and it will automatically be positioned on the right.

        +
        +
          +
        • + 14 + Cras justo odio +
        • +
        • + 2 + Dapibus ac facilisis in +
        • +
        • + 1 + Morbi leo risus +
        • +
        +
        +{% highlight html %} +
          +
        • + 14 + Cras justo odio +
        • +
        +{% endhighlight %} + +

        Linked items

        +

        Linkify list group items by using anchor tags instead of list items (that also means a parent <div> instead of an <ul>). No need for individual parents around each element.

        + +{% highlight html %} + +{% endhighlight %} + +

        Contextual classes

        +

        Use contextual classes to style list items, default or linked. Also includes .active state.

        +
        +
        +
        +
          +
        • Dapibus ac facilisis in
        • +
        • Porta ac consectetur ac
        • +
        • Vestibulum at eros
        • +
        • Cras sit amet nibh libero
        • +
        +
        + +
        +
        +{% highlight html %} +
          +
        • Dapibus ac facilisis in
        • +
        • Porta ac consectetur ac
        • +
        • Vestibulum at eros
        • +
        • Cras sit amet nibh libero
        • +
        + +{% endhighlight %} + +

        Custom content

        +

        Add nearly any HTML within, even for linked list groups like the one below.

        + +{% highlight html %} + +{% endhighlight %} +
        + + + + + +
        + +

        While not always necessary, sometimes you need to put your DOM in a box. For those situations, try the panel component.

        + +

        Basic example

        +

        By default, all the .panel does is apply some basic border and padding to contain some content.

        +
        +
        +
        + Basic panel example +
        +
        +
        +{% highlight html %} +
        +
        + Basic panel example +
        +
        +{% endhighlight %} + +

        Panel with heading

        +

        Easily add a heading container to your panel with .panel-heading. You may also include any <h1>-<h6> with a .panel-title class to add a pre-styled heading.

        +
        +
        +
        Panel heading without title
        +
        + Panel content +
        +
        +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +
        +{% highlight html %} +
        +
        Panel heading without title
        +
        + Panel content +
        +
        + +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +{% endhighlight %} + + +

        Wrap buttons or secondary text in .panel-footer. Note that panel footers do not inherit colors and borders when using contextual variations as they are not meant to be in the foreground.

        +
        +
        +
        + Panel content +
        + +
        +
        +{% highlight html %} +
        +
        + Panel content +
        + +
        +{% endhighlight %} + +

        Contextual alternatives

        +

        Like other components, easily make a panel more meaningful to a particular context by adding any of the contextual state classes.

        +
        +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +
        +
        +

        Panel title

        +
        +
        + Panel content +
        +
        +
        +{% highlight html %} +
        ...
        +
        ...
        +
        ...
        +
        ...
        +
        ...
        +{% endhighlight %} + +

        With tables

        +

        Add any non-bordered .table within a panel for a seamless design. If there is a .panel-body, we add an extra border to the top of the table for separation.

        +
        +
        + +
        Panel heading
        +
        +

        Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        +
        +
        +{% highlight html %} +
        + +
        Panel heading
        +
        +

        ...

        +
        + + + + ... +
        +
        +{% endhighlight %} + +

        If there is no panel body, the component moves from panel header to table without interruption.

        +
        +
        + +
        Panel heading
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        +
        +
        +{% highlight html %} +
        + +
        Panel heading
        + + + + ... +
        +
        +{% endhighlight %} + + + +

        With list groups

        +

        Easily include full-width list groups within any panel.

        +
        +
        + +
        Panel heading
        +
        +

        Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

        +
        + + +
          +
        • Cras justo odio
        • +
        • Dapibus ac facilisis in
        • +
        • Morbi leo risus
        • +
        • Porta ac consectetur ac
        • +
        • Vestibulum at eros
        • +
        +
        +
        +{% highlight html %} +
        + +
        Panel heading
        +
        +

        ...

        +
        + + +
          +
        • Cras justo odio
        • +
        • Dapibus ac facilisis in
        • +
        • Morbi leo risus
        • +
        • Porta ac consectetur ac
        • +
        • Vestibulum at eros
        • +
        +
        +{% endhighlight %} + +
        + + + + + + +
        + + +

        Default well

        +

        Use the well as a simple effect on an element to give it an inset effect.

        +
        +
        + Look, I'm in a well! +
        +
        +{% highlight html %} +
        ...
        +{% endhighlight %} +

        Optional classes

        +

        Control padding and rounded corners with two optional modifier classes.

        +
        +
        + Look, I'm in a large well! +
        +
        +{% highlight html %} +
        ...
        +{% endhighlight %} + +
        +
        + Look, I'm in a small well! +
        +
        +{% highlight html %} +
        ...
        +{% endhighlight %} +
        diff --git a/docs/css.html b/docs/css.html new file mode 100644 index 000000000..b5c59fdb7 --- /dev/null +++ b/docs/css.html @@ -0,0 +1,3511 @@ +--- +layout: default +title: CSS +slug: css +lead: "Global CSS settings, fundamental HTML elements styled and enhanced with extensible classes, and an advanced grid system." +base_url: "../" +--- + + + +
        + +

        Get the lowdown on the key pieces of Bootstrap's infrastructure, including our approach to better, faster, stronger web development.

        + +

        HTML5 doctype

        +

        Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.

        +{% highlight html %} + + + ... + +{% endhighlight %} + +

        Mobile first

        +

        With Bootstrap 2, we added optional mobile friendly styles for key aspects of the framework. With Bootstrap 3, we've rewritten the project to be mobile friendly from the start. Instead of adding on optional mobile styles, they're baked right into the core. In fact, Bootstrap is mobile first. Mobile first styles can be found throughout the entire library instead of in separate files.

        +

        To ensure proper rendering and touch zooming, add the viewport meta tag to your <head>.

        +{% highlight html %} + +{% endhighlight %} +

        You can disable zooming capabilities on mobile devices by adding user-scalable=no to the viewport meta tag. This disables zooming, meaning users are only able to scroll, and results in your site feeling a bit more like a native application. Overall we don't recommend this on every site, so use caution!

        +{% highlight html %} + +{% endhighlight %} + +

        Responsive images

        +

        Images in Bootstrap 3 can be made responsive-friendly via the addition of the .img-responsive class. This applies max-width: 100%; and height: auto; to the image so that it scales nicely to the parent element.

        +{% highlight html %} +Responsive image +{% endhighlight %} + + +

        Bootstrap sets basic global display, typography, and link styles. Specifically, we:

        +
          +
        • Set background-color: #fff; on the body
        • +
        • Use the @font-family-base, @font-size-base, and @line-height-base attributes as our typographic base
        • +
        • Set the global link color via @link-color and apply link underlines only on :hover
        • +
        +

        These styles can be found within scaffolding.less.

        + +

        Normalize

        +

        For improved cross-browser rendering, we use Normalize, a project by Nicolas Gallagher and Jonathan Neal.

        + +

        Containers

        +

        Easily center a page's contents by wrapping its contents in a .container. Containers set width at various media query breakpoints to match our grid system.

        +

        Note that, due to padding and fixed widths, containers are not nestable by default.

        +{% highlight html %} +
        + ... +
        +{% endhighlight %} +
        + + + + +
        + +

        Bootstrap includes a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. It includes predefined classes for easy layout options, as well as powerful mixins for generating more semantic layouts.

        + +

        Introduction

        +

        Grid systems are used for creating page layouts through a series of rows and columns that house your content. Here's how the Bootstrap grid system works:

        +
          +
        • Rows must be placed within a .container (fixed-width) or .container-fluid (full-width) for proper alignment and padding.
        • +
        • Use rows to create horizontal groups of columns.
        • +
        • Content should be placed within columns, and only columns may be immediate children of rows.
        • +
        • Predefined grid classes like .row and .col-xs-4 are available for quickly making grid layouts. Less mixins can also be used for more semantic layouts.
        • +
        • Columns create gutters (gaps between column content) via padding. That padding is offset in rows for the first and last column via negative margin on .rows.
        • +
        • Grid columns are created by specifying the number of twelve available columns you wish to span. For example, three equal columns would use three .col-xs-4.
        • +
        +

        Look to the examples for applying these principles to your code.

        + +
        +

        Grids and full-width layouts

        +

        Folks looking to create fully fluid layouts (meaning your site stretches the entire width of the viewport) must wrap their grid content in a containing element with padding: 0 15px; to offset the margin: 0 -15px; used on .rows.

        +
        + +

        Media queries

        +

        We use the following media queries in our Less files to create the key breakpoints in our grid system.

        +{% highlight css %} +/* Extra small devices (phones, less than 768px) */ +/* No media query since this is the default in Bootstrap */ + +/* Small devices (tablets, 768px and up) */ +@media (min-width: @screen-sm-min) { ... } + +/* Medium devices (desktops, 992px and up) */ +@media (min-width: @screen-md-min) { ... } + +/* Large devices (large desktops, 1200px and up) */ +@media (min-width: @screen-lg-min) { ... } +{% endhighlight %} +

        We occasionally expand on these media queries to include a max-width to limit CSS to a narrower set of devices.

        +{% highlight css %} +@media (max-width: @screen-xs-max) { ... } +@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... } +@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... } +@media (min-width: @screen-lg-min) { ... } +{% endhighlight %} + +

        Grid options

        +

        See how aspects of the Bootstrap grid system work across multiple devices with a handy table.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + Extra small devices + Phones (<768px) + + Small devices + Tablets (≥768px) + + Medium devices + Desktops (≥992px) + + Large devices + Desktops (≥1200px) +
        Grid behaviorHorizontal at all timesCollapsed to start, horizontal above breakpoints
        Container widthNone (auto)750px970px1170px
        Class prefix.col-xs-.col-sm-.col-md-.col-lg-
        # of columns12
        Max column widthAuto60px78px95px
        Gutter width30px (15px on each side of a column)
        NestableYes
        OffsetsYes
        Column orderingYes
        +
        +

        Grid classes apply to devices with screen widths greater than or equal to the breakpoint sizes, and override grid classes targeted at smaller devices. Therefore, applying any .col-md- class to an element will not only affect its styling on medium devices but also on large devices if a .col-lg- class is not present.

        + +

        Example: Stacked-to-horizontal

        +

        Using a single set of .col-md-* grid classes, you can create a basic grid system that starts out stacked on mobile devices and tablet devices (the extra small to small range) before becoming horizontal on desktop (medium) devices. Place grid columns in any .row.

        +
        +
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        +
        +
        .col-md-8
        +
        .col-md-4
        +
        +
        +
        .col-md-4
        +
        .col-md-4
        +
        .col-md-4
        +
        +
        +
        .col-md-6
        +
        .col-md-6
        +
        +
        +{% highlight html %} +
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        .col-md-1
        +
        +
        +
        .col-md-8
        +
        .col-md-4
        +
        +
        +
        .col-md-4
        +
        .col-md-4
        +
        .col-md-4
        +
        +
        +
        .col-md-6
        +
        .col-md-6
        +
        +{% endhighlight %} + +

        Example: Fluid container

        +

        Turn any fixed-width grid layout into a full-width layout by changing your outermost .container to .container-fluid.

        +{% highlight html %} +
        +
        + ... +
        +
        +{% endhighlight %} + +

        Example: Mobile and desktop

        +

        Don't want your columns to simply stack in smaller devices? Use the extra small and medium device grid classes by adding .col-xs-* .col-md-* to your columns. See the example below for a better idea of how it all works.

        +
        +
        +
        .col-xs-12 .col-md-8
        +
        .col-xs-6 .col-md-4
        +
        +
        +
        .col-xs-6 .col-md-4
        +
        .col-xs-6 .col-md-4
        +
        .col-xs-6 .col-md-4
        +
        +
        +
        .col-xs-6
        +
        .col-xs-6
        +
        +
        +{% highlight html %} + +
        +
        .col-xs-12 .col-md-8
        +
        .col-xs-6 .col-md-4
        +
        + + +
        +
        .col-xs-6 .col-md-4
        +
        .col-xs-6 .col-md-4
        +
        .col-xs-6 .col-md-4
        +
        + + +
        +
        .col-xs-6
        +
        .col-xs-6
        +
        +{% endhighlight %} + +

        Example: Mobile, tablet, desktops

        +

        Build on the previous example by creating even more dynamic and powerful layouts with tablet .col-sm-* classes.

        +
        +
        +
        .col-xs-12 .col-sm-6 .col-md-8
        +
        .col-xs-6 .col-md-4
        +
        +
        +
        .col-xs-6 .col-sm-4
        +
        .col-xs-6 .col-sm-4
        + +
        +
        .col-xs-6 .col-sm-4
        +
        +
        +{% highlight html %} +
        +
        .col-xs-12 .col-sm-6 .col-md-8
        +
        .col-xs-6 .col-md-4
        +
        +
        +
        .col-xs-6 .col-sm-4
        +
        .col-xs-6 .col-sm-4
        + +
        +
        .col-xs-6 .col-sm-4
        +
        +{% endhighlight %} + +

        Responsive column resets

        +

        With the four tiers of grids available you're bound to run into issues where, at certain breakpoints, your columns don't clear quite right as one is taller than the other. To fix that, use a combination of a .clearfix and our responsive utility classes.

        +
        +
        +
        + .col-xs-6 .col-sm-3 +
        + Resize your viewport or check it out on your phone for an example. +
        +
        .col-xs-6 .col-sm-3
        + + +
        + +
        .col-xs-6 .col-sm-3
        +
        .col-xs-6 .col-sm-3
        +
        +
        +{% highlight html %} +
        +
        .col-xs-6 .col-sm-3
        +
        .col-xs-6 .col-sm-3
        + + +
        + +
        .col-xs-6 .col-sm-3
        +
        .col-xs-6 .col-sm-3
        +
        +{% endhighlight %} +

        In addition to column clearing at responsive breakpoints, you may need to reset offsets, pushes, or pulls. Those resets are available for medium and large grid tiers only, since they start only at the (second) small grid tier. See this in action in the grid example.

        +{% highlight html %} +
        +
        .col-sm-5 .col-md-6
        +
        .col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0
        +
        + +
        +
        .col-sm-6 .col-md-5 .col-lg-6
        +
        .col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0
        +
        +{% endhighlight %} + + +

        Offsetting columns

        +

        Move columns to the right using .col-md-offset-* classes. These classes increase the left margin of a column by * columns. For example, .col-md-offset-4 moves .col-md-4 over four columns.

        +
        +
        +
        .col-md-4
        +
        .col-md-4 .col-md-offset-4
        +
        +
        +
        .col-md-3 .col-md-offset-3
        +
        .col-md-3 .col-md-offset-3
        +
        +
        +
        .col-md-6 .col-md-offset-3
        +
        +
        +{% highlight html %} +
        +
        .col-md-4
        +
        .col-md-4 .col-md-offset-4
        +
        +
        +
        .col-md-3 .col-md-offset-3
        +
        .col-md-3 .col-md-offset-3
        +
        +
        +
        .col-md-6 .col-md-offset-3
        +
        +{% endhighlight %} + + +

        Nesting columns

        +

        To nest your content with the default grid, add a new .row and set of .col-md-* columns within an existing .col-md-* column. Nested rows should include a set of columns that add up to 12 or less.

        +
        +
        + Level 1: .col-md-9 +
        +
        + Level 2: .col-md-6 +
        +
        + Level 2: .col-md-6 +
        +
        +
        +
        +{% highlight html %} +
        +
        + Level 1: .col-md-9 +
        +
        + Level 2: .col-md-6 +
        +
        + Level 2: .col-md-6 +
        +
        +
        +
        +{% endhighlight %} + +

        Column ordering

        +

        Easily change the order of our built-in grid columns with .col-md-push-* and .col-md-pull-* modifier classes.

        +
        +
        .col-md-9 .col-md-push-3
        +
        .col-md-3 .col-md-pull-9
        +
        + +{% highlight html %} +
        +
        .col-md-9 .col-md-push-3
        +
        .col-md-3 .col-md-pull-9
        +
        +{% endhighlight %} + +

        Less mixins and variables

        +

        In addition to prebuilt grid classes for fast layouts, Bootstrap includes Less variables and mixins for quickly generating your own simple, semantic layouts.

        + +

        Variables

        +

        Variables determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.

        +{% highlight css %} +@grid-columns: 12; +@grid-gutter-width: 30px; +@grid-float-breakpoint: 768px; +{% endhighlight %} + +

        Mixins

        +

        Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.

        +{% highlight css %} +// Creates a wrapper for a series of columns +.make-row(@gutter: @grid-gutter-width) { + // Then clear the floated columns + .clearfix(); + + @media (min-width: @screen-sm-min) { + margin-left: (@gutter / -2); + margin-right: (@gutter / -2); + } + + // Negative margin nested rows out to align the content of columns + .row { + margin-left: (@gutter / -2); + margin-right: (@gutter / -2); + } +} + +// Generate the extra small columns +.make-xs-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @grid-float-breakpoint) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the small columns +.make-sm-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @screen-sm-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the small column offsets +.make-sm-column-offset(@columns) { + @media (min-width: @screen-sm-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-push(@columns) { + @media (min-width: @screen-sm-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-sm-column-pull(@columns) { + @media (min-width: @screen-sm-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the medium columns +.make-md-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @screen-md-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the medium column offsets +.make-md-column-offset(@columns) { + @media (min-width: @screen-md-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-push(@columns) { + @media (min-width: @screen-md-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-md-column-pull(@columns) { + @media (min-width: @screen-md-min) { + right: percentage((@columns / @grid-columns)); + } +} + +// Generate the large columns +.make-lg-column(@columns; @gutter: @grid-gutter-width) { + position: relative; + // Prevent columns from collapsing when empty + min-height: 1px; + // Inner gutter via padding + padding-left: (@gutter / 2); + padding-right: (@gutter / 2); + + // Calculate width based on number of columns available + @media (min-width: @screen-lg-min) { + float: left; + width: percentage((@columns / @grid-columns)); + } +} + +// Generate the large column offsets +.make-lg-column-offset(@columns) { + @media (min-width: @screen-lg-min) { + margin-left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-push(@columns) { + @media (min-width: @screen-lg-min) { + left: percentage((@columns / @grid-columns)); + } +} +.make-lg-column-pull(@columns) { + @media (min-width: @screen-lg-min) { + right: percentage((@columns / @grid-columns)); + } +} +{% endhighlight %} + +

        Example usage

        +

        You can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.

        +{% highlight css %} +.wrapper { + .make-row(); +} +.content-main { + .make-lg-column(8); +} +.content-secondary { + .make-lg-column(3); + .make-lg-column-offset(1); +} +{% endhighlight %} +{% highlight html %} +
        +
        ...
        +
        ...
        +
        +{% endhighlight %} + +
        + + + + + +
        + + + +

        Headings

        +

        All HTML headings, <h1> through <h6>, are available. .h1 through .h6 classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline.

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

        h1. Bootstrap heading

        Semibold 36px

        h2. Bootstrap heading

        Semibold 30px

        h3. Bootstrap heading

        Semibold 24px

        h4. Bootstrap heading

        Semibold 18px
        h5. Bootstrap heading
        Semibold 14px
        h6. Bootstrap heading
        Semibold 12px
        +
        +{% highlight html %} +

        h1. Bootstrap heading

        +

        h2. Bootstrap heading

        +

        h3. Bootstrap heading

        +

        h4. Bootstrap heading

        +
        h5. Bootstrap heading
        +
        h6. Bootstrap heading
        +{% endhighlight %} + +

        Create lighter, secondary text in any heading with a generic <small> tag or the .small class.

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

        h1. Bootstrap heading Secondary text

        h2. Bootstrap heading Secondary text

        h3. Bootstrap heading Secondary text

        h4. Bootstrap heading Secondary text

        h5. Bootstrap heading Secondary text
        h6. Bootstrap heading Secondary text
        +
        +{% highlight html %} +

        h1. Bootstrap heading Secondary text

        +

        h2. Bootstrap heading Secondary text

        +

        h3. Bootstrap heading Secondary text

        +

        h4. Bootstrap heading Secondary text

        +
        h5. Bootstrap heading Secondary text
        +
        h6. Bootstrap heading Secondary text
        +{% endhighlight %} + + + +

        Body copy

        +

        Bootstrap's global default font-size is 14px, with a line-height of 1.428. This is applied to the <body> and all paragraphs. In addition, <p> (paragraphs) receive a bottom margin of half their computed line-height (10px by default).

        +
        +

        Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

        +

        Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

        +

        Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

        +
        +{% highlight html %} +

        ...

        +{% endhighlight %} + + +

        Lead body copy

        +

        Make a paragraph stand out by adding .lead.

        +
        +

        Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

        +
        +{% highlight html %} +

        ...

        +{% endhighlight %} + + +

        Built with Less

        +

        The typographic scale is based on two Less variables in variables.less: @font-size-base and @line-height-base. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.

        + + + +

        Emphasis

        +

        Make use of HTML's default emphasis tags with lightweight styles.

        + +

        Small text

        +

        For de-emphasizing inline or blocks of text, use the <small> tag to set text at 85% the size of the parent. Heading elements receive their own font-size for nested <small> elements.

        +

        You may alternatively use an inline element with .small in place of any <small>

        +
        +

        This line of text is meant to be treated as fine print.

        +
        +{% highlight html %} +This line of text is meant to be treated as fine print. +{% endhighlight %} + + +

        Bold

        +

        For emphasizing a snippet of text with a heavier font-weight.

        +
        +

        The following snippet of text is rendered as bold text.

        +
        +{% highlight html %} +rendered as bold text +{% endhighlight %} + +

        Italics

        +

        For emphasizing a snippet of text with italics.

        +
        +

        The following snippet of text is rendered as italicized text.

        +
        +{% highlight html %} +rendered as italicized text +{% endhighlight %} + +
        +

        Alternate elements

        +

        Feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance while <i> is mostly for voice, technical terms, etc.

        +
        + +

        Alignment classes

        +

        Easily realign text to components with text alignment classes.

        +
        +

        Left aligned text.

        +

        Center aligned text.

        +

        Right aligned text.

        +
        +{% highlight html %} +

        Left aligned text.

        +

        Center aligned text.

        +

        Right aligned text.

        +{% endhighlight %} + + + +

        Abbreviations

        +

        Stylized implementation of HTML's <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a title attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover.

        + +

        Basic abbreviation

        +

        For expanded text on long hover of an abbreviation, include the title attribute with the <abbr> element.

        +
        +

        An abbreviation of the word attribute is attr.

        +
        +{% highlight html %} +attr +{% endhighlight %} + +

        Initialism

        +

        Add .initialism to an abbreviation for a slightly smaller font-size.

        +
        +

        HTML is the best thing since sliced bread.

        +
        +{% highlight html %} +HTML +{% endhighlight %} + + + +

        Addresses

        +

        Present contact information for the nearest ancestor or the entire body of work. Preserve formatting by ending all lines with <br>.

        +
        +
        + Twitter, Inc.
        + 795 Folsom Ave, Suite 600
        + San Francisco, CA 94107
        + P: (123) 456-7890 +
        +
        + Full Name
        + first.last@example.com +
        +
        +{% highlight html %} +
        + Twitter, Inc.
        + 795 Folsom Ave, Suite 600
        + San Francisco, CA 94107
        + P: (123) 456-7890 +
        + +
        + Full Name
        + first.last@example.com +
        +{% endhighlight %} + + + +

        Blockquotes

        +

        For quoting blocks of content from another source within your document.

        + +

        Default blockquote

        +

        Wrap <blockquote> around any HTML as the quote. For straight quotes, we recommend a <p>.

        +
        +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

        +
        +
        +{% highlight html %} +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

        +
        +{% endhighlight %} + +

        Blockquote options

        +

        Style and content changes for simple variations on a standard <blockquote>.

        + +

        Naming a source

        +

        Add a <footer> for identifying the source. Wrap the name of the source work in <cite>.

        +
        +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

        +
        Someone famous in Source Title
        +
        +
        +{% highlight html %} +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

        +
        Someone famous in Source Title
        +
        +{% endhighlight %} + +

        Alternate displays

        +

        Add .blockquote-reverse for blockquote with right-aligned content.

        +
        +
        +

        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

        +
        Someone famous in Source Title
        +
        +
        +{% highlight html %} +
        + ... +
        +{% endhighlight %} + + + +

        Lists

        + +

        Unordered

        +

        A list of items in which the order does not explicitly matter.

        +
        +
          +
        • Lorem ipsum dolor sit amet
        • +
        • Consectetur adipiscing elit
        • +
        • Integer molestie lorem at massa
        • +
        • Facilisis in pretium nisl aliquet
        • +
        • Nulla volutpat aliquam velit +
            +
          • Phasellus iaculis neque
          • +
          • Purus sodales ultricies
          • +
          • Vestibulum laoreet porttitor sem
          • +
          • Ac tristique libero volutpat at
          • +
          +
        • +
        • Faucibus porta lacus fringilla vel
        • +
        • Aenean sit amet erat nunc
        • +
        • Eget porttitor lorem
        • +
        +
        +{% highlight html %} +
          +
        • ...
        • +
        +{% endhighlight %} + +

        Ordered

        +

        A list of items in which the order does explicitly matter.

        +
        +
          +
        1. Lorem ipsum dolor sit amet
        2. +
        3. Consectetur adipiscing elit
        4. +
        5. Integer molestie lorem at massa
        6. +
        7. Facilisis in pretium nisl aliquet
        8. +
        9. Nulla volutpat aliquam velit
        10. +
        11. Faucibus porta lacus fringilla vel
        12. +
        13. Aenean sit amet erat nunc
        14. +
        15. Eget porttitor lorem
        16. +
        +
        +{% highlight html %} +
          +
        1. ...
        2. +
        +{% endhighlight %} + +

        Unstyled

        +

        Remove the default list-style and left margin on list items (immediate children only). This only applies to immediate children list items, meaning you will need to add the class for any nested lists as well.

        +
        +
          +
        • Lorem ipsum dolor sit amet
        • +
        • Consectetur adipiscing elit
        • +
        • Integer molestie lorem at massa
        • +
        • Facilisis in pretium nisl aliquet
        • +
        • Nulla volutpat aliquam velit +
            +
          • Phasellus iaculis neque
          • +
          • Purus sodales ultricies
          • +
          • Vestibulum laoreet porttitor sem
          • +
          • Ac tristique libero volutpat at
          • +
          +
        • +
        • Faucibus porta lacus fringilla vel
        • +
        • Aenean sit amet erat nunc
        • +
        • Eget porttitor lorem
        • +
        +
        +{% highlight html %} +
          +
        • ...
        • +
        +{% endhighlight %} + +

        Inline

        +

        Place all list items on a single line with display: inline-block; and some light padding.

        +
        +
          +
        • Lorem ipsum
        • +
        • Phasellus iaculis
        • +
        • Nulla volutpat
        • +
        +
        +{% highlight html %} +
          +
        • ...
        • +
        +{% endhighlight %} + +

        Description

        +

        A list of terms with their associated descriptions.

        +
        +
        +
        Description lists
        +
        A description list is perfect for defining terms.
        +
        Euismod
        +
        Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
        +
        Donec id elit non mi porta gravida at eget metus.
        +
        Malesuada porta
        +
        Etiam porta sem malesuada magna mollis euismod.
        +
        +
        +{% highlight html %} +
        +
        ...
        +
        ...
        +
        +{% endhighlight %} + +

        Horizontal description

        +

        Make terms and descriptions in <dl> line up side-by-side. Starts off stacked like default <dl>s, but when the navbar expands, so do these.

        +
        +
        +
        Description lists
        +
        A description list is perfect for defining terms.
        +
        Euismod
        +
        Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
        +
        Donec id elit non mi porta gravida at eget metus.
        +
        Malesuada porta
        +
        Etiam porta sem malesuada magna mollis euismod.
        +
        Felis euismod semper eget lacinia
        +
        Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
        +
        +
        +{% highlight html %} +
        +
        ...
        +
        ...
        +
        +{% endhighlight %} + +
        +

        Auto-truncating

        +

        Horizontal description lists will truncate terms that are too long to fit in the left column with text-overflow. In narrower viewports, they will change to the default stacked layout.

        +
        +
        + + + +
        + + +

        Inline

        +

        Wrap inline snippets of code with <code>.

        +
        + For example, <section> should be wrapped as inline. +
        +{% highlight html %} +For example, <section> should be wrapped as inline. +{% endhighlight %} + +

        User input

        +

        Use the <kbd> to indicate input that is typically entered via keyboard.

        +
        + To switch directories, type cd followed the name of the directory. +
        +{% highlight html %} + To switch directories, type cd followed the name of the directory. +{% endhighlight %} + +

        Basic block

        +

        Use <pre> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.

        +
        +
        <p>Sample text here...</p>
        +
        +{% highlight html %} +
        <p>Sample text here...</p>
        +{% endhighlight %} + +

        You may optionally add the .pre-scrollable class, which will set a max-height of 350px and provide a y-axis scrollbar.

        +
        + + + + +
        + + +

        Basic example

        +

        For basic styling—light padding and only horizontal dividers—add the base class .table to any <table>. It may seem super redundant, but given the widespread use of tables for other plugins like calendars and date pickers, we've opted to isolate our custom table styles.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        +
        +{% highlight html %} + + ... +
        +{% endhighlight %} + + +

        Striped rows

        +

        Use .table-striped to add zebra-striping to any table row within the <tbody>.

        +
        +

        Cross-browser compatibility

        +

        Striped tables are styled via the :nth-child CSS selector, which is not available in Internet Explorer 8.

        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        +
        +{% highlight html %} + + ... +
        +{% endhighlight %} + + +

        Bordered table

        +

        Add .table-bordered for borders on all sides of the table and cells.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        MarkOtto@TwBootstrap
        2JacobThornton@fat
        3Larry the Bird@twitter
        +
        +{% highlight html %} + + ... +
        +{% endhighlight %} + + +

        Hover rows

        +

        Add .table-hover to enable a hover state on table rows within a <tbody>.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larry the Bird@twitter
        +
        +{% highlight html %} + + ... +
        +{% endhighlight %} + + +

        Condensed table

        +

        Add .table-condensed to make tables more compact by cutting cell padding in half.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #First NameLast NameUsername
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larry the Bird@twitter
        +
        +{% highlight html %} + + ... +
        +{% endhighlight %} + + +

        Contextual classes

        +

        Use contextual classes to color table rows or individual cells.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ClassDescription
        + .active + Applies the hover color to a particular row or cell
        + .success + Indicates a successful or positive action
        + .warning + Indicates a warning that might need attention
        + .danger + Indicates a dangerous or potentially negative action
        + .info + Indicates a neutral informative change or action
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #Column headingColumn headingColumn heading
        1Column contentColumn contentColumn content
        2Column contentColumn contentColumn content
        3Column contentColumn contentColumn content
        4Column contentColumn contentColumn content
        5Column contentColumn contentColumn content
        6Column contentColumn contentColumn content
        7Column contentColumn contentColumn content
        8Column contentColumn contentColumn content
        9Column contentColumn contentColumn content
        +
        +{% highlight html %} + +... +... +... +... +... + + + + ... + ... + ... + ... + ... + +{% endhighlight %} + + +

        Responsive tables

        +

        Create responsive tables by wrapping any .table in .table-responsive to make them scroll horizontally up to small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables.

        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #Table headingTable headingTable headingTable headingTable headingTable heading
        1Table cellTable cellTable cellTable cellTable cellTable cell
        2Table cellTable cellTable cellTable cellTable cellTable cell
        3Table cellTable cellTable cellTable cellTable cellTable cell
        +
        + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #Table headingTable headingTable headingTable headingTable headingTable heading
        1Table cellTable cellTable cellTable cellTable cellTable cell
        2Table cellTable cellTable cellTable cellTable cellTable cell
        3Table cellTable cellTable cellTable cellTable cellTable cell
        +
        +
        +{% highlight html %} +
        + + ... +
        +
        +{% endhighlight %} + +
        + + + + +
        + + +

        Basic example

        +

        Individual form controls automatically receive some global styling. All textual <input>, <textarea>, and <select> elements with .form-control are set to width: 100%; by default. Wrap labels and controls in .form-group for optimum spacing.

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

        Example block-level help text here.

        +
        +
        + +
        + +
        +
        +{% highlight html %} +
        +
        + + +
        +
        + + +
        +
        + + +

        Example block-level help text here.

        +
        +
        + +
        + +
        +{% endhighlight %} + + +

        Inline form

        +

        Add .form-inline to your <form> for left-aligned and inline-block controls. This only applies to forms within viewports that are at least 768px wide.

        +
        +

        Requires custom widths

        +

        Inputs, selects, and textareas are 100% wide by default in Bootstrap. To use the inline form, you'll have to set a width on the form controls used within.

        +
        +
        +

        Always add labels

        +

        Screen readers will have trouble with your forms if you don't include a label for every input. For these inline forms, you can hide the labels using the .sr-only class.

        +
        +
        +
        +
        + + +
        +
        + + +
        +
        + +
        + +
        +
        +{% highlight html %} +
        +
        + + +
        +
        + + +
        +
        + +
        + +
        +{% endhighlight %} + + +

        Horizontal form

        +

        Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout by adding .form-horizontal to the form. Doing so changes .form-groups to behave as grid rows, so no need for .row.

        +
        +
        +
        + +
        + +
        +
        +
        + +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +
        +{% highlight html %} +
        +
        + +
        + +
        +
        +
        + +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +{% endhighlight %} + + +

        Supported controls

        +

        Examples of standard form controls supported in an example form layout.

        + +

        Inputs

        +

        Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.

        +
        +

        Type declaration required

        +

        Inputs will only be fully styled if their type is properly declared.

        +
        +
        +
        + +
        +
        +{% highlight html %} + +{% endhighlight %} +
        +

        Input groups

        +

        To add integrated text or buttons before and/or after any text-based <input>, check out the input group component.

        +
        + +

        Textarea

        +

        Form control which supports multiple lines of text. Change rows attribute as necessary.

        +
        +
        + +
        +
        +{% highlight html %} + +{% endhighlight %} + +

        Checkboxes and radios

        +

        Checkboxes are for selecting one or several options in a list while radios are for selecting one option from many.

        +

        Default (stacked)

        +
        +
        +
        + +
        +
        +
        + +
        +
        + +
        +
        +
        +{% highlight html %} +
        + +
        + +
        + +
        +
        + +
        +{% endhighlight %} + +

        Inline checkboxes

        +

        Use the .checkbox-inline or .radio-inline classes on a series of checkboxes or radios for controls that appear on the same line.

        +
        +
        + + + +
        +
        +{% highlight html %} + + + +{% endhighlight %} + +

        Selects

        +

        Use the default option, or add multiple to show multiple options at once.

        +
        +
        + +
        + +
        +
        +{% highlight html %} + + + +{% endhighlight %} + + +

        Static control

        +

        When you need to place plain text next to a form label within a horizontal form, use the .form-control-static class on a <p>.

        +
        +
        +
        + +
        +

        email@example.com

        +
        +
        +
        + +
        + +
        +
        +
        +
        +{% highlight html %} +
        +
        + +
        +

        email@example.com

        +
        +
        +
        + +
        + +
        +
        +
        +{% endhighlight %} + + +

        Input focus

        +

        We remove the default outline styles on some form controls and apply a box-shadow in its place for :focus.

        +
        +
        + +
        +
        +{% highlight html %} + +{% endhighlight %} + + +

        Disabled inputs

        +

        Add the disabled attribute on an input to prevent user input and trigger a slightly different look.

        +
        +
        + +
        +
        +{% highlight html %} + +{% endhighlight %} + +

        Disabled fieldsets

        +

        Add the disabled attribute to a <fieldset> to disable all the controls within the <fieldset> at once.

        + +
        +

        Link functionality of <a> not impacted

        +

        This class will only change the appearance of <a class="btn btn-default"> buttons, not their functionality. Use custom JavaScript to disable links here.

        +
        + +
        +

        Cross-browser compatibility

        +

        While Bootstrap will apply these styles in all browsers, Internet Explorer 9 and below don't actually support the disabled attribute on a <fieldset>. Use custom JavaScript to disable the fieldset in these browsers.

        +
        + +
        +
        +
        +
        + + +
        +
        + + +
        +
        + +
        + +
        +
        +
        +{% highlight html %} +
        +
        +
        + + +
        +
        + + +
        +
        + +
        + +
        +
        +{% endhighlight %} + + +

        Validation states

        +

        Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add .has-warning, .has-error, or .has-success to the parent element. Any .control-label, .form-control, and .help-block within that element will receive the validation styles.

        + +
        +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        +
        +{% highlight html %} +
        + + +
        +
        + + +
        +
        + + +
        +{% endhighlight %} + +

        With optional icons

        +

        You can also add optional feedback icons with the addition of an extra class and the right icon.

        +
        +
        +
        + + + +
        +
        + + + +
        +
        + + + +
        +
        +
        +{% highlight html %} +
        + + + +
        +
        + + + +
        +
        + + + +
        +{% endhighlight %} + +

        Optional icons also work on horizontal and inline forms.

        +
        +
        +
        + +
        + + +
        +
        +
        +
        +{% highlight html %} +
        +
        + +
        + + +
        +
        +
        +{% endhighlight %} + +
        +
        +
        + + + +
        +
        +
        +{% highlight html %} +
        +
        + + + +
        +
        +{% endhighlight %} + + + +

        Control sizing

        +

        Set heights using classes like .input-lg, and set widths using grid column classes like .col-lg-*.

        + +

        Height sizing

        +

        Create larger or smaller form controls that match button sizes.

        +
        +
        +
        + + + + + + + +
        +
        +
        +{% highlight html %} + + + + + + + +{% endhighlight %} + +

        Column sizing

        +

        Wrap inputs in grid columns, or any custom parent element, to easily enforce desired widths.

        +
        +
        +
        +
        + +
        +
        + +
        +
        + +
        +
        +
        +
        +{% highlight html %} +
        +
        + +
        +
        + +
        +
        + +
        +
        +{% endhighlight %} + +

        Help text

        +

        Block level help text for form controls.

        +
        +
        + + A block of help text that breaks onto a new line and may extend beyond one line. +
        +
        +{% highlight html %} +A block of help text that breaks onto a new line and may extend beyond one line. +{% endhighlight %} + +
        + + + + +
        + + +

        Options

        +

        Use any of the available button classes to quickly create a styled button.

        +
        + + + + + + + +
        +{% highlight html %} + + + + + + + + + + + + + + + + + + + + +{% endhighlight %} + +

        Sizes

        +

        Fancy larger or smaller buttons? Add .btn-lg, .btn-sm, or .btn-xs for additional sizes.

        +
        +

        + + +

        +

        + + +

        +

        + + +

        +

        + + +

        +
        +{% highlight html %} +

        + + +

        +

        + + +

        +

        + + +

        +

        + + +

        +{% endhighlight %} + +

        Create block level buttons—those that span the full width of a parent— by adding .btn-block.

        +
        +
        + + +
        +
        +{% highlight html %} + + +{% endhighlight %} + + +

        Active state

        +

        Buttons will appear pressed (with a darker background, darker border, and inset shadow) when active. For <button> elements, this is done via :active. For <a> elements, it's done with .active. However, you may use .active <button>s should you need to replicate the active state progammatically.

        + +

        Button element

        +

        No need to add :active as it's a pseudo-class, but if you need to force the same appearance, go ahead and add .active.

        +

        + + +

        +{% highlight html %} + + +{% endhighlight %} + +

        Anchor element

        +

        Add the .active class to <a> buttons.

        +

        + Primary link + Link +

        +{% highlight html %} +Primary link +Link +{% endhighlight %} + + +

        Disabled state

        +

        Make buttons look unclickable by fading them back 50%.

        + +

        Button element

        +

        Add the disabled attribute to <button> buttons.

        +

        + + +

        +{% highlight html %} + + +{% endhighlight %} + +
        +

        Cross-browser compatibility

        +

        If you add the disabled attribute to a <button>, Internet Explorer 9 and below will render text gray with a nasty text-shadow that we cannot fix.

        +
        + +

        Anchor element

        +

        Add the .disabled class to <a> buttons.

        +

        + Primary link + Link +

        +{% highlight html %} +Primary link +Link +{% endhighlight %} +

        + We use .disabled as a utility class here, similar to the common .active class, so no prefix is required. +

        +
        +

        Link functionality not impacted

        +

        This class will only change the <a>'s appearance, not its functionality. Use custom JavaScript to disable links here.

        +
        +
        +

        Context-specific usage

        +

        While button classes can be used on <a> and <button> elements, only <button> elements are supported within our nav and navbar components.

        +
        + + +

        Button tags

        +

        Use the button classes on an <a>, <button>, or <input> element.

        +
        + Link + + + +
        +{% highlight html %} +Link + + + +{% endhighlight %} + +
        +

        Cross-browser rendering

        +

        As a best practice, we highly recommend using the <button> element whenever possible to ensure matching cross-browser rendering.

        +

        Among other things, there's a Firefox bug that prevents us from setting the line-height of <input>-based buttons, causing them to not exactly match the height of other buttons on Firefox.

        +
        + +
        + + + + +
        + + +

        Add classes to an <img> element to easily style images in any project.

        +
        +

        Cross-browser compatibility

        +

        Keep in mind that Internet Explorer 8 lacks support for rounded corners.

        +
        +
        + A generic square placeholder image with rounded corners + A generic square placeholder image where only the portion within the circle circumscribed about said square is visible + A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera +
        +{% highlight html %} +... +... +... +{% endhighlight %} + +
        +

        Responsive images

        +

        Looking for how to make images more responsive? Check out the responsive images section up top.

        +
        + +
        + + + +
        + + +

        Contextual colors

        +

        Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles.

        +
        +

        Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

        +

        Nullam id dolor id nibh ultricies vehicula ut id elit.

        +

        Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

        +

        Maecenas sed diam eget risus varius blandit sit amet non magna.

        +

        Etiam porta sem malesuada magna mollis euismod.

        +

        Donec ullamcorper nulla non metus auctor fringilla.

        +
        +{% highlight html %} +

        ...

        +

        ...

        +

        ...

        +

        ...

        +

        ...

        +

        ...

        +{% endhighlight %} +
        +

        Dealing with specificity

        +

        Sometimes emphasis classes cannot be applied due to the specificity of another selector. In most cases, a sufficient workaround is to wrap your text in a <span> with the class.

        +
        + +

        Contextual backgrounds

        +

        Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes.

        +
        +

        Nullam id dolor id nibh ultricies vehicula ut id elit.

        +

        Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

        +

        Maecenas sed diam eget risus varius blandit sit amet non magna.

        +

        Etiam porta sem malesuada magna mollis euismod.

        +

        Donec ullamcorper nulla non metus auctor fringilla.

        +
        +{% highlight html %} +

        ...

        +

        ...

        +

        ...

        +

        ...

        +

        ...

        +

        ...

        +{% endhighlight %} + + +

        Close icon

        +

        Use the generic close icon for dismissing content like modals and alerts.

        +
        +

        +
        +{% highlight html %} + +{% endhighlight %} + + +

        Carets

        +

        Use carets to indicate dropdown functionality and direction. Note that the default caret will reverse automatically in dropup menus.

        +
        + +
        +{% highlight html %} + +{% endhighlight %} + + +

        Quick floats

        +

        Float an element to the left or right with a class. !important is included to avoid specificity issues. Classes can also be used as mixins.

        +{% highlight html %} +
        ...
        +
        ...
        +{% endhighlight %} +{% highlight css %} +// Classes +.pull-left { + float: left !important; +} +.pull-right { + float: right !important; +} + +// Usage as mixins +.element { + .pull-left(); +} +.another-element { + .pull-right(); +} +{% endhighlight %} + +
        +

        Not for use in navbars

        +

        To align components in navbars with utility classes, use .navbar-left or .navbar-right instead. See the navbar docs for details.

        +
        + + +

        Center content blocks

        +

        Set an element to display: block and center via margin. Available as a mixin and class.

        +{% highlight html %} +
        ...
        +{% endhighlight %} +{% highlight css %} +// Classes +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Usage as mixins +.element { + .center-block(); +} +{% endhighlight %} + + + +

        Clearfix

        +

        Clear the float on any element with the .clearfix class. Utilizes the micro clearfix as popularized by Nicolas Gallagher. Can also be used as a mixin.

        +{% highlight html %} + +
        ...
        +{% endhighlight %} +{% highlight css %} +// Mixin itself +.clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { + clear: both; + } +} + +// Usage as a Mixin +.element { + .clearfix(); +} +{% endhighlight %} + + +

        Showing and hiding content

        +

        Force an element to be shown or hidden (including for screen readers) with the use of .show and .hidden classes. These classes use !important to avoid specificity conflicts, just like the quick floats. They are only available for block level toggling. They can also be used as mixins.

        +

        .hide is available, but it does not always affect screen readers and is deprecated as of v3.0.1. Use .hidden or .sr-only instead.

        +

        Furthermore, .invisible can be used to toggle only the visibility of an element, meaning its display is not modified and the element can still affect the flow of the document.

        +{% highlight html %} +
        ...
        + +{% endhighlight %} +{% highlight css %} +// Classes +.show { + display: block !important; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.invisible { + visibility: hidden; +} + +// Usage as mixins +.element { + .show(); +} +.another-element { + .hidden(); +} +{% endhighlight %} + + +

        Screen reader content

        +

        Hide an element to all devices except screen readers with .sr-only. Necessary for following accessibility best practices. Can also be used as a mixin.

        +{% highlight html %} +Skip to main content +{% endhighlight %} +{% highlight css %} +// Usage as a Mixin +.skip-navigation { + .sr-only(); +} +{% endhighlight %} + + +

        Image replacement

        +

        Utilize the .text-hide class or mixin to help replace an element's text content with a background image.

        +{% highlight html %} +

        Custom heading

        +{% endhighlight %} + {% highlight css %} +// Usage as a Mixin +.heading { + .text-hide(); +} +{% endhighlight %} +
        + + + + +
        + +

        For faster mobile-friendly development, use these utility classes for showing and hiding content by device via media query. Also included are utility classes for toggling content when printed.

        +

        Try to use these on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation. Responsive utilities are currently only available for block and table toggling. Use with inline and table elements is currently not supported.

        + + +

        Available classes

        +

        Use a single or combination of the available classes for toggling content across viewport breakpoints.

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + Extra small devices + Phones (<768px) + + Small devices + Tablets (≥768px) + + Medium devices + Desktops (≥992px) + + Large devices + Desktops (≥1200px) +
        .visible-xsVisible
        .visible-smVisible
        .visible-mdVisible
        .visible-lgVisible
        .hidden-xsVisibleVisibleVisible
        .hidden-smVisibleVisibleVisible
        .hidden-mdVisibleVisibleVisible
        .hidden-lgVisibleVisibleVisible
        +
        + + +

        Print classes

        +

        Similar to the regular responsive classes, use these for toggling content for print.

        +
        + + + + + + + + + + + + + + + + + + + + +
        ClassBrowserPrint
        .visible-printVisible
        .hidden-printVisible
        +
        + + +

        Test cases

        +

        Resize your browser or load on different devices to test the responsive utility classes.

        + +

        Visible on...

        +

        Green checkmarks indicate the element is visible in your current viewport.

        +
        +
        + + ✔ Visible on x-small +
        +
        + + ✔ Visible on small +
        +
        +
        + Medium + ✔ Visible on medium +
        +
        + + ✔ Visible on large +
        +
        +
        +
        + + ✔ Visible on x-small and small +
        +
        + + ✔ Visible on medium and large +
        +
        +
        + + ✔ Visible on x-small and medium +
        +
        + + ✔ Visible on small and large +
        +
        +
        + + ✔ Visible on x-small and large +
        +
        + + ✔ Visible on small and medium +
        +
        + +

        Hidden on...

        +

        Here, green checkmarks also indicate the element is hidden in your current viewport.

        +
        +
        + + ✔ Hidden on x-small +
        +
        + + ✔ Hidden on small +
        +
        +
        + Medium + ✔ Hidden on medium +
        +
        + + ✔ Hidden on large +
        +
        +
        +
        + + ✔ Hidden on x-small and small +
        +
        + + ✔ Hidden on medium and large +
        +
        +
        + + ✔ Hidden on x-small and medium +
        +
        + + ✔ Hidden on small and large +
        +
        +
        + + ✔ Hidden on x-small and large +
        +
        + + ✔ Hidden on small and medium +
        +
        + +
        + + + + +
        + +

        Bootstrap's CSS is built on Less, a preprocessor with additional functionality like variables, mixins, and functions for compiling CSS. Those looking to use the source Less files instead of our compiled CSS files can make use of the numerous variables and mixins we use throughout the framework.

        + +

        Grid variables and mixins are covered within the Grid system section.

        + + +

        Variables

        +

        Variables are used throughout the entire project as a way to centralize and share commonly used values like colors, spacing, or font stacks. For a complete breakdown, please see the Customizer.

        + +

        Colors

        +

        Easily make use of two color schemes: grayscale and semantic. Grayscale colors provide quick access to commonly used shades of black while semantic include various colors assigned to meaningful contextual values.

        +
        +
        +
        +
        +
        +
        +
        +
        +
        +{% highlight css %} +@gray-darker: lighten(#000, 13.5%); // #222 +@gray-dark: lighten(#000, 20%); // #333 +@gray: lighten(#000, 33.5%); // #555 +@gray-light: lighten(#000, 60%); // #999 +@gray-lighter: lighten(#000, 93.5%); // #eee +{% endhighlight %} + +
        +
        +
        +
        +
        +
        +
        +
        +
        +{% highlight css %} +@brand-primary: #428bca; +@brand-success: #5cb85c; +@brand-warning: #f0ad4e; +@brand-danger: #d9534f; +@brand-info: #5bc0de; +{% endhighlight %} + +

        Use any of these color variables as they are or reassign them to more meaningful variables for your project.

        +{% highlight css %} +// Use as-is +.masthead { + background-color: @brand-primary; +} + +// Reassigned variables in Less +@alert-message-background: @brand-info; +.alert { + background-color: @alert-message-background; +} +{% endhighlight %} + +

        Scaffolding

        +

        A handful of variables for quickly customizing key elements of your site's skeleton.

        +{% highlight css %} +// Scaffolding +@body-bg: #fff; +@text-color: @black-50; +{% endhighlight %} + + +

        Easily style your links with the right color with only one value.

        +{% highlight css %} +// Variables +@link-color: @brand-primary; +@link-color-hover: darken(@link-color, 15%); + +// Usage +a { + color: @link-color; + text-decoration: none; + + &:hover { + color: @link-color-hover; + text-decoration: underline; + } +} +{% endhighlight %} +

        Note that the @link-color-hover uses a function, another awesome tool from Less, to automagically create the right hover color. You can use darken, lighten, saturate, and desaturate.

        + +

        Typography

        +

        Easily set your type face, text size, leading, and more with a few quick variables. Bootstrap makes use of these as well to provide easy typographic mixins.

        +{% highlight css %} +@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; +@font-family-serif: Georgia, "Times New Roman", Times, serif; +@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; +@font-family-base: @font-family-sans-serif; + +@font-size-base: 14px; +@font-size-large: ceil((@font-size-base * 1.25)); // ~18px +@font-size-small: ceil((@font-size-base * 0.85)); // ~12px + +@font-size-h1: floor((@font-size-base * 2.6)); // ~36px +@font-size-h2: floor((@font-size-base * 2.15)); // ~30px +@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px +@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px +@font-size-h5: @font-size-base; +@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px + +@line-height-base: 1.428571429; // 20/14 +@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px + +@headings-font-family: inherit; +@headings-font-weight: 500; +@headings-line-height: 1.1; +@headings-color: inherit; +{% endhighlight %} + +

        Icons

        +

        Two quick variables for customizing the location and filename of your icons.

        +{% highlight css %} +@icon-font-path: "../fonts/"; +@icon-font-name: "glyphicons-halflings-regular"; +{% endhighlight %} + +

        Components

        +

        Components throughout Bootstrap make use of some default variables for setting common values. Here are the most commonly used.

        +{% highlight css %} +@padding-base-vertical: 6px; +@padding-base-horizontal: 12px; + +@padding-large-vertical: 10px; +@padding-large-horizontal: 16px; + +@padding-small-vertical: 5px; +@padding-small-horizontal: 10px; + +@padding-xs-vertical: 1px; +@padding-xs-horizontal: 5px; + +@line-height-large: 1.33; +@line-height-small: 1.5; + +@border-radius-base: 4px; +@border-radius-large: 6px; +@border-radius-small: 3px; + +@component-active-color: #fff; +@component-active-bg: @brand-primary; + +@caret-width-base: 4px; +@caret-width-large: 5px; +{% endhighlight %} + + +

        Vendor mixins

        +

        Vendor mixins are mixins to help support multiple browsers by including all relevant vendor prefixs in your compiled CSS.

        + + +

        Box-sizing

        +

        Reset your components' box model with a single mixin. For context, see this helpful article from Mozilla.

        +{% highlight css %} +.box-sizing(@box-model) { + -webkit-box-sizing: @box-model; // Safari <= 5 + -moz-box-sizing: @box-model; // Firefox <= 19 + box-sizing: @box-model; +} +{% endhighlight %} + +

        Rounded corners

        +

        Today all modern browsers support the non-prefixed border-radius property. As such, there is no .border-radius() mixin, but Preboot does include shortcuts for quickly rounding two corners on a particular side of an object.

        +{% highlight css %} +.border-top-radius(@radius) { + border-top-right-radius: @radius; + border-top-left-radius: @radius; +} +.border-right-radius(@radius) { + border-bottom-right-radius: @radius; + border-top-right-radius: @radius; +} +.border-bottom-radius(@radius) { + border-bottom-right-radius: @radius; + border-bottom-left-radius: @radius; +} +.border-left-radius(@radius) { + border-bottom-left-radius: @radius; + border-top-left-radius: @radius; +} +{% endhighlight %} + +

        Box (Drop) shadows

        +

        If your target audience is using the latest and greatest browsers and devices, be sure to just use the box-shadow property on its own. If you need support for older Android (pre-v4) and iOS devices (pre-iOS 5), use the mixin to pick up the required -webkit prefix.

        +

        Be sure to use rgba() colors in your box shadows so they blend as seamlessly as possible with backgrounds.

        +{% highlight css %} +.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) { + -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 + box-shadow: @shadow; +} +{% endhighlight %} + +

        Transitions

        +

        Three mixins for flexibility. Set all transition information with one, or specify a separate delay and duration as needed.

        +{% highlight css %} +.transition(@transition) { + -webkit-transition: @transition; + transition: @transition; +} +.transition-property(@transition-property) { + -webkit-transition-property: @transition-property; + transition-property: @transition-property; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} +.transition-duration(@transition-duration) { + -webkit-transition-duration: @transition-duration; + transition-duration: @transition-duration; +} +.transition-transform(@transition) { + -webkit-transition: -webkit-transform @transition; + -moz-transition: -moz-transform @transition; + -o-transition: -o-transform @transition; + transition: transform @transition; +} +{% endhighlight %} + +

        Transformations

        +

        Rorate, scale, translate (move), or skew any object.

        +{% highlight css %} +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); // IE9 only + transform: rotate(@degrees); +} +.scale(@ratio; @ratio-y...) { + -webkit-transform: scale(@ratio, @ratio-y); + -ms-transform: scale(@ratio, @ratio-y); // IE9 only + transform: scale(@ratio, @ratio-y); +} +.translate(@x; @y) { + -webkit-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); // IE9 only + transform: translate(@x, @y); +} +.skew(@x; @y) { + -webkit-transform: skew(@x, @y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ + transform: skew(@x, @y); +} +.translate3d(@x; @y; @z) { + -webkit-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} + +.rotateX(@degrees) { + -webkit-transform: rotateX(@degrees); + -ms-transform: rotateX(@degrees); // IE9 only + transform: rotateX(@degrees); +} +.rotateY(@degrees) { + -webkit-transform: rotateY(@degrees); + -ms-transform: rotateY(@degrees); // IE9 only + transform: rotateY(@degrees); +} +.perspective(@perspective) { + -webkit-perspective: @perspective; + -moz-perspective: @perspective; + perspective: @perspective; +} +.perspective-origin(@perspective) { + -webkit-perspective-origin: @perspective; + -moz-perspective-origin: @perspective; + perspective-origin: @perspective; +} +.transform-origin(@origin) { + -webkit-transform-origin: @origin; + -moz-transform-origin: @origin; + -ms-transform-origin: @origin; // IE9 only + transform-origin: @origin; +} +{% endhighlight %} + +

        Animations

        +

        A single mixin for using all CSS3's animation properties in one declarations and other mixins for individual properties.

        +{% highlight css %} +.animation(@animation) { + -webkit-animation: @animation; + animation: @animation; +} +.animation-name(@name) { + -webkit-animation-name: @name; + animation-name: @name; +} +.animation-duration(@duration) { + -webkit-animation-duration: @duration; + animation-duration: @duration; +} +.animation-timing-function(@timing-function) { + -webkit-animation-timing-function: @timing-function; + animation-timing-function: @timing-function; +} +.animation-delay(@delay) { + -webkit-animation-delay: @delay; + animation-delay: @delay; +} +.animation-iteration-count(@iteration-count) { + -webkit-animation-iteration-count: @iteration-count; + animation-iteration-count: @iteration-count; +} +.animation-direction(@direction) { + -webkit-animation-direction: @direction; + animation-direction: @direction; +} +{% endhighlight %} + +

        Opacity

        +

        Set the opacity for all browsers and provide a filter fallback for IE8.

        +{% highlight css %} +.opacity(@opacity) { + opacity: @opacity; + // IE8 filter + @opacity-ie: (@opacity * 100); + filter: ~"alpha(opacity=@{opacity-ie})"; +} +{% endhighlight %} + +

        Placeholder text

        +

        Provide context for form controls within each field.

        +{% highlight css %} +.placeholder(@color: @input-color-placeholder) { + &:-moz-placeholder { color: @color; } // Firefox 4-18 + &::-moz-placeholder { color: @color; } // Firefox 19+ + &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ + &::-webkit-input-placeholder { color: @color; } // Safari and Chrome +} +{% endhighlight %} + +

        Columns

        +

        Generate columns via CSS within a single element.

        +{% highlight css %} +.content-columns(@width; @count; @gap) { + -webkit-column-width: @width; + -moz-column-width: @width; + column-width: @width; + -webkit-column-count: @count; + -moz-column-count: @count; + column-count: @count; + -webkit-column-gap: @gap; + -moz-column-gap: @gap; + column-gap: @gap; +} +{% endhighlight %} + +

        Gradients

        +

        Easily turn any two colors into a background gradient. Get more advanced and set a direction, use three colors, or use a radial gradient. With a single mixin you get all the prefixed syntaxes you'll need.

        +{% highlight css %} +#gradient > .vertical(#333; #000); +#gradient > .horizontal(#333; #000); +#gradient > .radial(#333; #000); +{% endhighlight %} +

        You can also specify the angle of a standard two-color, linear gradient:

        +{% highlight css %} +#gradient > .directional(#333; #000; 45deg); +{% endhighlight %} +

        If you need a barber-stripe style gradient, that's easy, too. Just specify a single color and we'll overlay a translucent white stripe.

        +{% highlight css %} +#gradient > .striped(#333; #000; 45deg); +{% endhighlight %} +

        Up the ante and use three colors instead. Set the first color, the second color, the second color's color stop (a decimal value like 0.25), and the third color with these mixins:

        +{% highlight css %} +#gradient > .vertical-three-colors(#777; #333; .25; #000); +#gradient > .horizontal-three-colors(#777; #333; .25; #000); +{% endhighlight %} +

        Heads up! Should you ever need to remove a gradient, be sure to remove any IE-specific filter you may have added. You can do that by using .reset-filter() mixin alignside background-image: none;.

        + + +

        Utility mixins

        +

        Utility mixins are mixins that combine otherwise unrelated CSS properties to achieve a specific goal or task.

        + +

        Clearfix

        +

        Forget adding class="clearfix" to any element and instead add the .clearfix() mixin where appropriate. Uses the micro clearfix from Nicolas Gallager.

        +{% highlight css %} +// Mixin +.clearfix() { + &:before, + &:after { + content: " "; + display: table; + } + &:after { + clear: both; + } +} + +// Usage +.container { + .clearfix(); +} +{% endhighlight %} + +

        Horizontal centering

        +

        Quickly center any element within its parent. Requires width or max-width to be set.

        +{% highlight css %} +// Mixin +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Usage +.container { + width: 940px; + .center-block(); +} +{% endhighlight %} + +

        Sizing helpers

        +

        Specify the dimensions of an object more easily.

        +{% highlight css %} +// Mixins +.size(@width; @height) { + width: @width; + height: @height; +} +.square(@size) { + .size(@size; @size); +} + +// Usage +.image { .size(400px; 300px); } +.avatar { .square(48px); } +{% endhighlight %} + +

        Resizable textareas

        +

        Easily configure the resize options for any textarea, or any other element. Defaults to normal browser behavior (both).

        +{% highlight css %} +.resizable(@direction: both) { + // Options: horizontal, vertical, both + resize: @direction; + // Safari fix + overflow: auto; +} +{% endhighlight %} + +

        Truncating text

        +

        Easily truncate text with an ellipsis with a single mixin. Requires element to be block or inline-block level.

        +{% highlight css %} +// Mixin +.text-truncate() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +// Usage +.branch-name { + display: inline-block; + max-width: 200px; + .text-truncate(); +} +{% endhighlight %} + +

        Retina images

        +

        Specify two image paths and the @1x image dimensions, and Preboot will provide an @2x media query. If you have many images to serve, consider writing your retina image CSS manually in a single media query.

        +{% highlight css %} +.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { + background-image: url("@{file-1x}"); + + @media + only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and ( min--moz-device-pixel-ratio: 2), + only screen and ( -o-min-device-pixel-ratio: 2/1), + only screen and ( min-device-pixel-ratio: 2), + only screen and ( min-resolution: 192dpi), + only screen and ( min-resolution: 2dppx) { + background-image: url("@{file-2x}"); + background-size: @width-1x @height-1x; + } +} + +// Usage +.jumbotron { + .retina-image("/img/bg-1x.png", "/img/bg-2x.png", 100px, 100px); +} +{% endhighlight %} +
        + + + + +
        + +

        While Bootstrap is built on Less, it also has an official Sass port. We maintain it in a separate GitHub repository and handle updates with a conversion script.

        + +

        What's included

        +

        Since the Sass port has a separate repo and serves a slightly different audience, the contents of the project differ greatly from the main Bootstrap project. This ensures the Sass port is as compatible with as many Sass-based systems as possible.

        + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        PathDescription
        lib/Ruby gem code (Sass configuration, Rails and Compass integrations)
        tasks/Converter scripts (turning upstream Less to Sass)
        test/Compilation tests
        templates/Compass package manifest
        vendor/assets/Sass, JavaScript, and font files
        RakefileInternal tasks, such as rake and convert
        +
        +

        Visit the Sass port's GitHub repository to see this files in action.

        + + +

        Installation

        +

        Use the appropriate guide for your environment of choice.

        + +

        Rails

        + +

        bootstrap-sass is easy to drop into Rails with the asset pipeline.

        + +

        In your Gemfile you need to add the bootstrap-sass gem, and ensure that the sass-rails gem is present—it is added to new Rails applications by default.

        + +{% highlight ruby %} +gem 'sass-rails', '>= 3.2' # sass-rails needs to be higher than 3.2 +gem 'bootstrap-sass', '~> 3.0.3.0' +{% endhighlight %} + +

        bundle install and restart your server to make the files available through the pipeline.

        + + +

        Compass without Rails

        + +

        Install the gem:

        + +{% highlight bash %} +gem install bootstrap-sass +{% endhighlight %} + +

        If you have an existing Compass project:

        + +{% highlight ruby %} +# config.rb: +require 'bootstrap-sass' +{% endhighlight %} + +{% highlight bash %} +bundle exec compass install bootstrap +{% endhighlight %} + +

        If you are creating a new Compass project, you can generate it with bootstrap-sass support:

        + +{% highlight bash %} +bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap +{% endhighlight %} + +

        This will create a new Compass project with the following files in it:

        + +
          +
        • _variables.scss — all of bootstrap variables (override them here). +
        • +
        • styles.scss — main project SCSS file, import `variables` and `bootstrap`.
        • +
        + + +

        Sass-only without Compass or Rails

        + +

        Require the gem, and load paths and Sass helpers will be configured automatically:

        + +{% highlight ruby %} +require 'bootstrap-sass' +{% endhighlight %} + +

        Using bootstrap-sass as a Bower package is still being tested. You can install it with:

        + +{% highlight bash %} +bower install 'git://github.com/twbs/bootstrap-sass.git#v3.0.3.0' +{% endhighlight %} + +

        JS and fonts

        + +

        If you are using Rails or Sprockets, see Usage. If none of Rails/Sprockets/Compass were detected the fonts will be referenced as:

        + +{% highlight sass %} +"#{$icon-font-path}/#{$icon-font-name}.eot" +{% endhighlight %} + +

        $icon-font-path defaults to bootstrap/. When not using an asset pipeline, you have to copy fonts and javascripts from the gem.

        + +{% highlight bash %} +mkdir public/fonts +cp -r $(bundle show bootstrap-sass)/vendor/assets/fonts/ public/fonts/ +mkdir public/javascripts +cp -r $(bundle show bootstrap-sass)/vendor/assets/javascripts/ public/javascripts/ +{% endhighlight %} + +

        In ruby you can get the assets' location in the filesystem like this:

        + +{% highlight ruby %} +Bootstrap.stylesheets_path +Bootstrap.fonts_path +Bootstrap.javascripts_path +{% endhighlight %} + + +

        Usage

        + +

        Sass

        + +

        Import Bootstrap into a Sass file (for example, application.css.scss) to get all of Bootstrap's styles, mixins and variables! We recommend against using //= require directives, since none of your other stylesheets will be able to access the Bootstrap mixins or variables.

        + +{% highlight sass %} +@import "bootstrap"; +{% endhighlight %} + +

        You can also include optional Bootstrap theme:

        + +{% highlight sass %} +@import "bootstrap/theme"; +{% endhighlight %} + +

        The full list of Bootstrap variables can be found in the Customizer. You can override these by simply redefining the variable before the @import directive, e.g.:

        + +{% highlight sass %} +$navbar-default-bg: #312312; +$light-orange: #ff8c00; +$navbar-default-color: $light-orange; + +@import "bootstrap"; +{% endhighlight %} + +

        You can also import components explicitly. To start with a full list of modules copy this file from the gem:

        + +{% highlight bash %} +# copy and prepend "bootstrap/" to the @import paths: +sed 's/@import "/@import "bootstrap\//' \ +$(bundle show bootstrap-sass)/vendor/assets/stylesheets/bootstrap/bootstrap.scss > \ +app/assets/stylesheets/bootstrap-custom.scss +{% endhighlight %} + +

        In your application.sass, replace @import 'bootstrap' with:

        + +{% highlight sass %} +@import 'bootstrap-custom'; +{% endhighlight %} + +

        Comment out any components you do not want from bootstrap-custom.

        + +

        JavaScript

        + +

        We have a helper that includes all Bootstrap javascripts. If you use Rails (or Sprockets separately), put this in your Javascript manifest (usually in application.js) to load the files in the [correct order](/vendor/assets/javascripts/bootstrap.js):

        + +{% highlight js %} +// Loads all Bootstrap javascripts +//= require bootstrap +{% endhighlight %} + +

        You can also load individual modules, provided you also require any dependencies. You can check dependencies in the [Bootstrap JS documentation][jsdocs].

        + +{% highlight js %} +//= require bootstrap/scrollspy +//= require bootstrap/modal +//= require bootstrap/dropdown +{% endhighlight %} + + +
        diff --git a/docs/customize.html b/docs/customize.html new file mode 100644 index 000000000..2b9e5d770 --- /dev/null +++ b/docs/customize.html @@ -0,0 +1,1722 @@ +--- +layout: default +title: Customize and download +slug: customize +lead: Customize Bootstrap's components, LESS variables, and jQuery plugins to get your very own version. +base_url: "../" +--- + + +
        +
        + +

        Choose which LESS files to compile into your custom build of Bootstrap. Not sure which files to use? Read through the CSS and Components pages in the docs.

        + +
        +
        +

        Common CSS

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

        Components

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

        JavaScript components

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

        Utilities

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

        Choose which jQuery plugins should be included in your custom JavaScript files. Unsure what to include? Read the JavaScript page in the docs.

        +
        +
        +

        Linked to components

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

        Magic

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

        Produces two files

        +

        All checked plugins will be compiled into a readable bootstrap.js and a minified bootstrap.min.js. We recommend you use the minified version in production.

        +
        + +
        +

        jQuery required

        +

        All plugins require the latest version of jQuery to be included.

        +
        +
        + + + +
        + +

        Customize LESS variables to define colors, sizes and more inside your custom CSS stylesheets.

        + +

        Basics

        + + +

        Color system

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

        Body scaffolding

        +
        +
        + + +

        Background color for <body>.

        + + +

        Global text color on <body>.

        +
        +
        + + +

        Global textual link color

        + + +

        Link hover color set via darken() function

        +
        +
        + + +

        Typography

        +
        +
        +

        Generic font variables

        + + +

        Default sans-serif fonts.

        + + +

        Default serif fonts.

        + + +

        Default monospace fonts for <code> and <pre>.

        + +

        Base type styes

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

        Heading font sizes

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

        Headings

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

        Code blocks

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

        Media queries breakpoints

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

        Layout and grid system

        +
        +
        + + +

        For @screen-sm-min and up.

        +
        +
        + + +

        For @screen-md-min and up.

        +
        +
        +
        + + +

        For @screen-lg-min and up.

        +
        +
        + +
        +
        + + +

        Number of columns in the grid.

        +
        +
        + + +

        Padding between columns.

        +
        +
        +
        + + +

        Point at which the navbar stops collapsing.

        +
        +
        + + +

        Components

        + +

        Padding

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

        Rounded corners

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

        Component active state

        +
        +
        + + +

        Global color for active items (e.g., navs or dropdowns)

        +
        +
        + + +

        Global background color for active items (e.g., navs or dropdowns)

        +
        +
        + +

        Carets

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

        Buttons

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

        Default

        + + + + + + +

        Primary

        + + + + + + +

        Info

        + + + + + + +
        +
        +

        Success

        + + + + + + +

        Warning

        + + + + + + +

        Danger

        + + + + + + +
        +
        + + +

        Form states and alerts

        +
        +
        +

        Success

        + + + + + + +

        Warning

        + + + + + + +
        +
        +

        Danger

        + + + + + + +

        Info

        + + + + + + +
        +
        + + +

        Alerts

        + +

        Base styles

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

        Warning

        + + + + + + + +

        Success

        + + + + + + +
        +
        +

        Danger

        + + + + + + + +

        Info

        + + + + + + +
        +
        + + +

        Navbar

        + +

        Base styles

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

        Default navbar

        +

        Basics

        + + + + + + + +

        Links

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

        Brand

        + + + + + + + +

        Toggle

        + + + + + + +
        + +
        +

        Inverted navbar

        + +

        Basics

        + + + + + + + +

        Links

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

        Brand

        + + + + + + + +

        Toggle

        + + + + + + +
        +
        + + +

        Nav

        + +

        Default nav

        +
        +
        +

        Common values

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

        Pills

        + + + + +
        +
        +

        Tabs

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

        Tables

        +
        +
        + + +

        Default padding for <th>s and <td>s

        + + +

        Default padding cells in .table-condensed

        +
        +
        + + +

        Default background color used for all tables.

        + + +

        Background color used for .table-striped.

        +
        +
        + + +

        Background color used for .table-hover.

        + + +

        Border color for table and cell borders.

        +
        +
        + + +

        Forms

        + +

        Inputs

        +
        +
        + + +

        Text color for <input>s

        + + +

        <input> background color

        +
        +
        + + +

        <input> border color

        + + +

        <input> border radius

        +
        +
        + + +

        Placeholder text color

        +
        +
        + +

        Input states

        +
        +
        + + +

        Border color for inputs on focus

        +
        +
        + + +

        <input disabled> background color

        +
        +
        + +

        Input sizes

        +
        +
        + + +

        Default .form-control height

        +
        +
        + + +

        Large .form-control height

        +
        +
        + + +

        Small .form-control height

        +
        +
        + +

        Legend

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

        Input groups

        +
        +
        + + +

        Background color for textual input addons

        +
        +
        + + +

        Border color for textual input addons

        +
        +
        + + +

        Dropdowns

        +
        +
        +

        Dropdown menu

        + + +

        Dropdown menu background color

        + + +

        Dropdown menu border color

        + + +

        Dropdown menu border color for IE8

        + + +

        Indicator arrow for showing an element has a dropdown

        + + +

        Dropdown divider top border color

        + + +

        Text color for headers within dropdown menus

        +
        +
        +

        Dropdown items

        + + +

        Dropdown text color

        + + + +

        Hovered dropdown menu entry text color

        + + +

        Hovered dropdown menu entry background color

        + + + +

        Active dropdown menu entry text color

        + + +

        Active dropdown menu entry background color

        + + + +

        Disabled dropdown menu entry background color

        +
        +
        + + +

        Panels and wells

        + +

        Common panel styles

        +
        +
        + + + + +

        Border color for elements within panels

        +
        +
        + + + + +
        +
        +

        Contextual panel colors

        +
        +
        +

        Default

        + + + + + + + +

        Primary

        + + + + + + + +

        Success

        + + + + + + +
        +
        +

        Info

        + + + + + + + +

        Warning

        + + + + + + + +

        Danger

        + + + + + + +
        +
        + +

        Wells

        + + + + + + +

        Accordion

        + + + + +

        Badges

        + +

        Base styles

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

        States

        +
        +
        + + +

        Linked badge text color on hover

        +
        +
        + + +

        Badge text color in active nav link

        +
        +
        + + +

        Badge background color in active nav link

        +
        +
        + + +

        Breadcrumbs

        +
        +
        + + +

        Breadcrumb text color

        + + +

        Breadcrumb background color

        +
        +
        + + +

        Text color of current page in the breadcrumb

        + + +

        Textual separator for between breadcrumb elements

        +
        +
        + +

        Jumbotron

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

        Modals

        + +

        Base modal

        +
        +
        + + +

        Padding applied to the modal body

        +
        +
        + + +

        Modal backdrop background color

        +
        +
        + + +

        Modal backdrop opacity

        +
        +
        + +

        Modal header and footer

        +
        +
        + + +

        Padding applied to the modal title

        +
        +
        + + +

        Modal title line-height

        +
        +
        + + +

        Modal header border color

        + + +

        Modal footer border color

        +
        +
        + +

        Modal content

        +
        +
        + + +

        Background color of modal content area

        +
        +
        + + +

        Modal content border color

        +
        +
        + + +

        Modal content border color for IE8

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

        List group

        + +

        Base styles

        +
        +
        + + +

        Background color on .list-group-item

        +
        +
        + + +

        .list-group-item border color

        +
        +
        + + +

        List group border radius

        +
        +
        + +

        Hover and active states

        +
        +
        + + +

        Background color of single list elements on hover

        +
        +
        +
        +
        + + +

        Text color of active list elements

        +
        +
        + + +

        Background color of active list elements

        +
        +
        + + +

        Border color of active list elements

        +
        +
        + + +

        Thumbnails

        + +

        Base thumbnail

        +
        +
        + + +

        Padding around the thumbnail image

        + + +

        Thumbnail background color

        +
        +
        + + +

        Thumbnail border color

        + + +

        Thumbnail border radius

        +
        +
        + +

        Thumbnail captions

        +
        +
        + + +

        Padding around the thumbnail caption

        +
        +
        + + +

        Custom text color for thumbnail captions

        +
        +
        + + +

        Progress bars

        + +

        Shared styles

        +
        +
        + + +

        Background color of the whole progress component

        +
        +
        + + +

        Info progress bar text color

        +
        +
        + + +

        Info progress bar text shadow

        +
        +
        + + +

        Default progress bar color

        +
        +
        + +

        Contextual states

        +
        +
        + + +

        Success progress bar color

        + + +

        Info progress bar color

        +
        +
        + + +

        Warning progress bar color

        + + +

        Danger progress bar color

        +
        +
        + + +

        Pagination

        + +

        Default styles

        +
        +
        + + +

        Background color

        +
        +
        + + +

        Border color

        +
        +
        + + +

        Background hover color

        +
        +
        + +

        Disabled and active states

        +
        +
        + + +

        Disabled text color

        +
        +
        + + +

        Active background color

        +
        +
        + + +

        Active text color

        +
        +
        + + +

        Pager

        +
        +
        + + +

        Pager border radius

        +
        +
        + + +

        Pager disabled state color

        +
        +
        + + +

        Labels

        +
        +
        + + +

        Default label text color

        +
        +
        + + +

        Default text color of a linked label

        +
        +
        + + +

        Default label background color

        +
        +
        + +
        +
        + + +

        Primary label background color

        + + +

        Success label background color

        +
        +
        + + +

        Info label background color

        + + +

        Warning label background color

        +
        +
        + + +

        Danger label background color

        +
        +
        + + +

        Tooltips and popovers

        + +

        Tooltip

        +
        +
        + + +

        Tooltip text color

        + + +

        Tooltip background color

        +
        +
        + + +

        Tooltip arrow width

        + + +

        Tooltip arrow color

        +
        +
        + + +

        Tooltip max width

        +
        +
        + +

        Popovers

        + +

        Base styles

        +
        +
        + + +

        Popover body background color

        + + +

        Popover maximum width

        +
        +
        + + +

        Popover border color

        + + +

        Popover fallback border color

        +
        +
        + + +

        Popover title background color

        +
        +
        + +

        Popover arrows

        +
        +
        + + +

        Popover arrow width

        +
        +
        + + +

        Popover arrow color

        +
        +
        +
        +
        + + +

        Popover outer arrow width

        +
        +
        + + +

        Popover outer arrow color

        +
        +
        + + +

        Popover outer arrow fallback color

        +
        +
        + + +

        Close button

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

        Type

        +
        +
        + + +

        Text muted color

        +
        +
        + + +

        Abbreviations and acronyms border color

        +
        +
        + + +

        Headings small color

        +
        +
        + + +

        Blockquote small color

        +
        +
        + + +

        Blockquote border color

        +
        +
        + + +

        Page header border color

        +
        +
        + + +

        Other

        +
        +
        + + +

        Horizontal line color

        +
        +
        + + +

        Horizontal offset for forms and lists

        +
        +
        +
        + +
        + +

        Hooray! Your custom version of Bootstrap is now ready to be compiled. Just click the button below to finish the process.

        +
        + +
        +
        +
        diff --git a/docs/dist/css/bootstrap-theme.css b/docs/dist/css/bootstrap-theme.css new file mode 100644 index 000000000..1bd03552e --- /dev/null +++ b/docs/dist/css/bootstrap-theme.css @@ -0,0 +1,347 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #2b669a; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #2d6ca2; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #2d6ca2; + border-color: #2b669a; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; +} +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%); + background-image: linear-gradient(to bottom, #222 0%, #282828 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); + background-repeat: repeat-x; + border-color: #3278b3; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/docs/dist/css/bootstrap-theme.css.map b/docs/dist/css/bootstrap-theme.css.map new file mode 100644 index 000000000..8232859ec --- /dev/null +++ b/docs/dist/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins.less"],"names":[],"mappings":"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","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &:-moz-placeholder { color: @color; } // Firefox 4-18\n &::-moz-placeholder { color: @color; // Firefox 19+\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n -o-user-select: @select;\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n &,\n tr&,\n th&,\n td& { display: none !important; }\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.make-grid-columns-float(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.make-grid(@index, @class, @type) when (@index >= 0) {\n .calc-grid(@index, @class, @type);\n // next iteration\n .make-grid((@index - 1), @class, @type);\n}\n\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedack icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. ``\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea& {\n height: auto;\n }\n}\n","//\n// Variables\n// --------------------------------------------------\n\n\n// Global values\n// --------------------------------------------------\n\n// Grays\n// -------------------------\n\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-dark: lighten(#000, 20%); // #333\n@gray: lighten(#000, 33.5%); // #555\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n\n// Brand colors\n// -------------------------\n\n@brand-primary: #428bca;\n@brand-success: #5cb85c;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n@brand-info: #5bc0de;\n\n// Scaffolding\n// -------------------------\n\n@body-bg: #fff;\n@text-color: @gray-dark;\n\n// Links\n// -------------------------\n\n@link-color: @brand-primary;\n@link-hover-color: darken(@link-color, 15%);\n\n// Typography\n// -------------------------\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n@font-family-monospace: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base: @font-family-sans-serif;\n\n@font-size-base: 14px;\n@font-size-large: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small: ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1: floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2: floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5: @font-size-base;\n@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px\n\n@line-height-base: 1.428571429; // 20/14\n@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px\n\n@headings-font-family: inherit;\n@headings-font-weight: 500;\n@headings-line-height: 1.1;\n@headings-color: inherit;\n\n\n// Iconography\n// -------------------------\n\n@icon-font-path: \"../fonts/\";\n@icon-font-name: \"glyphicons-halflings-regular\";\n\n\n// Components\n// -------------------------\n// Based on 14px font-size and 1.428 line-height (~20px to start)\n\n@padding-base-vertical: 6px;\n@padding-base-horizontal: 12px;\n\n@padding-large-vertical: 10px;\n@padding-large-horizontal: 16px;\n\n@padding-small-vertical: 5px;\n@padding-small-horizontal: 10px;\n\n@padding-xs-vertical: 1px;\n@padding-xs-horizontal: 5px;\n\n@line-height-large: 1.33;\n@line-height-small: 1.5;\n\n@border-radius-base: 4px;\n@border-radius-large: 6px;\n@border-radius-small: 3px;\n\n@component-active-color: #fff;\n@component-active-bg: @brand-primary;\n\n@caret-width-base: 4px;\n@caret-width-large: 5px;\n\n// Tables\n// -------------------------\n\n@table-cell-padding: 8px;\n@table-condensed-cell-padding: 5px;\n\n@table-bg: transparent; // overall background-color\n@table-bg-accent: #f9f9f9; // for striping\n@table-bg-hover: #f5f5f5;\n@table-bg-active: @table-bg-hover;\n\n@table-border-color: #ddd; // table and cell border\n\n\n// Buttons\n// -------------------------\n\n@btn-font-weight: normal;\n\n@btn-default-color: #333;\n@btn-default-bg: #fff;\n@btn-default-border: #ccc;\n\n@btn-primary-color: #fff;\n@btn-primary-bg: @brand-primary;\n@btn-primary-border: darken(@btn-primary-bg, 5%);\n\n@btn-success-color: #fff;\n@btn-success-bg: @brand-success;\n@btn-success-border: darken(@btn-success-bg, 5%);\n\n@btn-warning-color: #fff;\n@btn-warning-bg: @brand-warning;\n@btn-warning-border: darken(@btn-warning-bg, 5%);\n\n@btn-danger-color: #fff;\n@btn-danger-bg: @brand-danger;\n@btn-danger-border: darken(@btn-danger-bg, 5%);\n\n@btn-info-color: #fff;\n@btn-info-bg: @brand-info;\n@btn-info-border: darken(@btn-info-bg, 5%);\n\n@btn-link-disabled-color: @gray-light;\n\n\n// Forms\n// -------------------------\n\n@input-bg: #fff;\n@input-bg-disabled: @gray-lighter;\n\n@input-color: @gray;\n@input-border: #ccc;\n@input-border-radius: @border-radius-base;\n@input-border-focus: #66afe9;\n\n@input-color-placeholder: @gray-light;\n\n@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);\n@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color: @gray-dark;\n@legend-border-color: #e5e5e5;\n\n@input-group-addon-bg: @gray-lighter;\n@input-group-addon-border-color: @input-border;\n\n\n// Dropdowns\n// -------------------------\n\n@dropdown-bg: #fff;\n@dropdown-border: rgba(0,0,0,.15);\n@dropdown-fallback-border: #ccc;\n@dropdown-divider-bg: #e5e5e5;\n\n@dropdown-link-color: @gray-dark;\n@dropdown-link-hover-color: darken(@gray-dark, 5%);\n@dropdown-link-hover-bg: #f5f5f5;\n\n@dropdown-link-active-color: @component-active-color;\n@dropdown-link-active-bg: @component-active-bg;\n\n@dropdown-link-disabled-color: @gray-light;\n\n@dropdown-header-color: @gray-light;\n\n// Note: Deprecated @dropdown-caret-color as of v3.1\n@dropdown-caret-color: #000;\n\n\n// COMPONENT VARIABLES\n// --------------------------------------------------\n\n\n// Z-index master list\n// -------------------------\n// Used for a bird's eye view of components dependent on the z-axis\n// Try to avoid customizing these :)\n\n@zindex-navbar: 1000;\n@zindex-dropdown: 1000;\n@zindex-popover: 1010;\n@zindex-tooltip: 1030;\n@zindex-navbar-fixed: 1030;\n@zindex-modal-background: 1040;\n@zindex-modal: 1050;\n\n// Media queries breakpoints\n// --------------------------------------------------\n\n// Extra small screen / phone\n// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1\n@screen-xs: 480px;\n@screen-xs-min: @screen-xs;\n@screen-phone: @screen-xs-min;\n\n// Small screen / tablet\n// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1\n@screen-sm: 768px;\n@screen-sm-min: @screen-sm;\n@screen-tablet: @screen-sm-min;\n\n// Medium screen / desktop\n// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1\n@screen-md: 992px;\n@screen-md-min: @screen-md;\n@screen-desktop: @screen-md-min;\n\n// Large screen / wide desktop\n// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1\n@screen-lg: 1200px;\n@screen-lg-min: @screen-lg;\n@screen-lg-desktop: @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max: (@screen-sm-min - 1);\n@screen-sm-max: (@screen-md-min - 1);\n@screen-md-max: (@screen-lg-min - 1);\n\n\n// Grid system\n// --------------------------------------------------\n\n// Number of columns in the grid system\n@grid-columns: 12;\n// Padding, to be divided by two and applied to the left and right of all columns\n@grid-gutter-width: 30px;\n\n// Navbar collapse\n\n// Point at which the navbar becomes uncollapsed\n@grid-float-breakpoint: @screen-sm-min;\n// Point at which the navbar begins collapsing\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n// Navbar\n// -------------------------\n\n// Basics of a navbar\n@navbar-height: 50px;\n@navbar-margin-bottom: @line-height-computed;\n@navbar-border-radius: @border-radius-base;\n@navbar-padding-horizontal: floor((@grid-gutter-width / 2));\n@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);\n\n@navbar-default-color: #777;\n@navbar-default-bg: #f8f8f8;\n@navbar-default-border: darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color: #777;\n@navbar-default-link-hover-color: #333;\n@navbar-default-link-hover-bg: transparent;\n@navbar-default-link-active-color: #555;\n@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color: #ccc;\n@navbar-default-link-disabled-bg: transparent;\n\n// Navbar brand label\n@navbar-default-brand-color: @navbar-default-link-color;\n@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg: transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg: #ddd;\n@navbar-default-toggle-icon-bar-bg: #888;\n@navbar-default-toggle-border-color: #ddd;\n\n\n// Inverted navbar\n//\n// Reset inverted navbar basics\n@navbar-inverse-color: @gray-light;\n@navbar-inverse-bg: #222;\n@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color: @gray-light;\n@navbar-inverse-link-hover-color: #fff;\n@navbar-inverse-link-hover-bg: transparent;\n@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg: darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color: #444;\n@navbar-inverse-link-disabled-bg: transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color: @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color: #fff;\n@navbar-inverse-brand-hover-bg: transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg: #333;\n@navbar-inverse-toggle-icon-bar-bg: #fff;\n@navbar-inverse-toggle-border-color: #333;\n\n\n// Navs\n// -------------------------\n\n@nav-link-padding: 10px 15px;\n@nav-link-hover-bg: @gray-lighter;\n\n@nav-disabled-link-color: @gray-light;\n@nav-disabled-link-hover-color: @gray-light;\n\n@nav-open-link-hover-color: #fff;\n\n// Tabs\n@nav-tabs-border-color: #ddd;\n\n@nav-tabs-link-hover-border-color: @gray-lighter;\n\n@nav-tabs-active-link-hover-bg: @body-bg;\n@nav-tabs-active-link-hover-color: @gray;\n@nav-tabs-active-link-hover-border-color: #ddd;\n\n@nav-tabs-justified-link-border-color: #ddd;\n@nav-tabs-justified-active-link-border-color: @body-bg;\n\n// Pills\n@nav-pills-border-radius: @border-radius-base;\n@nav-pills-active-link-hover-bg: @component-active-bg;\n@nav-pills-active-link-hover-color: @component-active-color;\n\n\n// Pagination\n// -------------------------\n\n@pagination-color: @link-color;\n@pagination-bg: #fff;\n@pagination-border: #ddd;\n\n@pagination-hover-color: @link-hover-color;\n@pagination-hover-bg: @gray-lighter;\n@pagination-hover-border: #ddd;\n\n@pagination-active-color: #fff;\n@pagination-active-bg: @brand-primary;\n@pagination-active-border: @brand-primary;\n\n@pagination-disabled-color: @gray-light;\n@pagination-disabled-bg: #fff;\n@pagination-disabled-border: #ddd;\n\n\n// Pager\n// -------------------------\n\n@pager-bg: @pagination-bg;\n@pager-border: @pagination-border;\n@pager-border-radius: 15px;\n\n@pager-hover-bg: @pagination-hover-bg;\n\n@pager-active-bg: @pagination-active-bg;\n@pager-active-color: @pagination-active-color;\n\n@pager-disabled-color: @pagination-disabled-color;\n\n\n// Jumbotron\n// -------------------------\n\n@jumbotron-padding: 30px;\n@jumbotron-color: inherit;\n@jumbotron-bg: @gray-lighter;\n@jumbotron-heading-color: inherit;\n@jumbotron-font-size: ceil((@font-size-base * 1.5));\n\n\n// Form states and alerts\n// -------------------------\n\n@state-success-text: #3c763d;\n@state-success-bg: #dff0d8;\n@state-success-border: darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text: #31708f;\n@state-info-bg: #d9edf7;\n@state-info-border: darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text: #8a6d3b;\n@state-warning-bg: #fcf8e3;\n@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text: #a94442;\n@state-danger-bg: #f2dede;\n@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);\n\n\n// Tooltips\n// -------------------------\n@tooltip-max-width: 200px;\n@tooltip-color: #fff;\n@tooltip-bg: #000;\n@tooltip-opacity: .9;\n\n@tooltip-arrow-width: 5px;\n@tooltip-arrow-color: @tooltip-bg;\n\n\n// Popovers\n// -------------------------\n@popover-bg: #fff;\n@popover-max-width: 276px;\n@popover-border-color: rgba(0,0,0,.2);\n@popover-fallback-border-color: #ccc;\n\n@popover-title-bg: darken(@popover-bg, 3%);\n\n@popover-arrow-width: 10px;\n@popover-arrow-color: #fff;\n\n@popover-arrow-outer-width: (@popover-arrow-width + 1);\n@popover-arrow-outer-color: rgba(0,0,0,.25);\n@popover-arrow-outer-fallback-color: #999;\n\n\n// Labels\n// -------------------------\n\n@label-default-bg: @gray-light;\n@label-primary-bg: @brand-primary;\n@label-success-bg: @brand-success;\n@label-info-bg: @brand-info;\n@label-warning-bg: @brand-warning;\n@label-danger-bg: @brand-danger;\n\n@label-color: #fff;\n@label-link-hover-color: #fff;\n\n\n// Modals\n// -------------------------\n@modal-inner-padding: 20px;\n\n@modal-title-padding: 15px;\n@modal-title-line-height: @line-height-base;\n\n@modal-content-bg: #fff;\n@modal-content-border-color: rgba(0,0,0,.2);\n@modal-content-fallback-border-color: #999;\n\n@modal-backdrop-bg: #000;\n@modal-backdrop-opacity: .5;\n@modal-header-border-color: #e5e5e5;\n@modal-footer-border-color: @modal-header-border-color;\n\n@modal-lg: 900px;\n@modal-sm: 300px;\n\n\n// Alerts\n// -------------------------\n@alert-padding: 15px;\n@alert-border-radius: @border-radius-base;\n@alert-link-font-weight: bold;\n\n@alert-success-bg: @state-success-bg;\n@alert-success-text: @state-success-text;\n@alert-success-border: @state-success-border;\n\n@alert-info-bg: @state-info-bg;\n@alert-info-text: @state-info-text;\n@alert-info-border: @state-info-border;\n\n@alert-warning-bg: @state-warning-bg;\n@alert-warning-text: @state-warning-text;\n@alert-warning-border: @state-warning-border;\n\n@alert-danger-bg: @state-danger-bg;\n@alert-danger-text: @state-danger-text;\n@alert-danger-border: @state-danger-border;\n\n\n// Progress bars\n// -------------------------\n@progress-bg: #f5f5f5;\n@progress-bar-color: #fff;\n\n@progress-bar-bg: @brand-primary;\n@progress-bar-success-bg: @brand-success;\n@progress-bar-warning-bg: @brand-warning;\n@progress-bar-danger-bg: @brand-danger;\n@progress-bar-info-bg: @brand-info;\n\n\n// List group\n// -------------------------\n@list-group-bg: #fff;\n@list-group-border: #ddd;\n@list-group-border-radius: @border-radius-base;\n\n@list-group-hover-bg: #f5f5f5;\n@list-group-active-color: @component-active-color;\n@list-group-active-bg: @component-active-bg;\n@list-group-active-border: @list-group-active-bg;\n@list-group-active-text-color: lighten(@list-group-active-bg, 40%);\n\n@list-group-link-color: #555;\n@list-group-link-heading-color: #333;\n\n// Panels\n// -------------------------\n@panel-bg: #fff;\n@panel-body-padding: 15px;\n@panel-border-radius: @border-radius-base;\n\n@panel-inner-border: #ddd;\n@panel-footer-bg: #f5f5f5;\n\n@panel-default-text: @gray-dark;\n@panel-default-border: #ddd;\n@panel-default-heading-bg: #f5f5f5;\n\n@panel-primary-text: #fff;\n@panel-primary-border: @brand-primary;\n@panel-primary-heading-bg: @brand-primary;\n\n@panel-success-text: @state-success-text;\n@panel-success-border: @state-success-border;\n@panel-success-heading-bg: @state-success-bg;\n\n@panel-warning-text: @state-warning-text;\n@panel-warning-border: @state-warning-border;\n@panel-warning-heading-bg: @state-warning-bg;\n\n@panel-danger-text: @state-danger-text;\n@panel-danger-border: @state-danger-border;\n@panel-danger-heading-bg: @state-danger-bg;\n\n@panel-info-text: @state-info-text;\n@panel-info-border: @state-info-border;\n@panel-info-heading-bg: @state-info-bg;\n\n\n// Thumbnails\n// -------------------------\n@thumbnail-padding: 4px;\n@thumbnail-bg: @body-bg;\n@thumbnail-border: #ddd;\n@thumbnail-border-radius: @border-radius-base;\n\n@thumbnail-caption-color: @text-color;\n@thumbnail-caption-padding: 9px;\n\n\n// Wells\n// -------------------------\n@well-bg: #f5f5f5;\n@well-border: darken(@well-bg, 7%);\n\n\n// Badges\n// -------------------------\n@badge-color: #fff;\n@badge-link-hover-color: #fff;\n@badge-bg: @gray-light;\n\n@badge-active-color: @link-color;\n@badge-active-bg: #fff;\n\n@badge-font-weight: bold;\n@badge-line-height: 1;\n@badge-border-radius: 10px;\n\n\n// Breadcrumbs\n// -------------------------\n@breadcrumb-padding-vertical: 8px;\n@breadcrumb-padding-horizontal: 15px;\n@breadcrumb-bg: #f5f5f5;\n@breadcrumb-color: #ccc;\n@breadcrumb-active-color: @gray-light;\n@breadcrumb-separator: \"/\";\n\n\n// Carousel\n// ------------------------\n\n@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color: #fff;\n@carousel-control-width: 15%;\n@carousel-control-opacity: .5;\n@carousel-control-font-size: 20px;\n\n@carousel-indicator-active-bg: #fff;\n@carousel-indicator-border-color: #fff;\n\n@carousel-caption-color: #fff;\n\n\n// Close\n// ------------------------\n@close-font-weight: bold;\n@close-color: #000;\n@close-text-shadow: 0 1px 0 #fff;\n\n\n// Code\n// ------------------------\n@code-color: #c7254e;\n@code-bg: #f9f2f4;\n\n@kbd-color: #fff;\n@kbd-bg: #333;\n\n@pre-bg: #f5f5f5;\n@pre-color: @gray-dark;\n@pre-border-color: #ccc;\n@pre-scrollable-max-height: 340px;\n\n// Type\n// ------------------------\n@text-muted: @gray-light;\n@abbr-border-color: @gray-light;\n@headings-small-color: @gray-light;\n@blockquote-small-color: @gray-light;\n@blockquote-border-color: @gray-lighter;\n@page-header-border-color: @gray-lighter;\n\n// Miscellaneous\n// -------------------------\n\n// Hr border color\n@hr-border: @gray-lighter;\n\n// Horizontal forms & lists\n@component-offset-horizontal: 180px;\n\n\n// Container sizes\n// --------------------------------------------------\n\n// Small screen / tablet\n@container-tablet: ((720px + @grid-gutter-width));\n@container-sm: @container-tablet;\n\n// Medium screen / desktop\n@container-desktop: ((940px + @grid-gutter-width));\n@container-md: @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop: ((1140px + @grid-gutter-width));\n@container-lg: @container-large-desktop;\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 200;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: 14px base font * 85% = about 12px\nsmall,\n.small { font-size: 85%; }\n\n// Undo browser default styling\ncite { font-style: normal; }\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n color: @brand-primary;\n &:hover {\n color: darken(@brand-primary, 10%);\n }\n}\n.text-warning {\n color: @state-warning-text;\n &:hover {\n color: darken(@state-warning-text, 10%);\n }\n}\n.text-danger {\n color: @state-danger-text;\n &:hover {\n color: darken(@state-danger-text, 10%);\n }\n}\n.text-success {\n color: @state-success-text;\n &:hover {\n color: darken(@state-success-text, 10%);\n }\n}\n.text-info {\n color: @state-info-text;\n &:hover {\n color: darken(@state-info-text, 10%);\n }\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n background-color: @brand-primary;\n a&:hover {\n background-color: darken(@brand-primary, 10%);\n }\n}\n.bg-warning {\n background-color: @state-warning-bg;\n a&:hover {\n background-color: darken(@state-warning-bg, 10%);\n }\n}\n.bg-danger {\n background-color: @state-danger-bg;\n a&:hover {\n background-color: darken(@state-danger-bg, 10%);\n }\n}\n.bg-success {\n background-color: @state-success-bg;\n a&:hover {\n background-color: darken(@state-success-bg, 10%);\n }\n}\n.bg-info {\n background-color: @state-info-bg;\n a&:hover {\n background-color: darken(@state-info-bg, 10%);\n }\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// --------------------------------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n\n &:first-child {\n padding-left: 0;\n }\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n@media (min-width: @grid-float-breakpoint) {\n .dl-horizontal {\n dt {\n float: left;\n width: (@component-offset-horizontal - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @component-offset-horizontal;\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n }\n}\n\n// MISC\n// ----\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: (@font-size-base * 1.25);\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Deprecating small and .small for v3.1\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Quotes\nblockquote:before,\nblockquote:after {\n content: \"\";\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n white-space: nowrap;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid-columns-float(xs);\n.make-grid(@grid-columns, xs, width);\n.make-grid(@grid-columns, xs, pull);\n.make-grid(@grid-columns, xs, push);\n.make-grid(@grid-columns, xs, offset);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid-columns-float(sm);\n .make-grid(@grid-columns, sm, width);\n .make-grid(@grid-columns, sm, pull);\n .make-grid(@grid-columns, sm, push);\n .make-grid(@grid-columns, sm, offset);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid-columns-float(md);\n .make-grid(@grid-columns, md, width);\n .make-grid(@grid-columns, md, pull);\n .make-grid(@grid-columns, md, push);\n .make-grid(@grid-columns, md, offset);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid-columns-float(lg);\n .make-grid(@grid-columns, lg, width);\n .make-grid(@grid-columns, lg, pull);\n .make-grid(@grid-columns, lg, push);\n .make-grid(@grid-columns, lg, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n max-width: 100%;\n background-color: @table-bg;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-child(odd) {\n > td,\n > th {\n background-color: @table-bg-accent;\n }\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n > td,\n > th {\n background-color: @table-bg-hover;\n }\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n.table-row-variant(info; @state-info-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n@media (max-width: @screen-xs-max) {\n .table-responsive {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n overflow-x: scroll;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n -webkit-overflow-scrolling: touch;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; /* IE8-9 */\n line-height: normal;\n}\n\n// Set the height of select and file controls to match text inputs\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611\nselect optgroup {\n font-size: inherit;\n font-style: inherit;\n font-family: inherit;\n}\n\n// Focus for select, file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Fix for Chrome number input\n// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.\n// See https://github.com/twbs/bootstrap/issues/8350 for more.\ninput[type=\"number\"] {\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n height: auto;\n }\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n //\n // Placeholder text gets special styles because when browsers invalidate entire\n // lines if it doesn't understand a selector/\n .placeholder();\n\n // Disabled and read-only inputs\n // Note: HTML5 says that controls under a fieldset > legend:first-child won't\n // be disabled if the fieldset is disabled. Due to implementation difficulty,\n // we don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: not-allowed;\n background-color: @input-bg-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\ninput[type=\"date\"] {\n line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n display: block;\n min-height: @line-height-computed; // clear the floating input if there is no label text\n margin-top: 10px;\n margin-bottom: 10px;\n padding-left: 20px;\n label {\n display: inline;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n float: left;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n\n // Feedback icon (requires .glyphicon classes)\n .form-control-feedback {\n position: absolute;\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n right: 0;\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n }\n}\n\n// Feedback states\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 0;\n vertical-align: middle;\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n float: none;\n margin-left: 0;\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of labels, radios, and checkboxes\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n .form-control-static {\n padding-top: (@padding-base-vertical + 1);\n }\n\n // Only right align form labels here when the columns stop stacking\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n top: 0;\n right: (@grid-gutter-width / 2);\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &:focus {\n .tab-focus();\n }\n\n &:hover,\n &:focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: not-allowed;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n cursor: pointer;\n border-radius: 0;\n\n &,\n &:active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: underline;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n &.in {\n display: block;\n }\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition(height .35s ease);\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n ~\"url('@{icon-font-path}@{icon-font-name}.svg#glyphicons-halflingsregular') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: not-allowed;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n &:focus {\n // Remove focus outline when dropdown JS adds it after closing the menu\n outline: none;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { .btn-xs(); }\n.btn-group-sm > .btn { .btn-sm(); }\n.btn-group-lg > .btn { .btn-lg(); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n display: none;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n max-height: 340px;\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n // Prevent Glyphicons from increasing height of navbar\n > .glyphicon {\n float: left;\n margin-top: -2px;\n margin-right: 5px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n\n &.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right { .pull-right(); }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-right: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n\n // Outdent the form if last child to line up with content down the page\n &.navbar-right:last-child {\n margin-right: 0;\n }\n }\n}\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: not-allowed;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: not-allowed;\n }\n }\n\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n &[href] {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Hover state, but only for links\na.badge {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n .container & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: (@font-size-base * 4.5);\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n > img,\n a > img {\n .img-responsive();\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n.progress-striped .progress-bar {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n.progress.active .progress-bar {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n > .pull-left {\n margin-right: 10px;\n }\n > .pull-right {\n margin-left: 10px;\n }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on
          ,
            , or
            .\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Align badges within list items\n > .badge {\n float: right;\n }\n > .badge + .badge {\n margin-right: 5px;\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n\n // Remove border radius for top one\n &:first-child {\n .border-top-radius(0);\n }\n // But keep it for the last one\n &:last-child {\n border-bottom: 0;\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table {\n margin-bottom: 0;\n \n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child th,\n > .table > tbody:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n\n &:last-child > th,\n &:last-child > td {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Optional heading\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: 10px 15px;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n overflow: hidden; // crop contents when collapsed\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n + .panel-collapse .panel-body {\n border-top: 1px solid @panel-inner-border;\n }\n }\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: auto;\n overflow-y: scroll;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0)}\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: none;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n margin-top: 15px;\n padding: (@modal-inner-padding - 1) @modal-inner-padding @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n .modal-lg { width: @modal-lg; }\n\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n font-size: @font-size-small;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n text-align: left; // Reset given new insertion method\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -10px; }\n &.right { margin-left: 10px; }\n &.bottom { margin-top: 10px; }\n &.left { margin-left: -10px; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 18px;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: 5px 5px 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n .img-responsive();\n line-height: 1;\n }\n }\n\n > .active,\n > .next,\n > .prev { display: block; }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: none;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n margin-left: -10px;\n font-family: serif;\n }\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicons-chevron-left,\n .glyphicons-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n margin-left: -15px;\n font-size: 30px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#browsers\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n.visible-xs {\n .responsive-invisibility();\n\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-sm {\n .responsive-invisibility();\n\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-md {\n .responsive-invisibility();\n\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-lg {\n .responsive-invisibility();\n\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n"]} \ No newline at end of file diff --git a/docs/dist/css/bootstrap.min.css b/docs/dist/css/bootstrap.min.css new file mode 100644 index 000000000..594d470fb --- /dev/null +++ b/docs/dist/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#8a6d3b}.text-warning:hover{color:#66512c}.text-danger{color:#a94442}.text-danger:hover{color:#843534}.text-success{color:#3c763d}.text-success:hover{color:#2b542c}.text-info{color:#31708f}.text-info:hover{color:#245269}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select optgroup{font-size:inherit;font-style:inherit;font-family:inherit}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{height:auto}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}textarea.form-control{height:auto}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>.glyphicon{float:left;margin-top:-2px;margin-right:5px}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive>.table>tbody:last-child>tr:last-child td:first-child,.panel>.table>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive>.table>tfoot:last-child>tr:last-child td:first-child,.panel>.table>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive>.table>tbody:last-child>tr:last-child th:first-child,.panel>.table>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive>.table>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive>.table>tbody:last-child>tr:last-child td:last-child,.panel>.table>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive>.table>tfoot:last-child>tr:last-child td:last-child,.panel>.table>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive>.table>tbody:last-child>tr:last-child th:last-child,.panel>.table>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive>.table>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child th,.panel>.table>tbody:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none!important}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none!important}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none!important}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print,tr.visible-print,th.visible-print,td.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none!important}} \ No newline at end of file diff --git a/docs/dist/fonts/glyphicons-halflings-regular.eot b/docs/dist/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 000000000..423bd5d3a Binary files /dev/null and b/docs/dist/fonts/glyphicons-halflings-regular.eot differ diff --git a/docs/dist/fonts/glyphicons-halflings-regular.svg b/docs/dist/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 000000000..446948874 --- /dev/null +++ b/docs/dist/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/dist/fonts/glyphicons-halflings-regular.ttf b/docs/dist/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 000000000..a498ef4e7 Binary files /dev/null and b/docs/dist/fonts/glyphicons-halflings-regular.ttf differ diff --git a/docs/dist/fonts/glyphicons-halflings-regular.woff b/docs/dist/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 000000000..d83c539b8 Binary files /dev/null and b/docs/dist/fonts/glyphicons-halflings-regular.woff differ diff --git a/docs/dist/js/bootstrap.js b/docs/dist/js/bootstrap.js new file mode 100644 index 000000000..a62bc17bc --- /dev/null +++ b/docs/dist/js/bootstrap.js @@ -0,0 +1,1924 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") } + +/* ======================================================================== + * Bootstrap: transition.js v3.0.3 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'MozTransition' : 'transitionend', + 'OTransition' : 'oTransitionEnd otransitionend', + 'transition' : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false, $el = this + $(this).one($.support.transition.end, function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.0.3 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent.trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one($.support.transition.end, removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.3 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (!data.resetText) $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.3 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getActiveIndex = function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + + return this.$items.index(this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getActiveIndex() + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return + + var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid.bs.carousel', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0) + }) + .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid.bs.carousel') + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + $carousel.carousel($carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.3 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing') + [dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in') + [dimension]('auto') + this.transitioning = 0 + this.$element.trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + [dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element + [dimension](this.$element[dimension]()) + [0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one($.support.transition.end, $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + $target.collapse(option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.3 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2013 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle=dropdown]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('