diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b6a144a --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ + +.DS_Store +node_modules +dist + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..696f9ca --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +Decorator v5 +========= + +The goal for decorator 5 is to provide campus developers with an effective suite of front end tools that accelerates the web and application development process. The toolkit will be design following user experience and accessibility best practices, as well as the latest UC San Diego brand guidelines. + +A secondary goal is to build a user community that encourages our users to collaborate and contribute to the project and provide feedback that will help spearhead future toolkit versions. Also, communication channels will be established in an effort to provide our users with update release notifications, training/demo sessions. + +The following are some of the key points for this version: + +* Extend bootstrap features and use native functionality +* Ongoing support for HTML5 +* Improve speed and optimization +* Develop a robust decorator documentation and usage guide +* Explore ways to extend the toolkit capabilities beyond desktop, such as native mobile applications and VR apps +* A defined update release cycle and overall better code distribution/access# cms-templates \ No newline at end of file diff --git a/app/css/base.css b/app/css/base.css new file mode 100755 index 0000000..f081acd --- /dev/null +++ b/app/css/base.css @@ -0,0 +1,2801 @@ +/********************* VARIABLES & MIXINS */ +/* BREAKPOINTS */ +/* COLORS */ +/* LAYOUT VALUES */ +/* FONTS */ +/* MIXINS */ +/**/ +/*$container-large-desktop: (1140px + $grid-gutter-width) !default;*/ +/********************* GOOGLE FONT */ +@import url("https://fonts.googleapis.com/css?family=Roboto:400,700"); +/********************* BASE */ +/* + * Consolidating image references + * to a singular location + * + * minimizes number of calls sent to reference images + */ +.title-logo, +.layout-footer > .layout-container { + background: url(../img/sprite_base.png) no-repeat transparent; } + +@media screen and (-webkit-min-device-pixel-ratio: 2) { + .title-logo, + .layout-footer > .layout-container { + background-image: url(../img/sprite_base2x.png); + background-size: 500px 120px; } } + +.social-list li { + background: url(../img/sprite_social.png) no-repeat transparent; } + +.msg h4, +.icon { + background: url(../img/sprite_icon.png) no-repeat transparent; } + +.drawer-toggle a, .drawer h2 a, +.flex-pauseplay a { + background: url(../img/sprite_icon_widget.svg) no-repeat transparent; + background-size: 16px 300px; } + +div.loading { + background: url(../img/icon_loading.gif) no-repeat transparent; } + +span.loading { + background: url(../img/icon_loading_inline.gif) no-repeat transparent; } + +.icon.asterisk, +.field .required, +.field_top .required, +.field_left .required { + background: url(../img/asterisk.png) no-repeat transparent; } + +/* *********************************************** + * Layout + * + * Components: + * - base layout + * - header + * - footer + * - nav + * - more(?) + * + * ***************/ +/* *********************************************** + * BASE + * ***************/ +html, body { + background: #FFF; + overflow-x: hidden; + color: #333; + font: normal normal normal 16px/1.5 'Roboto', sans-serif; } + +/*Accessibility Focus On Keyboard Navigation*/ +:focus { + outline: thin dotted #333333 !important; + outline: 5px auto -webkit-focus-ring-color !important; + outline-offset: -2px; } + +/* container will have media queries for sizing*/ +.layout-container { + max-width: 1200px; + width: 98%; + margin: 0px auto; + overflow: hidden; } + +@media only screen and (max-width: 768px) { + .layout-container { + width: 94%; } } + +@media only screen and (max-width: 1200px) { + .layout-container { + max-width: 960px; } } + +.layout-navbar .layout-container { + overflow: visible; } + +.layout-header { + /* to incorporate new navbar button*/ + display: block; + width: 100%; + background-color: #2b92b9; + /* + @media only screen and (min-width: $desktop-small + 1) { + height: 78px; + }*/ } + +@media only screen and (min-width: 320px) and (max-width: 768px) { + .layout-header { + height: 105px; } } + +.layout-header, .isLoggedIn { + height: 100%; } + +.layout-login { + width: 100%; + background: #0B4A67; + overflow: hidden; } + +.login-content { + color: #fff; + font-size: 85%; + padding: .4em 0; + float: right; } + +.login-content a { + color: #fff; + font-weight: 700; + text-transform: uppercase; } + +.layout-title { + font-family: 'Roboto', sans-serif; + box-sizing: border-box; + height: 92px; + width: 100%; + background: #fff; + padding: 1.5em 0; } + +@media only screen and (max-width: 360px) { + .layout-title { + padding: 0.5em 0; } } + +@media only screen and (max-width: 768px) { + .layout-title { + padding: 1em 0; + height: auto; } } + +.layout-navbar { + min-height: 50px; + width: 100%; + background-color: #00629B; + border: 0; + border-bottom: 1px solid #00629B; + margin-bottom: 0; + z-index: 100; } + +.layout-navbar .layout-container { + overflow: visible; } + +.layout-main { + width: 100%; } + +.layout-footer { + width: 100%; + color: #fff; + font-size: 90%; + border-top: 1px solid #ccc; + padding: 1em 0; + line-height: 1.5; } + +.layout-footer > .layout-container { + background-position: right -74px; } + +@media only screen and (max-width: 640px) { + .layout-footer > .layout-container { + background: none; } } + +h1, h2, h3, h4, h5, h6 { + color: #333; + font-weight: 400; + line-height: 1.5; + /*margin: 0 0 .25em;*/ } + +h1 { + color: #00629B; + letter-spacing: .5px; + font-size: 39px; } + +.h2, h2 { + font-size: 28px; } + +.styled-h2 { + color: #333; } + +hr { + background-color: #ccc; + color: #ccc; + height: 1px; } + +a { + color: #016691; } + +/* *********************************************** + * HEADER + * **************/ +.skip-to-main:focus, .skip-to-main:active { + width: auto; + height: auto; + margin: auto; + padding: auto; + clip: auto; + background-color: green; + color: white; } + +/* *********************************************** +* NAV +* **************/ +nav .container { + padding: 0; } + +.navbar-list { + list-style: none; + font-size: 16px; + padding: 9px 0 0 0; + margin: 0; } + +.navbar .caret { + margin-left: 7px; } + +.layout-navbar .navbar-list > li { + float: left; } + +.layout-navbar .navbar-list > li > a { + display: block; + color: #fff; + background-color: #00629B; + padding: 9px 15px; + text-decoration: none; + line-height: 1.5; } + +.layout-navbar .navbar-list > li.active > a { + border-bottom: #ffcd00 solid 3px; } + +.navbar { + margin-bottom: 0; } + +.navbar-default { + background-color: #00629B; + border-bottom: none; } + +.navbar-default .navbar-nav > li > a { + color: #fff; } + +.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + background-color: #004268; + color: #fff; } + +.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { + background-color: #004268; + color: #fff; } + +.dropdown-menu { + background-color: #004268; + border-radius: 0; + padding: 0; } + +.dropdown-menu > li > a { + color: #fff; + padding: 6px 20px; } + +.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { + background-color: #004268; + color: #fff; } + +.navbar-toggle { + background-color: #00629B; + border: none; + float: left; + margin: 8px 0 8px 20px; } + +.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background-color: #004268; } + +.navbar-default .navbar-toggle .icon-bar { + background-color: #fff; } + +.mobile-nav-bars { + padding: 5px; + float: left; } + +.mobile-nav-icon { + font-size: 13px; + padding: 2px 0; + float: left; + color: #FFF; } + +#search { + position: absolute !important; + width: 385px; } + +/*Dropdown Hover Fallback */ +@media only screen and (min-width: 767px) { + #navbar > .navbar-nav > .dropdown:hover .dropdown-menu { + display: block; } + #navbar > .navbar-nav > li:hover > a { + background-color: #004268 !important; } } + +.navmenu-default .navmenu-nav > .active > a, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a, .navmenu-default .navmenu-nav > .active > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover, .navmenu-default .navmenu-nav > .active > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus { + color: #fff; + background-color: #004268; } + +.navmenu-default .navmenu-nav > li > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover, .navmenu-default .navmenu-nav > li > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus { + color: #fff; + background-color: #00629B; } + +.navmenu-nav { + padding-bottom: 0; } + +.navmenu-nav > li { + border-bottom: 1px solid #ccc; } + +.navmenu-default .navmenu-nav > li > a { + color: #333; } + +.open .navmenu-nav > li > a { + padding: 10px 20px 10px 30px; + color: #00629B; } + +.open .navmenu-nav > li > a:hover { + color: #333; + background-color: transparent; + text-decoration: underline; } + +li.open { + border-bottom: none; } + +/************************************************* +* Mobile Nav and search +* ****************/ +@media only screen and (max-width: 767px) { + .offcanvas > ul.nav.navbar-nav.navbar-right { + margin: 0; } + .offcanvas > ul.nav.navbar-nav.navbar-right .search { + width: 100%; } + .offcanvas > ul.nav.navbar-nav.navbar-right .search-toggle { + display: none; } + .offcanvas > ul.nav.navbar-nav.navbar-right .search-content { + background-color: #ffffff; + border-bottom: 2px solid #BDBDBD; } + .offcanvas > ul.nav.navbar-nav.navbar-right #search { + display: block !important; + position: relative !important; + width: 100%; + padding: 10px 15px; + overflow: hidden; } + .offcanvas > ul.nav.navbar-nav.navbar-right .search-content .input-group { + width: 60%; } + .offcanvas > ul.nav.navbar-nav.navbar-right .search-content .search-scope { + width: 34%; } } + +@media only screen and (max-width: 767px) { + .navmenu-default .navmenu-nav > li > a { + background-color: #e7e7e7; + color: #00629B !important; } + .navmenu-default .navmenu-nav > .open > a { + color: #00629B !important; + border-bottom: 1px solid #CCC; } + .dropdown-menu > li > a { + background-color: #FFF !important; + color: #00629B !important; } + .navmenu-default .navmenu-nav > .active > a { + color: #00629B !important; + background-color: #e7e7e7; + border-left: 2px solid #00629B; } } + +/* *********************************************** +* MAIN +* **************/ +.main-section { + line-height: 1.5; + padding: 0 0 1em 0; + /* space for smaller viewports */ + margin-bottom: 1em; } + +@media only screen and (max-width: 768px) { + .main-section { + width: 100%; + padding: 0 15px 1em; } } + +.main-section a { + text-decoration: underline; } + +.main-section .btn { + text-decoration: none; } + +.main-section-content { + position: relative; } + +@media only screen and (max-width: 975px) { + .main-section img { + max-width: 100% !important; + height: auto !important; } } + +.main-section-supplement { + background-color: #F2F5F7; + border: solid 1px #C8CFD3; + padding: 1em; + margin-bottom: 1em; } + +.main-section-supplement h3 { + font-size: 115%; + color: #738AA3; + text-shadow: 0 1px 1px #FFF; } + +.blank-slate a, .layout-container.row a { + text-decoration: underline; } + +.layout-container.row .jumbotron a { + text-decoration: none; } + +/* *********************************************** + * FOOTER + * **************/ +footer { + background-color: #00629B; } + +.footer-links { + list-style: none; + margin: .5em 0 0; + padding: 0; } + +.footer-links > li { + display: inline; + margin-left: 0; + margin-right: .5em; + padding-right: .75em; } + +.footer-links > li a { + color: #fff; + text-decoration: underline; } + +.footer-links > li:first-child { + border-right: 1px solid #fff; } + +.footer .row { + padding: 1.5em 0; + color: #fff; + font-size: .9em; } + +.footer-logo { + width: 158px; + height: 30px; + float: right; } + +@media only screen and (max-width: 768px) { + .footer-logo { + float: none; + margin-top: 15px; } } + +/* *********************************************** + * Modules + * + * Components: + * - breadcrumbs + * - search + * - title + * - buttons + * - input + * - two-column intro banner + * - more(?) + * + * ***************/ +/* *********************************************** + * BREADCRUMBS + * ***************/ +.breadcrumb, .breadcrumbs-list { + background-color: #fff; + margin-bottom: 0; } + +.breadcrumb > li, .breadcrumbs-list > li { + color: #666; + display: inline; + font-size: 80%; } + +/* *********************************************** + * NAVBAR + * ***************/ +/* +ul.nav.navbar-nav.navbar-right { + @media only screen and (max-width: $desktop-small-after) { + background: gray; + margin: 0; + padding: 0; + } +} +*/ +/* *********************************************** + * SEARCH + * ***************/ +.search { + float: right; + position: relative; + margin-top: 0; } + +.search-toggle { + color: #fff !important; + /*max-height: 38px;*/ + background-color: transparent !important; + border-radius: 0; + -webkit-border-radius: 0; + border: none; + border-width: 0 1px; + outline: 0; + padding: 11px; + /*&:hover,*/ } + +.search-toggle.search-is-open { + color: #d9d9d9; + background-color: #014663 !important; + border-color: none; + text-decoration: none; } + +.search-toggle span.caret { + margin-left: 6px; } + +.search-content { + position: absolute; + right: 0; + width: 385px; + padding: 10px; + background-color: #014663; + border: none; + border-width: 0 1px 2px; + display: none; } + +@media only screen and (max-width: 960px) { + .search-content { + position: relative; + width: 100%; } } + +.search-content.search-is-open { + display: block; + z-index: 999; } + +.search-content .search-scope { + border-radius: 0; + max-width: 30%; + font-size: 11px; + padding: 4px 2px 4px 0; + float: left; + height: 27px; } + +.search-content .input-group { + width: 250px; + float: right; } + +.search-content .form-control { + float: right; + -webkit-border-radius: 0; + border-radius: 0; + height: 26px; } + +/* *********************************************** + * TITLE + * ***************/ +.title-header { + float: left; + color: #000; + font-size: 1.35rem; + letter-spacing: 1px; + text-decoration: none; + text-transform: uppercase; } + +.title-header.title-header-short { + display: none; } + +@media only screen and (max-width: 480px) { + .title-header.title-header-short { + display: block; + margin-top: 0; } } + +.title-header:hover, .title-header:focus { + color: #666666; + text-decoration: none; } + +@media only screen and (max-width: 480px) { + .title-header { + display: none; + margin-top: 2.25em; } } + +@media only screen and (max-width: 360px) { + .title-header { + font-size: 20px; + margin-top: 2em; } } + +.title-header-large { + margin-top: 5px; } + +@media only screen and (min-width: 480px) and (max-width: 768px) { + .title-header-large { + display: block; + margin-top: 2.5em; } } + +.title-logo { + float: right; + width: 229px; + height: 65px; + overflow: hidden; + text-indent: -999em; + background-position: 0 -3px; } + +@media only screen and (max-width: 480px) { + .title-logo { + background-position: -239px -2px; + height: 45px; + width: 166px; + display: none !important; } } + +@media only screen and (max-width: 768px) { + .title-logo { + display: block; + position: absolute; } } + +.header-logo { + height: 30px; + margin: 15px 20px 0 0; + width: auto; } + +@media only screen and (min-width: 480px) { + .header-logo { + display: none; } } + +/* *********************************************** + * MAIN CONTENT SIDE NAV + * ***************/ +.sidebar-section { + padding: 0 4em 1em 0; } + +@media (max-width: 960px) { + .sidebar-section { + padding: 0 0 3em 0; + width: 100%; } } + +#site-logo img { + max-width: 100%; + height: auto; + margin-top: 0; + margin-bottom: 15px; } + +@media (max-width: 768px) { + #site-logo img { + display: none; } } + +.main-content-nav { + background: #eee; + border: solid 1px #D8D7D7; + padding: 1em; + margin-bottom: 1em; } + +@media only screen and (max-width: 768px) { + .main-content-nav { + margin-top: 0em; } } + +.main-content-nav > h2 { + color: #333; + font-size: 140%; + margin: 0 0 .4em; + text-transform: capitalize; + font-weight: normal; } + +.main-content-nav > ul { + /* for borders to line up properly */ + margin: 0 -1em -1em; + /* override navbar-list 14px for main navbar*/ + font-size: 1em; } + +.main-content-nav > ul > li.active { + color: #004268; } + +.main-content-nav > ul li { + border-top: solid 1px #D8D7D7; + list-style: none; } + +.main-content-nav > ul li a { + display: block; + padding: 1em; + color: #333; } + +.main-content-nav > ul li a:hover { + background-color: #00629B; + color: #fff; } + +.main-content-nav > ul li a:hover, .main-content-nav > ul li a:link, .main-content-nav > ul li a:active { + text-decoration: none; } + +.main-content-nav > ul li.active { + background-color: #fff; + padding: 1em 0 1em 1em; + font-weight: bold; } + +.main-content-nav > ul li.active > ul li a { + color: #00629B; + padding-left: 0 !important; } + +.main-content-nav > ul li.active > a { + color: #00629B; } + +.main-content-nav > ul li.active a:hover { + text-decoration: underline; + color: #484949; + background-color: transparent; } + +.main-content-nav > ul li ul { + margin: .4em 0 -.4em 1em; + padding: 0; } + +.main-content-nav > ul li li { + font-size: 85%; } + +/* *********************************************** + * BUTTONS + * ***************/ +/* *********************************************** + * INPUT + * ***************/ +.form-control { + -webkit-border-radius: 0; + border-radius: 0; + padding: 0.5em; } + +.subhead { + font-size: 120%; } + +/* *********************************************** + * Two Column Intro Banner + * ***************/ +.intro-banner { + margin: 0 !important; + position: relative; + max-height: 380px; + /* +@media only screen and (max-width: $desktop-small) { + min-height: 300px; +} + +@media only screen and (max-width: $desktop-small) { + min-height: 250px; +} +*/ } + +.intro-banner h1 { + text-align: center; + color: white; + text-shadow: 0px 0px 20px #1e1e1e; } + +.intro-banner img { + width: 100%; + height: auto; + max-height: 380px; + position: absolute; } + +.intro-banner .cr-item-container { + margin: 9% 0; + /* + @media only screen and (max-width: $full) { + top: 20%; + } + */ } + +@media only screen and (max-width: 1200px) { + .intro-banner .intro-banner-heading { + font-size: 53px !important; } } + +@media only screen and (max-width: 960px) { + .intro-banner .intro-banner-heading { + font-size: 43px !important; } } + +@media only screen and (max-width: 768px) { + .intro-banner .intro-banner-heading { + font-size: 43px !important; } } + +@media only screen and (max-width: 640px) { + .intro-banner .intro-banner-heading { + font-size: 37px !important; } } + +@media only screen and (max-width: 480px) { + .intro-banner .intro-banner-heading { + font-size: 27px !important; } } + +.display-flex-center { + display: flex; + align-items: center; + min-height: 380px; } + +.layout-header.open, +.layout-main.open, +.layout-footer.open { + -webkit-transform: translate(42%, 0); + transform: translate(42%, 0); } + +@media only screen and (max-width: 640px) { + .layout-header.open, + .layout-main.open, + .layout-footer.open { + -webkit-transform: translate(83%, 0); + transform: translate(83%, 0); } } + +.layout-header button.btn-nav { + position: relative; + float: left; + height: 44px; + color: #fff; + font-size: 24px; + background-image: none; + background-color: #00629B; + border-radius: 1px; + border: 1px solid #00629B; + padding: 9px 10px; + margin-right: 10px; } + +@media only screen and (max-width: 360px) { + .layout-header button.btn-nav { + font-size: 20px; } } + +@media only screen and (max-width: 960px) { + .layout-header button.btn-nav { + display: block; } } + +/* button iconbar styling */ +button.btn-nav .icon-bar { + display: block; + width: 30px; + height: 2px; + background-color: #fff; + border-radius: 1px; + margin-top: 0.25em; } + +@media only screen and (max-width: 360px) { + button.btn-nav .icon-bar { + width: 22px; } } + +.btn-nav .icon-bar:nth-child(2), +.btn-nav .icon-bar:nth-child(3), +.btn-nav .icon-bar:nth-child(4) { + transition: all .2s ease; + transition-delay: .25s; + opacity: 1; } + +.btn-nav .icon-bar:nth-child(2) { + margin: 0; } + +/* button transition code */ +.btn-nav .icon-bar:nth-child(2), +.btn-nav .icon-bar:nth-child(4) { + -webkit-transition: all .2s ease; + -o-transition: all .2s ease; + transition: all .2s ease; + -webkit-transition-delay: .25s; + -o-transition-delay: .25s; + transition-delay: .25s; } + +.layout-header.open .btn-nav .icon-bar:nth-child(2) { + -webkit-transform: translate3d(0, 8px, 0) rotateZ(45deg); + -ms-transform: translate3d(0, 8px, 0) rotateZ(45deg); + -o-transform: translate3d(0, 8px, 0) rotateZ(45deg); + transform: translate3d(0, 8px, 0) rotateZ(45deg); } + +.layout-header.open .btn-nav .icon-bar:nth-child(3) { + opacity: 0; } + +.layout-header.open .btn-nav .icon-bar:nth-child(4) { + -webkit-transform: translate3d(0, -8px, 0) rotateZ(-45deg); + -ms-transform: translate3d(0, -8px, 0) rotateZ(-45deg); + -o-transform: translate3d(0, -8px, 0) rotateZ(-45deg); + transform: translate3d(0, -8px, 0) rotateZ(-45deg); } + +/* end button transition code */ +button:hover { + border-color: transparent; + background-color: rgba(254, 254, 254, 0.4); } + +button:focus { + border-color: transparent; + outline: 0; + background-color: rgba(254, 254, 254, 0.4); } + +button:active { + border-color: transparent; + background-color: rgba(254, 254, 254, 0.6); } + +.layout-navbar.navbar-is-opened .navbar-list > li { + float: none; } + +.navdrawer-container.navbar-is-opened .layout-container { + width: 100%; } + +.navdrawer-container.navbar-is-opened .navbar-list > li.active { + background: #fff; } + +.navdrawer-container.navbar-is-opened .navbar-list > li > a { + border: none; + border-bottom: 1px solid #ccc; + padding: 10px 10px 10px 20px; + background-color: #00629B !important; + border: none !important; } + +.navdrawer-container.navbar-is-opened .navbar-list > li > a:hover { + background-color: #004268 !important; } + +@media only screen and (max-width: 960px) { + .navdrawer-container.navbar-is-opened .navbar-list > li > a { + border: 0; + font-weight: bold; + background: #00629B; + border-bottom: 1px solid #ccc; } } + +/* Search bar integration */ +.navdrawer-container.navbar-is-opened button.search-toggle { + display: none; } + +.navdrawer-container.navbar-is-opened .search { + width: 100%; + height: 100%; + float: none; } + +.navdrawer-container.navbar-is-opened .search-content { + display: block; + height: 43px; + padding: 7px; + background-color: #00629B; } + +.navdrawer-container.navbar-is-opened .search-content .search-scope { + max-width: 30%; + font-size: 11px; + padding: 4px 2px 4px 0; + float: left; + height: 27px; } + +.navdrawer-container.navbar-is-opened .search-content form > .input-group { + width: 55%; + float: right; } + +.navdrawer-container.navbar-is-opened .search-content form > .input-group input { + height: 27px; } + +.navdrawer-container ul { + list-style-type: none; } + +/* sub list stylings */ +.navdrawer-container .navbar-subnav:hover > a { + border-bottom: solid 3px #9FB3BF; } + +.navbar-subnav .navbar-sublist li:hover > a { + background-color: #00629B; } + +.navdrawer-container ul.navbar-sublist { + display: none; + position: absolute; + font-size: 14px; + padding: 0; + margin-left: 0; + -webkit-box-shadow: 0 3px 5px 0 rgba(50, 50, 50, 0.2); + box-shadow: 0 3px 5px 0 rgba(50, 50, 50, 0.2); } + +@media only screen and (max-width: 960px) { + .navdrawer-container ul.navbar-sublist { + display: block; + position: relative; + border-left: 0; + border-top: 0; + border-bottom: 1px solid #E2E2E2; + box-shadow: none; } } + +.navdrawer-container .subnav-hover ul.navbar-sublist { + display: block; + z-index: 3; } + +@media only screen and (max-width: 960px) { + .navdrawer-container .subnav-hover ul.navbar-sublist { + display: block; + position: relative; + border: 0; + border-bottom: 1px solid #ccc; + -webkit-box-shadow: none; + box-shadow: none; } + .navdrawer-container .subnav-hover ul.navbar-sublist a { + border: 0; + padding-left: 3em; } } + +.navdrawer-container .navbar-sublist.subnav-is-opened { + display: block; } + +.navdrawer-container.navbar-is-opened .navbar-sublist.subnav-is-opened a { + border: 0; + padding-left: 3em; } + +.navdrawer-container .navbar-sublist a { + display: block; + background: #005282; + color: #fff; + padding: 9px 15px 8px; + text-decoration: none; } + +.layout-header, +.layout-main, +.layout-footer { + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; } + +nav.navdrawer-container.navbar-is-opened { + position: fixed; + top: 0; + height: 100%; + opacity: 1; + border-right: 1px solid #DADADA; + -webkit-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + transition-delay: 0.15s; + pointer-events: auto; + z-index: 2; } + +.navbar-is-opened { + display: block; } + +.navbar-is-opened a:hover { + text-decoration: underline !important; } + +@media only screen and (max-width: 640px) { + .navdrawer-container.navbar-is-opened { + width: 83%; } + .navdrawer-container.navbar-is-opened .search { + max-width: none; } } + +@media screen and (min-width: 320px) and (max-width: 640px) { + .navdrawer-container.navbar-is-opened .search-content form > .input-group { + width: 60%; } } + +@media only screen and (max-width: 768px) { + .layout-header .btn-nav { + margin-top: 1.7em; } } + +@media only screen and (max-width: 960px) { + .navdrawer-container .navbar-sublist a { + border: none; + margin: 0; + padding-left: 2.5em !important; } } + +@media only screen and (min-width: 960px) { + .navdrawer-container { + display: block; + width: 100%; + opacity: 1; } + button.btn-nav { + display: none; } } + +@media only screen and (max-width: 960px) { + .navdrawer-container { + position: fixed; + width: 42%; + z-index: -1; + opacity: 0; } + .navdrawer-container .navbar-subnav .navbar-sublist.subnav-is-opened { + display: block; + position: relative; + border: 0; + border-bottom: 1px solid #ccc; + -webkit-box-shadow: none; + box-shadow: none; } } + +.collapse-navbar .navdrawer-container { + position: fixed; + width: 42%; + z-index: -1; + opacity: 0; } + +.collapse-navbar .navdrawer-container .subnav-hover ul.navbar-sublist { + display: block; + position: relative; + border: 0; + border-bottom: 1px solid #ccc; + -webkit-box-shadow: none; + box-shadow: none; } + +.collapse-navbar .navdrawer-container .subnav-hover ul.navbar-sublist a { + border: 0; + padding-left: 3em; } + +.collapse-navbar .btn-nav { + display: block; } + +.collapse-navbar .search-content { + position: relative; + width: 100%; } + +ul.nav.navbar-nav.navbar-right { + margin-right: 0 !important; } + +a.navbar-brand { + color: #FFF !important; } + +/* Blink & TL Styles */ +.blink-nav-button { + background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/../img/blink_nav.png) 0 6px no-repeat !important; + min-width: 78px; } + +.blink-nav-button a { + color: transparent !important; + background-color: transparent !important; } + +.tlink-nav-button { + background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/../img/current_students_nav.png) 0 6px no-repeat !important; + min-width: 103px; } + +.tlink-nav-button a { + color: transparent !important; + background-color: transparent !important; } + +/********************************************************************** + * Basic CSS styling + */ +.clearfix { + overflow: auto; } + +/* -------------------------------------------------------------------- + * table + */ +table.styled { + margin-bottom: 1em; } + +table.styled th, table.styled td { + padding: .25em 1em; } + +table.styled th { + background-color: #eee; + font-weight: bold; } + +table.styled th, table.styled td { + border: 1px solid #ccc; } + +table.styled tbody tr.even { + background-color: #eff; } + +/* -------------------------------------------------------------------- + * _images + */ +img.left { + float: left; + padding: 0 1em 1em 0; + width: auto; } + +img.right { + float: right; + padding: 0 0 1em 1em; + width: auto; } + +/* -------------------------------------------------------------------- + * * - 360px + */ +@media only screen and (max-width: 360px) { + img.left, + img.right { + float: none; + padding: 1em 0; } } + +/********************************************************************** + * Messages + */ +.msg { + -moz-border-radius: .5em; + -webkit-border-radius: .5em; + border-radius: .5em; + padding: .5em 1em; + margin-bottom: 1em; } + +.msg h4 { + padding-left: 20px; + text-shadow: none; } + +.msg.info { + border: 1px solid #aaa; + background-color: #eee; } + +.msg.info h4 { + background-position: 0 -150px; } + +.msg.alert { + border: 1px solid #fa0; + background-color: #ffe; } + +.msg.alert h4 { + background-position: 0 -249px; + color: #D56A03; } + +.msg.confirm { + border: 1px solid #393; + background-color: #efe; } + +.msg.confirm h4 { + color: #393; + background-position: 0 -200px; } + +.msg.error { + border: 1px solid #c00; + background-color: #fee; } + +.msg.error h4 { + color: #c00; + background-position: 0 -299px; } + +/********************************************************************** + * Button + */ +.button { + border: none; + color: #333; + display: inline-block; + outline: none; + cursor: pointer; + text-align: center; + text-decoration: none; + text-shadow: rgba(255, 255, 255, 0.5) 0 1px 1px; + margin-right: .5em; + padding: .25em 1em; + -moz-border-radius: .25em; + -webkit-border-radius: .25em; + border-radius: .25em; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } + +.button:hover { + text-decoration: none; } + +.button:active { + position: relative; + top: 1px; } + +.button:disabled { + color: #999; + cursor: default; } + +/*--------------------------------------------------------------------- + * primary button + */ +.primary { + background: #fc0; + background: -moz-linear-gradient(top, #fc0, #fa0); + background: -webkit-gradient(linear, left top, left bottom, from(#fc0), to(#fa0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc00',endColorstr='#ffaa00'); } + +.primary:hover { + background: #f90; } + +.primary:disabled { + background: #fd0; + background: -moz-linear-gradient(top, #fd0, #fc0); + background: -webkit-gradient(linear, left top, left bottom, from(#fd0), to(#fc0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd00',endColorstr='#ffcc00'); } + +/*--------------------------------------------------------------------- + * secondary button + */ +.secondary { + background: #eee; + background: -moz-linear-gradient(top, #eee, #ddd); + background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee',endColorstr='#dddddd'); } + +.secondary:hover { + background: #ccc; } + +.secondary:disabled { + background: #fff; + background: -moz-linear-gradient(top, #fff, #eee); + background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#eeeeee'); } + +/*--------------------------------------------------------------------- + * link button + */ +a.button { + color: #333; } + +/* -------------------------------------------------------------------- + * * - 480px + */ +@media only screen and (max-width: 480px) { + .button { + padding: .5em 1em; } } + +/********************************************************************** + * Icon + */ +.icon { + padding-left: 1.5em; } + +/* ie 7 only hack */ +*:first-child + html .icon { + display: inline-block; } + +.icon.newwin { + background-position: 0 -50px; } + +.icon.info { + background-position: 0 -150px; } + +.icon.confirm { + background-position: 0 -200px; } + +.icon.alert { + background-position: 0 -250px; } + +.icon.error { + background-position: 0 -300px; } + +.icon.invalid { + background-position: 0 -300px; } + +.icon.cal { + background-position: 0 -350px; } + +.icon.check { + background-position: 0 -400px; } + +.icon.check_disabled { + background-position: 0 -450px; } + +.icon.close { + background-position: 0 -500px; } + +.icon.close_disabled { + background-position: 0 -550px; } + +.icon.disable { + background-position: 0 -600px; } + +.icon.disable_disabled { + background-position: 0 -650px; } + +.icon.doc { + background-position: 0 -700px; } + +.icon.doc_disabled { + background-position: 0 -750px; } + +.icon.gear { + background-position: 0 -900px; } + +.icon.mail { + background-position: 0 -950px; } + +.icon.minus { + background-position: 0 -1000px; } + +.icon.minus_disabled { + background-position: 0 -1050px; } + +.icon.pencil { + background-position: 0 -1100px; } + +.icon.pencil_disabled { + background-position: 0 -1150px; } + +.icon.plus { + background-position: 0 -1200px; } + +.icon.plus_disabled { + background-position: 0 -1250px; } + +.icon.print { + background-position: 0 -1300px; } + +.icon.search { + background-position: 0 -1400px; } + +.icon.search_disabled { + background-position: 0 -1450px; } + +.icon.submit { + background-position: 0 -1500px; } + +.icon.submit_disabled { + background-position: 0 -1550px; } + +.icon.trash { + background-position: 0 -1600px; } + +.icon.trash_disabled { + background-position: 0 -1650px; } + +.icon.undo { + background-position: 0 -1700px; } + +.icon.arrow_right { + background-position: 0 -1750px; } + +.icon.arrow_down { + background-position: 0 -1800px; } + +.icon.play { + background-position: 0 -1850px; } + +.icon.stop { + background-position: 0 -1900px; } + +/* Social Media Icons */ +.social-list { + margin-left: 0; + padding-left: 0; + list-style: none; } + +.social-list li { + height: 33px; + margin: 0 0 10px 0; + padding: 0 40px; + cursor: pointer; } + +.social-list li.facebook { + background-position: 0 0; } + +.social-list li.twitter { + background-position: 0 -39px; } + +.social-list li.youtube { + background-position: 0 -80px; } + +.social-list li.linkedin { + background-position: 0 -121px; } + +.social-list li.googleplus { + background-position: 0 -160px; } + +.social-list li.instagram { + background-position: 0 -200px; } + +.social-list li.tumblr { + background-position: 0 -240px; } + +.social-list li.flickr { + background-position: 0 -280px; } + +.social-list li.vine { + background-position: 0 -320px; } + +.social-list li.pinterest { + background-position: 0 -360px; } + +.social-list li.blogger { + background-position: 0 -400px; } + +.social-list li.rss { + background-position: 0 -440px; } + +.social-list li.vimeo { + background-position: 0 -480px; } + +.social-list li.wordpress { + background-position: 0 -520px; } + +/********************************************************************** + * Form Elements + */ +input[type="text"], select, textarea { + border: 1px solid #aaa; } + +.form-control { + border-radius: 0; + padding: .5em; + /* to keep in line with other input paddings */ } + +input[type="text"], textarea { + padding: .5em; } + +select.form-control { + padding: .5em .2em; } + +fieldset { + border: 1px solid #aaa; + padding: .5em; + border: 0; } + +legend { + color: #333; + margin-left: 0; + padding: 0; } + +input[type=radio], input[type=checkbox] { + margin-right: .25em; } + +/*--------------------------------------------------------------------- + * input group addon + */ +/* white background to make it look less like an 'actionable' button */ +.input-group-addon { + background: #fff; } + +/* -------------------------------------------------------------------- + * form fields and font style + */ +div.field, div.field_top, div.field_left, div.label { + clear: both; + padding-bottom: 1em; } + +div.label { + color: #000; } + +.field_top div.label { + padding-bottom: .25em; } + +.label, .input, .output { + display: block; } + +.label label { + font-weight: bold; } + +/* -------------------------------------------------------------------- + * form + */ +form { + margin-bottom: 1em; } + +/* output */ +form .output { + font-weight: normal; } + +/* help text */ +form .help { + color: #999; + display: block; + font-style: italic; + font-size: 85%; } + +/* required field */ +form .help.icon.asterisk { + padding-bottom: 1em; } + +/* multi field */ +.multi { + margin-right: .5em; } + +.input.multi { + margin-right: 0; + padding-bottom: .5em; } + +/* -------------------------------------------------------------------- + * form invalid field + */ +form input.invalid, form textarea.invalid { + border: 1px solid #c00; } + +form .invalid, form .inline_invalid { + color: #c00; } + +form .inline_invalid { + display: block; } + +/* hide from ie */ +html > body form .icon.invalid { + margin-left: .5em; } + +/* -------------------------------------------------------------------- + * form layout - default is left aligned + */ +.field .label { + width: 10em; + float: left; + text-align: right; + padding-right: 1em; } + +.field .input, .field .output, .field select.input, .field textarea.input { + margin-left: 11em; } + +.field .required { + background-position: right 0; } + +.field_top .required, +.field_left .required { + background-position: left 0; + padding-left: 1em; } + +/* top-aligned */ +.field_top .label { + padding-left: 1em; } + +.field_top .input, .field_top .output, .field_top select.input, .field_top textarea.input { + margin-left: 1em; } + +/* left-aligned */ +.field_left .label { + width: 10em; + float: left; + text-align: left; + padding-left: 1em; } + +.field_left .input, .field_left .output, .field_left select.input, .field_left textarea.input { + margin-left: 11.5em; } + +/* -------------------------------------------------------------------- + * * - 640px + */ +@media only screen and (max-width: 640px) { + .field .label, + .field_left .label { + float: none; + text-align: left; + padding-left: 1em; + padding-bottom: .25em; } + .field .input, .field .output, .field select.input, .field textarea.input, + .field_left .input, .field_left .output, .field_left select.input, .field_left textarea.input { + margin-left: 1em; } + .field .required, + .field_left .required { + background-position: left 0; + padding-left: 1em; } } + +/* -------------------------------------------------------------------- + * * - 480px + */ +@media only screen and (max-width: 480px) { + input[type="text"], textarea { + padding: .5em .25em; } } + +/********************************************************************** + * loading styling + */ +div.loading { + clear: both; + height: 32px; + text-indent: -9999px; + background-position: center; } + +span.loading { + background-position: right; + padding-right: 20px; } + +/********************************************************************** + * CSS Styling for the page nav aside + */ +div.styled { + background: #F2F5F7; + border: 1px solid #C8CFD3; + margin-bottom: 1em; + padding: 1em; } + +div.styled h2, div.styled h3, div.styled h4, div.styled h5, div.styled h6 { + color: #738AA3; + text-shadow: 0 1px 1px #FFFFFF; } + +div.styled h2 { + font-size: 140%; } + +div.styled h3 { + font-size: 115%; } + +#page_nav { + margin: 0 -1em -1em; + padding: 0; } + +#page_nav li { + border-top: 1px solid #DBD7D7; + color: #06c; + list-style: none; + margin: 0; + padding: 0; } + +#page_nav li.active, #page_nav li a { + color: #016691; + display: block; + padding: 1em 0 1em 1em; } + +#page_nav li.active { + background-color: #fff; + color: #D56A03; } + +#page_nav li.collapsed ul { + display: none; } + +#page_nav li a:hover { + background-color: #fff; + text-decoration: none; } + +#page_nav li li { + font-size: 85%; } + +#page_nav li li a:hover { + text-decoration: underline; } + +#page_nav ul { + margin: .4em 0 -.4em 1em; + padding: 0; } + +#page_nav_title { + margin-bottom: 0.7em; } + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ +.carousel { + margin-bottom: 60px; + /*.container h1 { + @media screen and (max-width: 1160px) { + font-size: 40px; + } + @media screen and (max-width: $desktop-small) { + font-size: 2em !important; + } + }*/ } + +.carousel .cr-item-container { + position: absolute; + top: 20%; + transition: all .2s linear; + width: inherit; } + +@media screen and (max-width: 1450px) { + .carousel .cr-item-container { + top: 10%; } } + +@media screen and (max-width: 960px) { + .carousel .cr-item-container { + top: 0%; } } + +@media screen and (max-width: 768px) { + .carousel .cr-item-container { + top: 20%; + margin: 0 5%; } } + +@media screen and (max-width: 640px) { + .carousel .cr-item-container { + top: 10%; } } + +@media screen and (max-width: 480px) { + .carousel .cr-item-container { + top: 5%; } } + +@media screen and (max-width: 1160px) { + .carousel .cr-item-container h1 { + font-size: 40px; } } + +@media screen and (max-width: 768px) { + .carousel .cr-item-container h1 { + font-size: 2em !important; } } + +@media screen and (max-width: 480px) { + .carousel .cr-item-container h1 { + font-size: 1.2em !important; } } + +@media screen and (max-width: 768px) { + .carousel .cr-item-container p { + display: none; } } + +@media screen and (max-width: 768px) { + .carousel .cr-item-container a.btn { + margin-left: 35px !important; + padding: 8px; + min-width: 150px; + font-size: 13px; } } + +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + z-index: 10; } + +/* Declare heights because of positioning of img element */ +.carousel .item { + background-color: #FFF; } + +.carousel-inner > .item > img { + top: 0; + left: 0; + width: 100%; + height: auto; } + +.carousel-control { + width: 10%; } + +@media screen and (max-width: 960px) { + .carousel-control { + width: 5%; } } + +@media screen and (max-width: 640px) { + .carousel-indicators { + display: none; } } + +button#toggleCarousel { + background: transparent; + border: none; + color: #FFF; + font-size: 14px; } + +button#toggleCarouselAria { + background-color: green; + bottom: 20px; + margin-left: 50%; + padding: 10px 15px; + position: absolute; + z-index: 20; } + +a.hero-no-button { + display: block; + overflow: hidden; + width: 100%; } + +a.hero-no-button > img { + width: 100%; } + +.carousel-inner > .item > a > img { + width: 100%; } + +/* ROTATOR BUILDER +-------------------------------------------------- */ +/*Center Styles */ +.cntr { + width: auto !important; + margin: 5% auto !important; + display: block; + text-align: center; + padding: 0; } + +@media screen and (max-width: 1277px) { + .cntr { + margin-bottom: 2.2% !important; } } + +.cntr-btn { + margin: 0 auto !important; + display: block; + text-align: center; + width: max-content; + width: intrinsic; + /* Safari/WebKit uses a non-standard name */ + width: -moz-max-content; + /* Firefox/Gecko */ + width: -webkit-max-content; } + +/* Background color */ +.rt-dark-blue { + background-color: #182B49 !important; } + +.rt-light-blue { + background-color: #00629B !important; } + +.rt-neutral-gray { + background-color: #747678 !important; } + +/* Accent color */ +.rt-btn-gold { + background-color: #C69214 !important; + color: #FFF !important; } + +.rt-btn-cyan { + background-color: #00C6D7 !important; } + +.rt-btn-yellow { + background-color: #FFCD00 !important; } + +.rt-btn-orange { + background-color: #FC8900 !important; + color: #FFF !important; } + +/* main text font color */ +.item .rt-text-dark { + color: #484949; } + +.jumbotron-hero .text-indent h1.rt-text-dark { + text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.25); } + +.jumbotron-hero .text-indent p.rt-text-dark { + text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.25); } + +@media (min-width: 768px) { + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 20px; + font-size: 21px; + line-height: 1.5; } + .featurette-heading { + font-size: 50px; } } + +@media (min-width: 992px) { + .featurette-heading { + margin-top: 120px; } } + +.carousel-control.right, .carousel-control.left { + background-image: none; } + +/* QuickBlock Carousel +-------------------------------------------------- */ +.qb-carousel #indicators-container { + margin-left: 89%; } + +.qb-carousel #indicators-container #toggleCarousel { + float: left; } + +.qb-carousel .carousel-caption { + bottom: 20px; + padding-bottom: 0; + padding-top: 0; + text-align: left; + left: 0; + margin-left: 20px; } + +.qb-carousel .carousel-caption h3 { + color: #FFF; } + +.qb-carousel .carousel-caption p { + font-size: 1em; } + +.qb-carousel .carousel-indicators { + bottom: 0; + left: auto; + list-style: none; + margin-left: 0; + margin-right: 10px; + padding-left: 0; + right: 0; + text-align: right; + width: auto; } + +/*Contact Module */ +.contact-module h2 { + margin-bottom: 15px !important; } + +.contact-module iframe { + width: 100%; + height: 300px; } + +@media (max-width: 400px) { + .contact-module iframe { + height: 250px; } } + +.contact-module .contact-lable p { + font-weight: bold !important; + margin-bottom: 25px; } + +/*Social Media Module */ +.social-media-module h2 { + text-transform: uppercase; + margin-top: 23px; + margin-bottom: 23px; + font-size: 2em; } + +.social-media-module .btn-social-icon { + border: 0; + border-radius: 0; + margin: 0 10px 10px 0; } + +.btn-youtube { + color: #fff; + background-color: #dd4b39; + border-color: rgba(0, 0, 0, 0.2); } + +.btn-youtube:hover { + color: #fff; + background-color: #c23321; + border-color: rgba(0, 0, 0, 0.2); } + +/* Legacy Social Media Icons */ +.social-list { + margin-left: 0; + padding-left: 0; + list-style: none; } + +.social-list li { + height: 33px; + margin: 0 0 10px 0; + padding: 0 40px; + cursor: pointer; + background: url(../img/sprite_social.png) no-repeat transparent; } + +.social-list li.facebook { + background-position: 0 0; } + +.social-list li.twitter { + background-position: 0 -39px; } + +.social-list li.youtube { + background-position: 0 -80px; } + +.social-list li.linkedin { + background-position: 0 -121px; } + +.social-list li.googleplus { + background-position: 0 -160px; } + +.social-list li.instagram { + background-position: 0 -200px; } + +.social-list li.tumblr { + background-position: 0 -240px; } + +.social-list li.flickr { + background-position: 0 -280px; } + +.social-list li.vine { + background-position: 0 -320px; } + +.social-list li.pinterest { + background-position: 0 -360px; } + +.social-list li.blogger { + background-position: 0 -400px; } + +.social-list li.rss { + background-position: 0 -440px; } + +.social-list li.vimeo { + background-position: 0 -480px; } + +.social-list li.wordpress { + background-position: 0 -520px; } + +.social-list li.mobile { + background-position: 0 -560px; } + +/* Blockquote Footer Reset*/ +blockquote > footer { + background-color: transparent; } + +/* Full Calendar */ +#calendar { + margin: 20px 0; } + +/** Accessibility enhancements - July 13, 2021 **/ +#indicators-container { + position: absolute; + bottom: 20px; + width: auto; + display: block; + /* margin: 0; */ + padding: 0; + margin-left: 50%; + min-width: 74px; + z-index: 999999; } + +#indicators-container .carousel-indicators { + /* min-width: 20px; */ + margin: 0; + padding: 0; + position: relative; + left: unset; + width: auto; + display: block; + float: left; + bottom: 0; } + +#indicators-container #toggleCarousel { + min-width: 20px; + margin: 0 10px; + /* padding: 0; */ + position: relative; + /* left: unset; */ + /* width: 10px; */ + display: block; + z-index: 9000; + float: right; + bottom: -1px; } + +/********************* VITRO MODULES */ +/* *********************************************** + * Modules + * + * Components: + * - Global styles + * - Buttons & Links + * - Hero Landing Page + * - Text and CTA w/Full Height Image Left + * - News with Images + * - Callout Image Small Inset + * - Callout Content One + * - Callout Content Two + * + * ***************/ +/* Global styles , specific for new templates */ +.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .styled-h2 { + line-height: 1.1; + margin: 0 0 .25em; } + +.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .jumbotron .h1, .jumbotron .h2, .jumbotron .h3, .jumbotron .h4, .jumbotron .h5, .jumbotron .h6, .styled-h2 { + text-transform: uppercase; + font-weight: bold; } + +.jumbotron h1, .jumbotron .h1, .jumbotron h2, .jumbotron .h2, .jumbotron h3, .jumbotron .h3, .styled-h2 { + margin-top: 23px; + margin-bottom: 11.5px; } + +.jumbotron .drawer-wrapper ul, .jumbotron .drawer-wrapper ol { + padding-left: 1em; } + +.jumbotron .drawer-wrapper ul li, .jumbotron .drawer-wrapper ol li { + padding-bottom: 10px; } + +.jumbotron a, .jumbotron a:hover { + text-decoration: none; } + +.jumbotron, .container .jumbotron { + border-radius: 0 !important; } + +.detail-logo img { + margin-top: 35px; + margin-bottom: 15px; + width: 80%; } + +#site-logo { + margin-top: 0; } + +@media (min-width: 768px) { + #site-logo { + margin-top: 0; } } + +@media (min-width: 768px) { + .jumbotron h2, .styled-h2 { + font-size: 2em; } + .jumbotron h4 { + font-size: 1.22em; } } + +/* Buttons & links */ +.btn, .btn-default { + white-space: normal; } + +.jumbotron .btn-default { + background-color: #FFCD00; + color: #484949; + font-family: inherit; + transition: all 0.3s; + border: 0; + border-radius: 0; } + +.jumbotron .btn-default:hover { + background-color: #182B49; + color: #fff; } + +.jumbotron-hero .btn-default:hover { + background-color: #fff; + color: #484949; } + +.styled-yellow { + background-color: #FFCD00; + color: #484949 !important; + font-family: inherit; + transition: all 0.3s; + border: 0; + border-radius: 0; + text-decoration: none !important; } + +.styled-yellow:hover { + background-color: #e6b900; } + +.jumbotron .btn-primary { + background-color: #00629B; + color: #fff; + font-family: inherit; + transition: all 0.3s; + border: 0; + border-radius: 0; } + +.jumbotron .btn-primary:hover { + background-color: #182B49; } + +.styled-blue { + background-color: #00629B; + color: #fff !important; + font-family: inherit; + transition: all 0.3s; + border: 0; + border-radius: 0; + text-decoration: none !important; } + +.styled-blue:hover { + background-color: #004268; + color: #fff; } + +.jumbotron .btn, .styled-yellow, .styled-blue { + font-size: 0.9375em; + text-transform: uppercase; + padding: 0.8em 1.5em; + min-width: 200px; + margin-bottom: 1em; + letter-spacing: 0.08em; + font-weight: normal; } + +.jumbotron .text-link { + text-transform: uppercase; + font-weight: bold; + border-bottom: 1px #00629B solid; + letter-spacing: 0.08em; } + +/* Hero Landing Page */ +.jumbotron { + background-size: cover !important; + background-repeat: no-repeat; + background-position: center; + color: inherit; + padding: 0 !important; } + +.hm { + padding: 0 0 !important; + color: #fff !important; + margin: 0 !important; } + +.jumbotron-hero-lg { + background-image: url("../../img/gps-hero.jpg"); } + +.jumbotron .text-indent-h1 h1 { + text-transform: uppercase; } + +@media (max-width: 768px) { + .jumbotron .text-indent-h1 h1 { + font-size: 2.5em; } } + +@media (max-width: 480px) { + .jumbotron .text-indent-h1 h1 { + font-size: 2em; } } + +.jumbotron .text-indent-h1 p { + margin-left: 6.75em; } + +.jumbotron .text-indent-h1 a.btn { + margin-left: 7.2em; } + +.jumbotron .text-indent-h2 p { + margin-left: 3.6em; } + +.jumbotron .text-indent-h2 a.btn { + margin-left: 4.4em; } + +.jumbotron .text-indent-h1 p, .jumbotron .text-indent-h2 p { + width: 19em; } + +.jumbotron .text-indent h1 span { + margin-left: 1.65em; } + +.jumbotron-hero .text-indent h1, .jumbotron-hero .text-indent h2, .jumbotron-hero .text-indent h3, .jumbotron-image-bg .text-indent h1, .jumbotron-image-bg .text-indent h2, .jumbotron-image-bg .text-indent h3 { + text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.75); } + +.jumbotron-hero .text-indent p, .jumbotron-image-bg .text-indent p { + text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.75); } + +.jumbotron { + margin: 60px 0; } + +/* Text and CTA w/Full Height Image Left */ +.side-image-white { + background-color: #fff; } + +.jumbotron p { + margin-bottom: 15px; + font-size: 1em; } + +.embed-video { + margin: 23px 0; + position: relative; + padding-bottom: 51.10%; + /* - 16:9 aspect ratio (most common) */ + padding-top: 30px; + height: 0; + overflow: hidden; } + +.embed-video iframe, +.embed-video object, +.embed-video embed { + border: 0; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +/* News with Images */ +.jumbotron-news { + background: none !important; } + +.jumbotron-news .panel-heading { + padding: 10px 30px; } + +.jumbotron-news h2 { + margin-bottom: 1em; + margin-top: 0; + text-transform: uppercase; + font-weight: bold; } + +.no-gutter { + padding-left: 0; + padding-right: 0; } + +.jumbotron .panel { + border-radius: 0 !important; } + +.jumbotron-news .panel.panel-default { + border: 1px solid #f2f2f2; + background-color: #f5f5f5; } + +.jumbotron-news .panel.panel-default img { + width: 100%; } + +.jumbotron-news .panel.panel-default .panel-heading { + background-color: #f5f5f5; + border: none; } + +.panel-default > .panel-heading { + color: #333; } + +.jumbotron-news .panel .panel-news-date { + text-transform: uppercase; + color: #747678; + font-size: 0.85em; + margin-bottom: 0.25em; + margin-top: 1em; } + +.jumbotron-news .panel .panel-news-title { + text-transform: none; + margin-top: 0; } + +.jumbotron-news .panel.panel-default .panel-body { + padding-top: 0; + padding-right: 2em; } + +@media (min-width: 768px) { + .jumbotron-news .panel.panel-default .panel-heading { + min-height: 135px; } } + +/* Callout Image Small Inset */ +.jumbotron-callout-image-small-inset { + background-image: url("../img/callout-content-two-bg.jpg"); + background-position: center center; + background-size: cover; + padding: 48px 0 !important; + border-radius: 0 !important; } + +.jumbotron-callout-image-small-inset h2, .jumbotron-callout-image-small-inset h3, .jumbotron-callout-image-small-inset p, .jumbotron-callout-image-small-inset a { + color: #484949; } + +.jumbotron-callout-image-small-inset .panel { + margin: 0 15px; } + +.jumbotron-callout-image-small-inset .panel.panel-default .panel-body { + padding: 1em 2em; } + +.jumbotron-callout-image-small-inset .btn-default:hover { + background-color: #182B49; + color: #fff; } + +/* Callout Content One */ +.jumbotron-callout-content-one { + background-color: #00629B; + background-image: url("../img/bg-dark-blue-trident-full.png"); + background-position: center; + color: #fff; + padding: 30px 0 !important; + border-radius: 0 !important; } + +.jumbotron-callout-content-one h2, .jumbotron-callout-content-one h3, .jumbotron-callout-content-one h4, .jumbotron-callout-content-one h5, .jumbotron-callout-content-one h6, .jumbotron-callout-content-one p, .jumbotron-callout-content-one li, .jumbotron-callout-content-one a:hover { + color: #fff; } + +.jumbotron-callout-content-one a { + color: #FFF; + text-decoration: underline !important; } + +.jumbotron-callout-content-one a:hover { + color: #FFF; + text-decoration: underline !important; } + +.jumbotron-callout-content-one a.btn { + text-decoration: none !important; } + +.jumbotron-callout-content-one a.btn:hover { + text-decoration: none; } + +.jumbotron-callout-content-one .panel { + background-color: transparent !important; + margin: 0 15px 20px 15px; + box-shadow: none; + border: 0; } + +.jumbotron-callout-content-one .panel.panel-primary .panel-body { + padding: 0em 1em; } + +.jumbotron-callout-content-one .panel.panel-primary .panel-body p { + font-size: 1.125em; + color: #fff; } + +.jumbotron-callout-content-one .cc-yellow-trident { + background-image: url("../img/bg-dark-blue-trident-full.png"); } + +@media (min-width: 992px) { + .jumbotron-callout-content-one h2 { + margin-left: 50px; } } + +.cc-yellow-trident { + color: #333333; + background-color: #f5f5f5; + background-image: url("../img/bg-yellow-trident-full.png"); } + +.cc-yellow-trident h2, .cc-yellow-trident h3, .cc-yellow-trident h4, .cc-yellow-trident h5, .cc-yellow-trident h6, .cc-yellow-trident p, .cc-yellow-trident li, .cc-yellow-trident a:hover { + color: #333333; } + +.cc-yellow-trident .panel.panel-primary .panel-body p { + color: #333333; } + +.cc-yellow-trident a { + color: #333333; + text-decoration: underline !important; } + +.cc-yellow-trident a:hover { + color: #333333; + text-decoration: underline !important; } + +.cc-dark-blue-trident { + background-color: #182b49; + background-image: url("../img/bg-white-trident-full.png"); } + +.cc-dark-blue-library { + background-color: #182b49; + background-image: url("../img/dark-blue-library.png"); } + +.cc-blue-library-light { + background-image: url("../img/dark-blue-library.png"); } + +.cc-custom-background { + background-size: cover; } + +/* Callout Content Two */ +.jumbotron-callout-content-two { + background-image: url("../img/callout-content-two-bg.jpg"); + background-position: center center; + background-size: cover; + padding: 48px 0 !important; + border-radius: 0 !important; } + +.jumbotron-callout-content-two .panel { + border: none; } + +.jumbotron-callout-content-two .panel.panel-primary { + background-color: rgba(0, 106, 150, 0.85); } + +.jumbotron-callout-content-two .panel.panel-primary .panel-body { + padding: 1em 2em; } + +.jumbotron-callout-content-two .panel.panel-primary .panel-body .btn { + margin-bottom: 0; } + +.jumbotron-callout-content-two .panel.panel-primary .text-link { + color: #fff; } + +.jumbotron-callout-content-two .panel.panel-primary .text-right { + margin-bottom: 0.25em; } + +.jumbotron-callout-content-two .panel-primary .text-link { + border-bottom: 1px #fff solid; } + +.jumbotron-callout-content-two h2, .jumbotron-callout-content-two h3, .jumbotron-callout-content-two p { + color: #fff; } + +.cta-two-three p { + color: #fff !important; } + +.ct4-light-bg h2 { + color: #484949 !important; } + +.ct4-light-bg p { + color: #333; } + +.panel-darker { + background-color: #00629B !important; } + +.text-indent h2 span, .text-indent .h2 span { + margin-left: 2em; } + +/* Jumbotron full-width */ +.jumbotron-full-width { + background-image: url("../img/bg-light-yellow-trident.png"); + background-position: top right; + background-color: #f5f5f5; + border-radius: 0 !important; + padding: 2em !important; } + +.jumbotron-full-width-ni { + background-color: #f5f5f5; + border-radius: 0 !important; + padding: 2em !important; } + +.jumbotron-full-width-ni h2 { + margin: 0 0 30px 0; } + +/********************* OVERWRITES */ +/******************************************************************* +FLEXSLIDER +************************/ +.flexslider { + border: 0; + border-radius: 0; + margin-bottom: 1em; + width: 100%; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + /* pause and play control */ + /* direction control */ } + +.flexslider a { + color: #fff; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + +.flexslider .slides li { + margin: 0; } + +.flexslider .flex-control-nav { + float: right; + right: 32px; + bottom: 10px; + height: 12px; + width: auto; + z-index: 5; } + +.flexslider .flex-control-nav li { + vertical-align: top; + margin: 0 0 0 5px; + /* shared paging, pause and play control styles */ + /* paging control */ } + +.flexslider .flex-control-nav li a { + border: 1px solid #016691; + cursor: pointer; + height: 10px; + margin-left: 8px; + text-indent: -9999px; + width: 20px; } + +.flexslider .flex-control-nav li a { + background: #bed4e7; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; } + +.flexslider .flex-control-nav li a.flex-active { + background: #eb8626; + border: 1px solid #c15f01; + cursor: default; } + +.flexslider .flex-pauseplay a { + border: 0; + display: block; + height: 10px; + width: 20px; + position: static; + text-indent: -9999px; } + +.flexslider .flex-pauseplay a.flex-pause { + background-position: 6px -248px; } + +.flexslider .flex-pauseplay a.flex-play { + background-position: 8px -232px; } + +.flexslider .flex-direction-nav li a { + background: #000; + background: rgba(0, 0, 0, 0.3); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c000000, endColorstr=#4c000000); + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + text-indent: 0; + text-align: center; + margin: 0; + top: 30%; + height: 24px; + width: 24px; + opacity: .8; } + +.flexslider .flex-direction-nav li a:hover { + text-decoration: none; } + +.flexslider .flex-direction-nav li a.flex-prev { + left: 10px; } + +.flexslider .flex-direction-nav li a.flex-next { + right: 10px; } + +.flexslider .flex-direction-nav a:before { + content: ''; } + +.flexslider .flex-direction-nav a.flex-next:before { + content: ''; } + +.flexslider .flex-controls { + height: 37px; + z-index: 99; } + +.flexslider .flex-controls .flex-pauseplay { + bottom: 10px; + right: 5px; + position: absolute; + z-index: 10; } + +/* Caption style */ +/* IE rgba() hack */ +.flex-caption { + background: none; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000); + zoom: 1; } + +.flex-caption { + width: 100%; + padding: 2%; + margin: 0; + position: absolute; + left: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.3); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); + font-size: 14px; + line-height: 18px; } + +.flex-caption a { + -webkit-tap-highlight-color: rgba(88, 166, 203, 0.6); } + +/* control container */ +/* alternative theme */ +.flexslider.alt .flex-direction-nav li a, +.flexslider.alt .flex-caption { + background: #0B638B; + background: rgba(11, 99, 139, 0.8); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4); + zoom: 1; } + +/******************************************************************* +Alerts +************************/ +/******************************************************************* +Breadcrumbs +************************/ +.breadcrumb { + background: transparent; } + +/******************************************************************* +Kitchen Sink +************************/ +.bs-example { + margin-bottom: 10px; } + +/********************* CMS */ +/********************************************************************** + * CSS Styling for the drawer widget. + */ +.drawer-wrapper { + margin-bottom: 1em; + clear: both; } + +/* header */ +.drawer h2 { + text-transform: none; + font-weight: normal; + font-size: 20px; + margin-top: 0; + margin-bottom: 0; + padding: .1em 0; + zoom: 1; } + +/* default state */ +.drawer h2 a { + background-position: 5px 12px; + display: block; + padding: 10px 0 10px 30px; + text-decoration: none; + color: #fff; + background-color: #00629B; } + +.drawer h2 a:hover { + background-color: #004268; } + +/* ie7 hack */ +*:first-child + html .drawer h2 a { + display: inline-block; } + +/* expanded state */ +.drawer h2.expand a { + background-position: 5px -86px; + padding: 10px 0 10px 30px; + color: #fff; + background-color: #004268; } + +/* hover state */ +.drawer h2:hover, .drawer h2:active { + background-color: transparent; + cursor: pointer; + color: #fff; } + +/* content background */ +.drawer > div, +.drawer > article { + padding: 1em 2em; } + +.drawer > div.cols_wrapper { + padding: 1em 0; } + +/* toggle links */ +.drawer-toggle { + font-size: 90%; + padding: .5em 0; } + +.drawer-toggle a { + color: #666; } + +.drawer-toggle a:hover, .drawer-toggle a:active { + color: #016691; } + +.drawer-toggle a { + background-position: 0 -215px; + padding-left: 16px; } + +.drawer-toggle a.expand { + background-position: 0 -200px; } + +/* light theme */ +.drawer-wrapper .drawer.light-theme > div { + margin-bottom: 16px; + border-left: 1px solid #e3e3e3; + border-right: 1px solid #e3e3e3; + border-bottom: 1px solid #e3e3e3; + background-color: #fcfcfc; + padding: 0.5em 70px 0em 1em; } + +.drawer-wrapper .drawer.light-theme h2 { + font-weight: normal; + font-size: 18px; + line-height: 22px; + margin-bottom: 16px; + padding-bottom: 0; + background-color: #e8e8e8; + position: relative; } + +.drawer-wrapper .drawer.light-theme h2:after { + content: " "; + position: absolute; + right: 1.3em; + top: 1.3em; + display: block; + width: 30px; + height: 25px; + background: url(../img/expand.svg) no-repeat; } + +.drawer-wrapper .drawer.light-theme h2.expand { + margin-bottom: 0; } + +.drawer-wrapper .drawer.light-theme h2.expand:after { + content: " "; + position: absolute; + right: 1.3em; + top: 1.3em; + display: block; + width: 30px; + height: 25px; + background: url(../img/collapse.svg) no-repeat; } + +.drawer-wrapper .drawer.light-theme h2 a { + font-weight: bold; + background-color: #e8e8e8; + color: #333; + line-height: 1.8em; + background: none; + padding: 1em 70px 1em 1em; } + +.drawer-wrapper .drawer.light-theme h2 a:hover { + background-color: #e8e8e8; } + +@media print { + /* removes ucsd logo and other background images (glyphicons) */ + html, main, footer *, + .layout-title * { + background-color: transparent !important; + background-image: none !important; + overflow: visible !important; } + /* title and header font color should be black (readable) */ + .title-header, + h1, h2, h3, h4, h5, h6, p { + color: #000; } + /* hide login/ emergency/ nav/ search/ footer links/ btn-nav styles */ + #uc-emergency, .layout-login, nav, .search, .footer-links, .btn-nav { + display: none; } + main { + width: 99.99% !important; } + main section { + left: 0 !important; + margin: 0 !important; + padding: 0 !important; + width: 100% !important; } + /* reset horizontal ruler */ + hr { + background-color: #ccc !important; } + .main-content-nav { + background: none; } + a[href]:after { + content: none !important; } } + +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJhc2Uuc2NzcyIsInBhcnRpYWxzL192YXJpYWJsZXMuc2NzcyIsInBhcnRpYWxzL19jdXN0b20tdmFyaWFibGVzLnNjc3MiLCJwYXJ0aWFscy9yZWZlcmVuY2Uuc2NzcyIsImJhc2UuY3NzIiwicGFydGlhbHMvbGF5b3V0LnNjc3MiLCJwYXJ0aWFscy9tb2R1bGVzLnNjc3MiLCJwYXJ0aWFscy9uYXZiYXIuc2NzcyIsInBhcnRpYWxzL3Vjc2QvYmFzZS9fc3R5bGluZy5zY3NzIiwicGFydGlhbHMvY29tcG9uZW50cy5zY3NzIiwicGFydGlhbHMvdml0cm8tbW9kdWxlcy5zY3NzIiwicGFydGlhbHMvdWNzZC9jbXMvX292ZXJ3cml0ZS5zY3NzIiwicGFydGlhbHMvdWNzZC9jbXMvX2RyYXdlci5zY3NzIiwicGFydGlhbHMvcHJpbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7QUNBNUMsaUJBQWlCO0FBU2pCLFlBQVk7QUFLWixtQkFBbUI7QUFNbkIsV0FBVztBQUdYLFlBQVk7QUNvRFosSUFBSTtBQWdUSiwwRUFBMEU7QUZ2WDFFLHFDQUFxQztBQUM3QixPQUFBLENBQUEsNkRBQUE7QUFFUiw4QkFBOEI7QUdQOUI7Ozs7O0dBS0c7QUFHSCxXQUFBO0FDVUEsY0FBYyxHQUFHLGlCRFRrQixDQUFBO0VBQ2pDLFVBQVUsRUFBRSwyQkFBQSxDQUFBLFNBQUEsQ0FBQSxXQUE4QyxHQUFBOztBQUUxRCxNQUFBLENBQUEsTUFBQSxPQUFBLDZCQUFBLEVBQUEsQ0FBQTtFQUpGLFdBQUE7RUNjSSxjQUFjLEdBQUcsaUJEYmMsQ0FBQTtJQUkvQixnQkFBZ0IsRUFBRSw2QkFBMEI7SUFDNUMsZUFBZSxFQUFFLFdBQVcsR0FBQTs7QUFLaEMsWUFBQSxDQUFBLEVBQWdCLENBQUE7RUFDZCxVQUFVLEVBQUUsNkJBQUEsQ0FBQSxTQUFBLENBQUEsV0FBZ0QsR0FBQTs7QUFJOUQsSUFBQSxDQUFBLEVBQUE7QUNNQSxLRExLLENBQUE7RUFDSCxV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 */ + +/*# sourceMappingURL=base.css.map */ diff --git a/app/css/base.css.map b/app/css/base.css.map new file mode 100644 index 0000000..5f250f5 --- /dev/null +++ b/app/css/base.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["base.scss","partials/_variables.scss","partials/_custom-variables.scss","partials/reference.scss","base.css","partials/layout.scss","partials/modules.scss","partials/navbar.scss","partials/ucsd/base/_styling.scss","partials/components.scss","partials/vitro-modules.scss","partials/ucsd/cms/_overwrite.scss","partials/ucsd/cms/_drawer.scss","partials/print.scss"],"names":[],"mappings":"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","file":"base.css","sourcesContent":["/********************* VARIABLES & MIXINS */\n@import \"partials/variables.scss\";\n@import \"partials/custom-variables.scss\"; //vitro variables\n\n/********************* GOOGLE FONT */\n@import url('https://fonts.googleapis.com/css?family=Roboto:400,700');\n\n/********************* BASE */\n@import \"partials/reference.scss\";\n@import \"partials/layout.scss\";\n@import \"partials/modules.scss\";\n@import \"partials/navbar.scss\";\n@import \"partials/ucsd/base/styling.scss\";\n@import \"partials/components.scss\";\n\n/********************* VITRO MODULES */\n@import \"partials/vitro-modules.scss\";\n\n/********************* OVERWRITES */\n@import \"partials/ucsd/cms/overwrite.scss\";\n\n/********************* CMS */\n@import \"partials/ucsd/cms/drawer.scss\";\n\n@import \"partials/print.scss\";\n\n","/* BREAKPOINTS */\n$xl-deskotp: 1450px;\n$full: 1200px;\n$desktop: 960px;\n$desktop-small: 768px;\n$desktop-small-after: 767px;\n$tablet: 640px;\n$mobile: 480px;\n$mobile-small: 360px;\n$minimum: 320px;\n\n/* COLORS */\n$blue: #006b95;\n$teal: #2b92b9;\n$orange: #d56a03;\n$search-bg: #DFE2E4;\n\n/* LAYOUT VALUES */\n$slider-offset: 42%;\n$slider-offset-mobile: 83%;\n$nav-height: 35px;\n$trans-time: .2s;\n\n/* FONTS */\n$icon-font-path: \"../fonts/\";\n\n/* MIXINS */\n@mixin transition($property, $time) {\n\t-webkit-transition: $property $time ease;\n\t-moz-transition: $property $time ease;\n\t-ms-transition-delay: $property $time ease;\n\t-o-transition: $property $time ease;\n\ttransition: $property $time ease;\n}\n\n@mixin menu-transition($offset, $angle) {\n\t-webkit-transform: translate3d(0, $offset, 0) rotateZ($angle);\n\t-moz-transform: translate3d(0, $offset, 0) rotateZ($angle);\n\t-ms-transform: translate3d(0, $offset, 0) rotateZ($angle);\n\t-o-transform: translate3d(0, $offset, 0) rotateZ($angle);\n\ttransform: translate3d(0, $offset, 0) rotateZ($angle);\n}\n\n@mixin transition-delay($time) {\n\t-webkit-transition-delay: $time;\n\t-moz-transition-delay: $time;\n\t-ms-transition-delay: $time;\n\t-o-transition-delay: $time;\n\ttransition-delay: $time;\n}\n","// Override Bootstrap variables here\n\n//\n// Variables\n// --------------------------------------------------\n\n// UCSD Brand Colors\n\n//primary\n$blue: #00629B;\n$gray: #747678;\n\n//secondary\n$dark-blue: #182B49;\n$yellow: #FFCD00;\n$teal: #00C6D7;\n\n//neutral\n$black: #000000;\n$beige: #AFA9A0;\n$dark-gray: #484949;\n$darker-gray: #333333;\n\n// UCSD School Colors\n\n$Marshall: #ab2328;\n$Muir: #115740;\n$Revelle: #003087;\n$Roosevelt: #5e8ab4;\n$Sixth: #008c95;\n$Warren: #862633; \n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n$gray-base: #000 !default;\n$gray-darker: lighten($gray-base, 13.5%) !default; // #222\n$gray-dark: lighten($gray-base, 20%) !default; // #333\n$gray: #747678;\n$gray-light: lighten($gray-base, 46.7%) !default; // #777\n$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee\n\n$brand-primary: $blue;\n$brand-success: #5cb85c !default;\n$brand-info: #5bc0de !default;\n$brand-warning: #f0ad4e !default;\n$brand-danger: #d9534f !default;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles. \n\n//** Background color for ``.\n$body-bg: #fff !default;\n//** Global text color on ``. */\n$text-color: $dark-gray !default;\n\n//** Global textual link color.\n$link-color: $brand-primary !default;\n//** Link hover color set via `darken()` function.\n$link-hover-color: darken($link-color, 15%) !default;\n//** Link hover decoration.\n$link-hover-decoration: underline !default;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more. */\n\n$font-family-sans-serif: \"BrixSansRegular\", Helvetica, Arial, sans-serif !default;\n//** Default monospace fonts for ``, ``, and `
`.\n$font-family-monospace:   Menlo, Monaco, Consolas, \"Courier New\", monospace !default;\n$font-family-base:        $font-family-sans-serif !default;\n/**/\n$font-size-base:          16px !default;\n$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px\n$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px\n\n$font-size-h1:            floor(($font-size-base * 2.375)) !default; // ~38px\n$font-size-h2:            floor(($font-size-base * 1.75)) !default; // ~28px\n$font-size-h3:            ceil(($font-size-base * 1.55)) !default; // ~25px\n$font-size-h4:            ceil(($font-size-base * 1.125)) !default; // ~18px\n$font-size-h5:            $font-size-base !default;\n$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.*/\n$line-height-base:        1.5 !default; // 26/16\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px\n\n//** By default, this inherits from the ``. */\n$headings-font-family:    \"BrixSansBold\", Helvetica, Arial, sans-serif !default;\n$headings-font-weight:    bold;\n$headings-line-height:    0.917 !default;\n$headings-color:          inherit !default;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n\n// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.\n// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.\n$icon-font-path: if($bootstrap-sass-asset-helper, \"bootstrap/\", \"../fonts/bootstrap/\") !default;\n\n//** File name for all font files.\n$icon-font-name:          \"glyphicons-halflings-regular\" !default;\n//** Element ID within SVG icon file.\n$icon-font-svg-id:        \"glyphicons_halflingsregular\" !default;\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). */\n\n$padding-base-vertical:     6px !default;\n$padding-base-horizontal:   12px !default;\n\n$padding-large-vertical:    10px !default;\n$padding-large-horizontal:  16px !default;\n\n$padding-small-vertical:    5px !default;\n$padding-small-horizontal:  10px !default;\n\n$padding-xs-vertical:       1px !default;\n$padding-xs-horizontal:     5px !default;\n\n$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome\n$line-height-small:         1.5 !default;\n\n$border-radius-base:        0px;\n$border-radius-large:       0px;\n$border-radius-small:       0px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n$component-active-color:    #fff !default;\n//** Global background color for active items (e.g., navs or dropdowns).\n$component-active-bg:       $brand-primary !default;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n$caret-width-base:          4px !default;\n//** Carets increase slightly in size for larger components.\n$caret-width-large:         5px !default;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ``s.\n$table-cell-padding:            8px !default;\n//** Padding for cells in `.table-condensed`.\n$table-condensed-cell-padding:  5px !default;\n\n//** Default background color used for all tables.\n$table-bg:                      transparent !default;\n//** Background color used for `.table-striped`.\n$table-bg-accent:               #f9f9f9 !default;\n//** Background color used for `.table-hover`.\n$table-bg-hover:                #f5f5f5 !default;\n$table-bg-active:               $table-bg-hover !default;\n\n//** Border color for table and cell borders.\n$table-border-color:            #ddd !default;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color. */\n\n$btn-font-weight:                bold;\n\n$btn-default-color:              #fff;\n$btn-default-bg:                 $yellow;\n$btn-default-border:             transparent;\n\n$btn-primary-color:              #fff !default;\n$btn-primary-bg:                 $brand-primary !default;\n$btn-primary-border:             transparent;\n\n$btn-success-color:              #fff !default;\n$btn-success-bg:                 $brand-success !default;\n$btn-success-border:             darken($btn-success-bg, 5%) !default;\n\n$btn-info-color:                 #fff !default;\n$btn-info-bg:                    $brand-info !default;\n$btn-info-border:                darken($btn-info-bg, 5%) !default;\n\n$btn-warning-color:              #fff !default;\n$btn-warning-bg:                 $brand-warning !default;\n$btn-warning-border:             darken($btn-warning-bg, 5%) !default;\n\n$btn-danger-color:               #fff !default;\n$btn-danger-bg:                  $brand-danger !default;\n$btn-danger-border:              darken($btn-danger-bg, 5%) !default;\n\n$btn-link-disabled-color:        $gray-light !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius-base:         $border-radius-base !default;\n$btn-border-radius-large:        $border-radius-large !default;\n$btn-border-radius-small:        $border-radius-small !default;\n\n\n//== Forms\n//\n//##\n\n//** `` background color\n$input-bg:                       #fff !default;\n//** `` background color\n$input-bg-disabled:              $gray-lighter !default;\n\n//** Text color for ``s\n$input-color:                    $gray !default;\n//** `` border color\n$input-border:                   #ccc !default;\n\n// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on ``s in CSS.\n$input-border-radius:            $border-radius-base !default;\n//** Large `.form-control` border radius\n$input-border-radius-large:      $border-radius-large !default;\n//** Small `.form-control` border radius\n$input-border-radius-small:      $border-radius-small !default;\n\n//** Border color for inputs on focus\n$input-border-focus:             #66afe9 !default;\n\n//** Placeholder text color */\n$input-color-placeholder:        #7f7f7f;\n\n//** Default `.form-control` height */\n$input-height-base:              ($line-height-computed + ($padding-base-vertical * 4) + 2);\n//** Large `.form-control` height\n$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;\n//** Small `.form-control` height\n$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;\n\n//** `.form-group` margin\n$form-group-margin-bottom:       15px !default;\n\n$legend-color:                   $gray-dark !default;\n$legend-border-color:            #e5e5e5 !default;\n\n//** Background color for textual input addons\n$input-group-addon-bg:           $gray-lighter !default;\n//** Border color for textual input addons\n$input-group-addon-border-color: $input-border !default;\n\n//** Disabled cursor for form controls and buttons.\n$cursor-disabled:                not-allowed !default;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu. */\n$dropdown-bg:                    darken($blue, 8%);\n//** Dropdown menu `border-color`.\n$dropdown-border:                rgba(0,0,0,.15) !default;\n//** Dropdown menu `border-color` **for IE8**.\n$dropdown-fallback-border:       #ccc !default;\n//** Divider color for between dropdown items.\n$dropdown-divider-bg:            #e5e5e5 !default;\n\n//** Dropdown link text color. */\n$dropdown-link-color:            #fff;\n//** Hover color for dropdown links.\n$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;\n//** Hover background for dropdown links. */\n$dropdown-link-hover-bg:         #fff;\n\n//** Active dropdown menu item text color.\n$dropdown-link-active-color:     $component-active-color !default;\n//** Active dropdown menu item background color.\n$dropdown-link-active-bg:        $component-active-bg !default;\n\n//** Disabled dropdown menu item background color.\n$dropdown-link-disabled-color:   $gray-light !default;\n\n//** Text color for headers within dropdown menus.\n$dropdown-header-color:          $gray-light !default;\n\n//** Deprecated `$dropdown-caret-color` as of v3.1.0\n$dropdown-caret-color:           #000 !default;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n$zindex-navbar:            1000 !default;\n$zindex-dropdown:          1000 !default;\n$zindex-popover:           1060 !default;\n$zindex-tooltip:           1070 !default;\n$zindex-navbar-fixed:      1030 !default;\n$zindex-modal-background:  1040 !default;\n$zindex-modal:             1050 !default;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `$screen-xs` as of v3.0.1\n$screen-xs:                  480px !default;\n//** Deprecated `$screen-xs-min` as of v3.2.0\n$screen-xs-min:              $screen-xs !default;\n//** Deprecated `$screen-phone` as of v3.0.1\n$screen-phone:               $screen-xs-min !default;\n\n// Small screen / tablet\n//** Deprecated `$screen-sm` as of v3.0.1\n$screen-sm:                  768px !default;\n$screen-sm-min:              $screen-sm !default;\n//** Deprecated `$screen-tablet` as of v3.0.1\n$screen-tablet:              $screen-sm-min !default;\n\n// Medium screen / desktop\n//** Deprecated `$screen-md` as of v3.0.1\n$screen-md:                  992px !default;\n$screen-md-min:              $screen-md !default;\n//** Deprecated `$screen-desktop` as of v3.0.1\n$screen-desktop:             $screen-md-min !default;\n\n// Large screen / wide desktop\n//** Deprecated `$screen-lg` as of v3.0.1\n$screen-lg:                  1200px !default;\n$screen-lg-min:              $screen-lg !default;\n//** Deprecated `$screen-lg-desktop` as of v3.0.1\n$screen-lg-desktop:          $screen-lg-min !default;\n\n// So media queries don't overlap when required, provide a maximum\n$screen-xs-max:              ($screen-sm-min - 1) !default;\n$screen-sm-max:              ($screen-md-min - 1) !default;\n$screen-md-max:              ($screen-lg-min - 1) !default;\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n$grid-columns:              12 !default;\n//** Padding between columns. Gets divided in half for the left and right.\n$grid-gutter-width:         30px !default;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n$grid-float-breakpoint:     $screen-md-min;\n//** Point at which the navbar begins collapsing.\n$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes. \n\n// Small screen / tablet\n$container-tablet:             (720px + $grid-gutter-width) !default;\n//** For `$screen-sm-min` and up.\n$container-sm:                 $container-tablet !default;\n\n// Medium screen / desktop\n$container-desktop:            (940px + $grid-gutter-width) !default;\n//** For `$screen-md-min` and up.\n$container-md:                 $container-desktop !default;\n\n// Large screen / wide desktop */\n/*$container-large-desktop:      (1140px + $grid-gutter-width) !default;*/\n$container-large-desktop:      (1140px + $grid-gutter-width) !default;\n//** For `$screen-lg-min` and up. **//\n$container-lg:                 $container-large-desktop !default;\n\n\n//== Navbar\n//\n//## */\n\n// Basics of a navbar \n$navbar-height:                    80px;\n$navbar-margin-bottom:             0;\n$navbar-border-radius:             $border-radius-base !default;\n$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;\n$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;\n$navbar-collapse-max-height:       none;\n\n$navbar-default-color:             #777 !default;\n$navbar-default-bg:                #fff;\n$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;\n\n// Navbar links\n$navbar-default-link-color:                #fff;\n$navbar-default-link-hover-color:          #fff !default;\n$navbar-default-link-hover-bg:             $blue;\n$navbar-default-link-active-color:         #fff;\n$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;\n$navbar-default-link-active-bg:            transparent;\n$navbar-default-link-disabled-color:       #ccc !default;\n$navbar-default-link-disabled-bg:          transparent !default;\n\n// Navbar brand label\n$navbar-default-brand-color:               $navbar-default-link-color !default;\n$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;\n$navbar-default-brand-hover-bg:            transparent !default;\n\n// Navbar toggle\n$navbar-default-toggle-hover-bg:           #ddd !default;\n$navbar-default-toggle-icon-bar-bg:        #888 !default;\n$navbar-default-toggle-border-color:       transparent;\n\n\n//=== Inverted navbar\n// Reset inverted navbar basics\n$navbar-inverse-color:                      lighten($gray-light, 15%) !default;\n$navbar-inverse-bg:                         #222 !default;\n$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;\n\n// Inverted navbar links\n$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;\n$navbar-inverse-link-hover-color:           #fff !default;\n$navbar-inverse-link-hover-bg:              transparent !default;\n$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;\n$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;\n$navbar-inverse-link-disabled-color:        #444 !default;\n$navbar-inverse-link-disabled-bg:           transparent !default;\n\n// Inverted navbar brand label\n$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;\n$navbar-inverse-brand-hover-color:          #fff !default;\n$navbar-inverse-brand-hover-bg:             transparent !default;\n\n// Inverted navbar toggle\n$navbar-inverse-toggle-hover-bg:            #333 !default;\n$navbar-inverse-toggle-icon-bar-bg:         #fff !default;\n$navbar-inverse-toggle-border-color:        #333 !default;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n$nav-link-padding:                          10px 15px !default;\n$nav-link-hover-bg:                         $gray-lighter !default;\n\n$nav-disabled-link-color:                   $gray-light !default;\n$nav-disabled-link-hover-color:             $gray-light !default;\n\n//== Tabs\n$nav-tabs-border-color:                     #ddd !default;\n\n$nav-tabs-link-hover-border-color:          $gray-lighter !default;\n\n$nav-tabs-active-link-hover-bg:             $body-bg !default;\n$nav-tabs-active-link-hover-color:          $gray !default;\n$nav-tabs-active-link-hover-border-color:   #ddd !default;\n\n$nav-tabs-justified-link-border-color:            #ddd !default;\n$nav-tabs-justified-active-link-border-color:     $body-bg !default;\n\n//== Pills\n$nav-pills-border-radius:                   $border-radius-base !default;\n$nav-pills-active-link-hover-bg:            $component-active-bg !default;\n$nav-pills-active-link-hover-color:         $component-active-color !default;\n\n\n//== Pagination\n//\n//##\n\n$pagination-color:                     $link-color !default;\n$pagination-bg:                        #fff !default;\n$pagination-border:                    #ddd !default;\n\n$pagination-hover-color:               $link-hover-color !default;\n$pagination-hover-bg:                  $gray-lighter !default;\n$pagination-hover-border:              #ddd !default;\n\n$pagination-active-color:              #fff !default;\n$pagination-active-bg:                 $brand-primary !default;\n$pagination-active-border:             $brand-primary !default;\n\n$pagination-disabled-color:            $gray-light !default;\n$pagination-disabled-bg:               #fff !default;\n$pagination-disabled-border:           #ddd !default;\n\n\n//== Pager\n//\n//##\n\n$pager-bg:                             $pagination-bg !default;\n$pager-border:                         $pagination-border !default;\n$pager-border-radius:                  15px !default;\n\n$pager-hover-bg:                       $pagination-hover-bg !default;\n\n$pager-active-bg:                      $pagination-active-bg !default;\n$pager-active-color:                   $pagination-active-color !default;\n\n$pager-disabled-color:                 $pagination-disabled-color !default;\n\n\n//== Jumbotron\n//\n//##\n\n$jumbotron-padding:              30px !default;\n$jumbotron-color:                inherit !default;\n$jumbotron-bg:                   $gray-lighter !default;\n$jumbotron-heading-color:        inherit !default;\n$jumbotron-font-size:            ceil(($font-size-base * 1));\n$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n$state-success-text:             #3c763d !default;\n$state-success-bg:               #dff0d8 !default;\n$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;\n\n$state-info-text:                #31708f !default;\n$state-info-bg:                  #d9edf7 !default;\n$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;\n\n$state-warning-text:             #8a6d3b !default;\n$state-warning-bg:               #fcf8e3 !default;\n$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;\n\n$state-danger-text:              #a94442 !default;\n$state-danger-bg:                #f2dede !default;\n$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n$tooltip-max-width:           200px !default;\n//** Tooltip text color\n$tooltip-color:               #fff !default;\n//** Tooltip background color\n$tooltip-bg:                  #000 !default;\n$tooltip-opacity:             .9 !default;\n\n//** Tooltip arrow width\n$tooltip-arrow-width:         5px !default;\n//** Tooltip arrow color\n$tooltip-arrow-color:         $tooltip-bg !default;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n//$popover-bg:                          $blue-trans;\n//** Popover maximum width\n$popover-max-width:                   276px !default;\n//** Popover border color\n$popover-border-color:                transparent;\n//** Popover fallback border color\n$popover-fallback-border-color:       #ccc !default;\n\n//** Popover title background color\n$popover-title-bg:                    transparent;\n\n//** Popover arrow width\n$popover-arrow-width:                 0px !default;\n//** Popover arrow color\n//$popover-arrow-color:                 $popover-bg !default;\n\n//** Popover outer arrow width\n$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;\n//** Popover outer arrow color\n$popover-arrow-outer-color:           fade_in($popover-border-color, 0.05) !default;\n//** Popover outer arrow fallback color\n$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n$label-default-bg:            $gray-light !default;\n//** Primary label background color\n$label-primary-bg:            $brand-primary !default;\n//** Success label background color\n$label-success-bg:            $brand-success !default;\n//** Info label background color\n$label-info-bg:               $brand-info !default;\n//** Warning label background color\n$label-warning-bg:            $brand-warning !default;\n//** Danger label background color\n$label-danger-bg:             $brand-danger !default;\n\n//** Default label text color\n$label-color:                 #fff !default;\n//** Default text color of a linked label\n$label-link-hover-color:      #fff !default;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n$modal-inner-padding:         15px !default;\n\n//** Padding applied to the modal title\n$modal-title-padding:         15px !default;\n//** Modal title line-height\n$modal-title-line-height:     $line-height-base !default;\n\n//** Background color of modal content area\n$modal-content-bg:                             #fff !default;\n//** Modal content border color\n$modal-content-border-color:                   rgba(0,0,0,.2) !default;\n//** Modal content border color **for IE8**\n$modal-content-fallback-border-color:          #999 !default;\n\n//** Modal backdrop background color\n$modal-backdrop-bg:           #000 !default;\n//** Modal backdrop opacity\n$modal-backdrop-opacity:      .5 !default;\n//** Modal header border color\n$modal-header-border-color:   #e5e5e5 !default;\n//** Modal footer border color\n$modal-footer-border-color:   $modal-header-border-color !default;\n\n$modal-lg:                    900px !default;\n$modal-md:                    600px !default;\n$modal-sm:                    300px !default;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n$alert-padding:               15px !default;\n$alert-border-radius:         $border-radius-base !default;\n$alert-link-font-weight:      bold !default;\n\n$alert-success-bg:            $state-success-bg !default;\n$alert-success-text:          $state-success-text !default;\n$alert-success-border:        $state-success-border !default;\n\n$alert-info-bg:               $state-info-bg !default;\n$alert-info-text:             $state-info-text !default;\n$alert-info-border:           $state-info-border !default;\n\n$alert-warning-bg:            $state-warning-bg !default;\n$alert-warning-text:          $state-warning-text !default;\n$alert-warning-border:        $state-warning-border !default;\n\n$alert-danger-bg:             $state-danger-bg !default;\n$alert-danger-text:           $state-danger-text !default;\n$alert-danger-border:         $state-danger-border !default;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n$progress-bg:                 #f5f5f5 !default;\n//** Progress bar text color\n$progress-bar-color:          #fff !default;\n//** Variable for setting rounded corners on progress bar.\n$progress-border-radius:      $border-radius-base !default;\n\n//** Default progress bar color\n$progress-bar-bg:             $brand-primary !default;\n//** Success progress bar color\n$progress-bar-success-bg:     $brand-success !default;\n//** Warning progress bar color\n$progress-bar-warning-bg:     $brand-warning !default;\n//** Danger progress bar color\n$progress-bar-danger-bg:      $brand-danger !default;\n//** Info progress bar color\n$progress-bar-info-bg:        $brand-info !default;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n$list-group-bg:                 #fff !default;\n//** `.list-group-item` border color\n$list-group-border:             #ddd !default;\n//** List group border radius\n$list-group-border-radius:      $border-radius-base !default;\n\n//** Background color of single list items on hover\n$list-group-hover-bg:           #f5f5f5 !default;\n//** Text color of active list items\n$list-group-active-color:       $component-active-color !default;\n//** Background color of active list items\n$list-group-active-bg:          $component-active-bg !default;\n//** Border color of active list elements\n$list-group-active-border:      $list-group-active-bg !default;\n//** Text color for content within active list items\n$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;\n\n//** Text color of disabled list items\n$list-group-disabled-color:      $gray-light !default;\n//** Background color of disabled list items\n$list-group-disabled-bg:         $gray-lighter !default;\n//** Text color for content within disabled list items\n$list-group-disabled-text-color: $list-group-disabled-color !default;\n\n$list-group-link-color:         #555 !default;\n$list-group-link-hover-color:   $list-group-link-color !default;\n$list-group-link-heading-color: #333 !default;\n\n\n//== Panels\n//\n//##\n\n$panel-bg:                    #fff !default;\n$panel-body-padding:          15px !default;\n$panel-heading-padding:       10px 15px !default;\n$panel-footer-padding:        $panel-heading-padding !default;\n$panel-border-radius:         $border-radius-base !default;\n\n//** Border color for elements within panels */\n$panel-inner-border:          none;\n$panel-footer-bg:             #f5f5f5 !default;\n\n$panel-default-text:          $gray-dark !default;\n$panel-default-border:        none;\n$panel-default-heading-bg:    #f5f5f5 !default;\n\n$panel-primary-text:          #fff !default;\n$panel-primary-border:        none;\n$panel-primary-heading-bg:    $brand-primary !default;\n\n$panel-success-text:          $state-success-text !default;\n$panel-success-border:        $state-success-border !default;\n$panel-success-heading-bg:    $state-success-bg !default;\n\n$panel-info-text:             $state-info-text !default;\n$panel-info-border:           $state-info-border !default;\n$panel-info-heading-bg:       $state-info-bg !default;\n\n$panel-warning-text:          $state-warning-text !default;\n$panel-warning-border:        $state-warning-border !default;\n$panel-warning-heading-bg:    $state-warning-bg !default;\n\n$panel-danger-text:           $state-danger-text !default;\n$panel-danger-border:         $state-danger-border !default;\n$panel-danger-heading-bg:     $state-danger-bg !default;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n$thumbnail-padding:           4px !default;\n//** Thumbnail background color\n$thumbnail-bg:                $body-bg !default;\n//** Thumbnail border color\n$thumbnail-border:            #ddd !default;\n//** Thumbnail border radius\n$thumbnail-border-radius:     $border-radius-base !default;\n\n//** Custom text color for thumbnail captions\n$thumbnail-caption-color:     $text-color !default;\n//** Padding around the thumbnail caption\n$thumbnail-caption-padding:   9px !default;\n\n\n//== Wells\n//\n//##\n\n$well-bg:                     #f5f5f5 !default;\n$well-border:                 darken($well-bg, 7%) !default;\n\n\n//== Badges\n//\n//##\n\n$badge-color:                 #fff !default;\n//** Linked badge text color on hover\n$badge-link-hover-color:      #fff !default;\n$badge-bg:                    $gray-light !default;\n\n//** Badge text color in active nav link\n$badge-active-color:          $link-color !default;\n//** Badge background color in active nav link\n$badge-active-bg:             #fff !default;\n\n$badge-font-weight:           bold !default;\n$badge-line-height:           1 !default;\n$badge-border-radius:         10px !default;\n\n\n//== Breadcrumbs\n//\n//##\n\n$breadcrumb-padding-vertical:   2em;\n$breadcrumb-padding-horizontal: 0;\n//** Breadcrumb background color\n$breadcrumb-bg:                 #fff !default;\n//** Breadcrumb text color\n$breadcrumb-color:              #4a4a4a;\n//** Text color of current page in the breadcrumb\n$breadcrumb-active-color:       $gray-light !default;\n//** Textual separator for between breadcrumb elements\n$breadcrumb-separator:          \"/\" !default;\n\n\n//== Carousel\n//\n//##\n\n$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;\n\n$carousel-control-color:                      #fff !default;\n$carousel-control-width:                      15% !default;\n$carousel-control-opacity:                    .5 !default;\n$carousel-control-font-size:                  20px !default;\n\n$carousel-indicator-active-bg:                #fff !default;\n$carousel-indicator-border-color:             #fff !default;\n\n$carousel-caption-color:                      #fff !default;\n\n\n//== Close\n//\n//##\n\n$close-font-weight:           bold !default;\n$close-color:                 #000 !default;\n$close-text-shadow:           0 1px 0 #fff !default;\n\n\n//== Code\n//\n//##\n\n$code-color:                  #c7254e !default;\n$code-bg:                     #f9f2f4 !default;\n\n$kbd-color:                   #fff !default;\n$kbd-bg:                      #333 !default;\n\n$pre-bg:                      #f5f5f5 !default;\n$pre-color:                   $gray-dark !default;\n$pre-border-color:            #ccc !default;\n$pre-scrollable-max-height:   340px !default;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n$component-offset-horizontal: 180px !default;\n//** Text muted color\n$text-muted:                  $gray-light !default;\n//** Abbreviations and acronyms border color\n$abbr-border-color:           $gray-light !default;\n//** Headings small color\n$headings-small-color:        $gray-light !default;\n//** Blockquote small color\n$blockquote-small-color:      $gray-light !default;\n//** Blockquote font size\n$blockquote-font-size:        ($font-size-base * 1.25) !default;\n//** Blockquote border color\n$blockquote-border-color:     $gray-lighter !default;\n//** Page header border color\n$page-header-border-color:    $gray-lighter !default;\n//** Width of horizontal description list titles\n$dl-horizontal-offset:        $component-offset-horizontal !default;\n//** Point at which .dl-horizontal becomes horizontal\n$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;\n//** Horizontal line color.\n$hr-border:                   $gray-lighter !default;\n","/*\r\n * Consolidating image references\r\n * to a singular location\r\n *\r\n * minimizes number of calls sent to reference images\r\n */\r\n\r\n// sprite_base & sprite_base2x\r\n.title-logo,\r\n.layout-footer > .layout-container {\r\n  background: url(../img/sprite_base.png) no-repeat transparent;\r\n\r\n  @media screen and (-webkit-min-device-pixel-ratio:2) {\r\n    background-image: url(../img/sprite_base2x.png);\r\n    background-size: 500px 120px;\r\n  }\r\n}\r\n\r\n// sprite_social\r\n.social-list li {\r\n  background: url(../img/sprite_social.png) no-repeat transparent;\r\n}\r\n\r\n// sprite_icon\r\n.msg h4,\r\n.icon{\r\n  background: url(../img/sprite_icon.png) no-repeat transparent;\r\n}\r\n\r\n// icon_widget\r\n.drawer-toggle a, .drawer h2 a,\r\n.flex-pauseplay a {\r\n  background: url(../img/sprite_icon_widget.svg) no-repeat transparent ;\r\n  background-size: 16px 300px;\r\n}\r\n\r\n// icon_loading & icon_loading_inline\r\ndiv.loading {\r\n  background: url(../img/icon_loading.gif) no-repeat transparent;\r\n}\r\nspan.loading {\r\n  background: url(../img/icon_loading_inline.gif) no-repeat transparent;\r\n}\r\n\r\n// asterisk\r\n.icon.asterisk,\r\n.field .required,\r\n.field_top .required,\r\n.field_left .required {\r\n  background: url(../img/asterisk.png) no-repeat transparent;\r\n}\r\n","/********************* VARIABLES & MIXINS */\n/* BREAKPOINTS */\n/* COLORS */\n/* LAYOUT VALUES */\n/* FONTS */\n/* MIXINS */\n/**/\n/*$container-large-desktop:      (1140px + $grid-gutter-width) !default;*/\n/********************* GOOGLE FONT */\n@import url(\"https://fonts.googleapis.com/css?family=Roboto\");\n/********************* BASE */\n/*\n * Consolidating image references\n * to a singular location\n *\n * minimizes number of calls sent to reference images\n */\n.title-logo,\n.layout-footer > .layout-container {\n  background: url(img/sprite_base.png) no-repeat transparent; }\n  @media screen and (-webkit-min-device-pixel-ratio: 2) {\n    .title-logo,\n    .layout-footer > .layout-container {\n      background-image: url(img/sprite_base2x.png);\n      background-size: 500px 120px; } }\n\n.social-list li {\n  background: url(img/sprite_social.png) no-repeat transparent; }\n\n.msg h4,\n.icon {\n  background: url(img/sprite_icon.png) no-repeat transparent; }\n\n.drawer-toggle a, .drawer h2 a,\n.flex-pauseplay a {\n  background: url(img/sprite_icon_widget.svg) no-repeat transparent;\n  background-size: 16px 300px; }\n\ndiv.loading {\n  background: url(img/icon_loading.gif) no-repeat transparent; }\n\nspan.loading {\n  background: url(img/icon_loading_inline.gif) no-repeat transparent; }\n\n.icon.asterisk,\n.field .required,\n.field_top .required,\n.field_left .required {\n  background: url(img/asterisk.png) no-repeat transparent; }\n\n/* ***********************************************\n * Layout\n *\n * Components:\n *  - base layout\n *  - header\n *  - footer\n *  - nav\n *  - more(?)\n *\n * ***************/\n/* ***********************************************\n * BASE\n * ***************/\nhtml, body {\n  background: #fff;\n  overflow-x: hidden;\n  color: #333;\n  font: normal normal normal 16px/1.7 'Roboto', sans-serif; }\n\n/* container will have media queries for sizing*/\n.layout-container {\n  max-width: 1200px;\n  width: 98%;\n  margin: 0px auto;\n  overflow: hidden; }\n  @media only screen and (max-width: 768px) {\n    .layout-container {\n      width: 94%; } }\n  @media only screen and (max-width: 1200px) {\n    .layout-container {\n      max-width: 960px; } }\n\n.layout-navbar .layout-container {\n  overflow: visible; }\n\n.layout-header {\n  /* to incorporate new navbar button*/\n  display: block;\n  width: 100%;\n  background-color: #2b92b9;\n  /*\n   @media only screen and (min-width: $desktop-small + 1) {\n     height: 78px;\n   }*/ }\n  @media only screen and (min-width: 320px) and (max-width: 768px) {\n    .layout-header {\n      height: 105px; } }\n\n.layout-header, .isLoggedIn {\n  height: 100%; }\n\n.layout-login {\n  width: 100%;\n  background: #0B4A67;\n  overflow: hidden; }\n\n.login-content {\n  color: #fff;\n  font-size: 85%;\n  padding: .4em 0;\n  float: right; }\n  .login-content a {\n    color: #fff;\n    font-weight: 700;\n    text-transform: uppercase; }\n\n.layout-title {\n  font-family: 'Roboto', sans-serif;\n  box-sizing: border-box;\n  height: 92px;\n  width: 100%;\n  background: #fff;\n  padding: 1.5em 0; }\n  @media only screen and (max-width: 360px) {\n    .layout-title {\n      padding: 0.5em 0; } }\n  @media only screen and (max-width: 768px) {\n    .layout-title {\n      padding: 1em 0;\n      height: 115px; } }\n\n.layout-navbar {\n  min-height: 50px;\n  width: 100%;\n  background-color: #006A96;\n  border: 0;\n  border-bottom: 1px solid #006A96;\n  margin-bottom: 0;\n  z-index: 100; }\n  .layout-navbar .layout-container {\n    overflow: visible; }\n\n.layout-main {\n  width: 100%; }\n\n.layout-footer {\n  width: 100%;\n  color: #fff;\n  font-size: 90%;\n  border-top: 1px solid #ccc;\n  padding: 1em 0;\n  line-height: 1.5; }\n  .layout-footer > .layout-container {\n    background-position: right -74px; }\n    @media only screen and (max-width: 640px) {\n      .layout-footer > .layout-container {\n        background: none; } }\n\nh1, h2, h3, h4, h5, h6 {\n  color: #333;\n  font-weight: 400;\n  line-height: 1.1;\n  margin: 0 0 .25em; }\n\nh1 {\n  color: #006A96;\n  letter-spacing: .5px; }\n\n.h2, h2 {\n  font-size: 28px; }\n\nhr {\n  background-color: #ccc;\n  color: #ccc;\n  height: 1px; }\n\na {\n  color: #016691; }\n\n/* ***********************************************\n * HEADER\n * **************/\n/* ***********************************************\n* NAV\n* **************/\nnav .container {\n  padding: 0; }\n\n.navbar-list {\n  list-style: none;\n  font-size: 16px;\n  padding: 9px 0 0 0;\n  margin: 0; }\n\n.navbar .caret {\n  margin-left: 7px; }\n\n.layout-navbar .navbar-list > li {\n  float: left; }\n  .layout-navbar .navbar-list > li > a {\n    display: block;\n    color: #fff;\n    background-color: #006A96;\n    padding: 9px 15px;\n    text-decoration: none;\n    line-height: 1.3; }\n  .layout-navbar .navbar-list > li.active > a {\n    border-bottom: #ffcd00 solid 3px; }\n\n.navbar {\n  margin-bottom: 0; }\n\n.navbar-default {\n  background-color: #006a96;\n  border-bottom: none; }\n\n.navbar-default .navbar-nav > li > a {\n  color: #fff; }\n\n.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {\n  background-color: #004663;\n  color: #fff; }\n\n.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {\n  background-color: #004663;\n  color: #fff; }\n\n.dropdown-menu {\n  background-color: #004663; }\n\n.dropdown-menu > li > a {\n  color: #fff; }\n\n.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {\n  background-color: #004663;\n  color: #fff; }\n\n.navbar-toggle {\n  background-color: #006A96;\n  float: left;\n  margin-left: 15px; }\n\n.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {\n  background-color: #004663; }\n\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #fff; }\n\n#search {\n  position: absolute !important;\n  width: 385px; }\n\n.navmenu-default .navmenu-nav > .active > a, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a, .navmenu-default .navmenu-nav > .active > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover, .navmenu-default .navmenu-nav > .active > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus {\n  color: #fff;\n  background-color: #004663; }\n\n.navmenu-default .navmenu-nav > li > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover, .navmenu-default .navmenu-nav > li > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus {\n  color: #fff;\n  background-color: #006a96; }\n\n.navmenu-nav {\n  padding-bottom: 0; }\n\n.navmenu-nav > li {\n  border-bottom: 1px solid #ccc; }\n\n.navmenu-default .navmenu-nav > li > a {\n  color: #333; }\n\n.open .navmenu-nav > li > a {\n  padding: 10px 20px 10px 30px;\n  color: #006a96; }\n  .open .navmenu-nav > li > a:hover {\n    color: #333;\n    background-color: transparent;\n    text-decoration: underline; }\n\nli.open {\n  border-bottom: none; }\n\n/* ***********************************************\n* MAIN\n* **************/\n.main-section {\n  line-height: 1.5;\n  padding: 0 0 1em 0;\n  /* space for smaller viewports */\n  margin-bottom: 1em; }\n  @media only screen and (max-width: 768px) {\n    .main-section {\n      width: 100%;\n      padding: 0 0 1em; } }\n\n.main-section-content {\n  position: relative; }\n\n@media only screen and (max-width: 975px) {\n  .main-section-content img {\n    max-width: 100% !important;\n    height: auto !important; } }\n\n.main-section-supplement {\n  background-color: #F2F5F7;\n  border: solid 1px #C8CFD3;\n  padding: 1em;\n  margin-bottom: 1em; }\n\n.main-section-supplement h3 {\n  font-size: 115%;\n  color: #738AA3;\n  text-shadow: 0 1px 1px #FFF; }\n\n/* ***********************************************\n * FOOTER\n * **************/\nfooter {\n  background-color: #006A96; }\n\n.footer-links {\n  list-style: none;\n  margin: .5em 0 0;\n  padding: 0; }\n  .footer-links > li {\n    display: inline;\n    margin-left: 0;\n    margin-right: .5em;\n    padding-right: .75em; }\n    .footer-links > li a {\n      color: #fff;\n      text-decoration: underline; }\n  .footer-links > li:first-child {\n    border-right: 1px solid #fff; }\n\n.footer .row {\n  padding: 1.5em .5em;\n  color: #fff;\n  font-size: .9em; }\n\n.footer-logo {\n  width: 158px;\n  height: 30px;\n  float: right; }\n  @media only screen and (max-width: 768px) {\n    .footer-logo {\n      float: none;\n      margin-top: 15px; } }\n\n/* ***********************************************\n * Modules\n *\n * Components:\n *  - breadcrumbs\n *  - search\n *  - title\n *  - buttons\n *  - input\n *  - more(?)\n *\n * ***************/\n/* ***********************************************\n * BREADCRUMBS\n * ***************/\n.breadcrumbs-list {\n  background-color: #fff;\n  margin-bottom: 0; }\n  .breadcrumbs-list > li {\n    color: #666;\n    display: inline;\n    font-size: 80%; }\n\n/* ***********************************************\n * NAVBAR\n * ***************/\n/* ***********************************************\n * SEARCH\n * ***************/\n.search {\n  float: right;\n  position: relative;\n  margin-top: 4px; }\n\n.search-toggle {\n  color: #fff !important;\n  max-height: 38px;\n  background-color: transparent !important;\n  border-radius: 0;\n  -webkit-border-radius: 0;\n  border: none;\n  border-width: 0 1px;\n  outline: 0;\n  padding: 11px; }\n  .search-toggle:hover, .search-toggle.search-is-open {\n    color: #d9d9d9;\n    background-color: transparent;\n    border-color: none;\n    text-decoration: none; }\n  .search-toggle span.caret {\n    margin-left: 6px; }\n\n.search-content {\n  position: absolute;\n  right: 0;\n  width: 385px;\n  padding: 10px;\n  background-color: #00587d;\n  border: none;\n  border-width: 0 1px 2px;\n  display: none; }\n  @media only screen and (max-width: 960px) {\n    .search-content {\n      position: relative;\n      width: 100%; } }\n\n.search-content.search-is-open {\n  display: block;\n  z-index: 999; }\n\n.search-content .search-scope {\n  max-width: 30%;\n  font-size: 11px;\n  padding: 4px 2px 4px 0;\n  float: left;\n  height: 27px; }\n\n.search-content .input-group {\n  width: 250px;\n  float: right; }\n\n.search-content .form-control {\n  float: right;\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  height: 26px; }\n\n/* ***********************************************\n * TITLE\n * ***************/\n.title-header {\n  float: left;\n  color: #000;\n  font-size: 1.35rem;\n  letter-spacing: 1px;\n  text-decoration: none;\n  text-transform: uppercase; }\n  .title-header.title-header-short {\n    display: none; }\n    @media only screen and (max-width: 480px) {\n      .title-header.title-header-short {\n        display: block;\n        margin-top: 2.25em; } }\n  .title-header:hover, .title-header:focus {\n    color: #666666;\n    text-decoration: none; }\n  @media only screen and (max-width: 480px) {\n    .title-header {\n      display: none;\n      margin-top: 2.25em; } }\n  @media only screen and (max-width: 360px) {\n    .title-header {\n      font-size: 20px;\n      margin-top: 2em; } }\n\n.title-header-large {\n  margin-top: 5px; }\n  @media only screen and (min-width: 480px) and (max-width: 768px) {\n    .title-header-large {\n      display: block;\n      margin-top: 2.5em; } }\n\n.title-logo {\n  float: right;\n  width: 229px;\n  height: 65px;\n  overflow: hidden;\n  text-indent: -999em;\n  background-position: 0 -3px; }\n  @media only screen and (max-width: 480px) {\n    .title-logo {\n      background-position: -239px -2px;\n      height: 45px;\n      width: 166px; } }\n  @media only screen and (max-width: 768px) {\n    .title-logo {\n      display: block;\n      position: absolute; } }\n\n/* ***********************************************\n * MAIN CONTENT SIDE NAV\n * ***************/\n.sidebar-section {\n  padding: 0 4em 1em 0; }\n  @media (max-width: 960px) {\n    .sidebar-section {\n      padding: 0 0 3em 0;\n      width: 100%; } }\n\n#site-logo img {\n  max-width: 100%;\n  height: auto;\n  margin-top: 0;\n  margin-bottom: 15px; }\n  @media (max-width: 768px) {\n    #site-logo img {\n      display: none; } }\n\n.main-content-nav {\n  background: #eee;\n  border: solid 1px #D8D7D7;\n  padding: 1em;\n  margin-bottom: 1em; }\n  @media only screen and (max-width: 768px) {\n    .main-content-nav {\n      margin-top: 0em; } }\n  .main-content-nav > h2 {\n    color: #333;\n    font-size: 140%;\n    margin: 0 0 .4em;\n    text-transform: capitalize;\n    font-weight: normal; }\n  .main-content-nav > ul {\n    /* for borders to line up properly */\n    margin: 0 -1em -1em;\n    /* override navbar-list 14px for main navbar*/\n    font-size: 1em; }\n    .main-content-nav > ul > li.active {\n      color: #004663; }\n  .main-content-nav > ul li {\n    border-top: solid 1px #D8D7D7;\n    list-style: none; }\n    .main-content-nav > ul li a {\n      display: block;\n      padding: 1em;\n      color: #333; }\n      .main-content-nav > ul li a:hover {\n        background-color: #006a96;\n        color: #fff; }\n      .main-content-nav > ul li a:hover, .main-content-nav > ul li a:link, .main-content-nav > ul li a:active {\n        text-decoration: none; }\n    .main-content-nav > ul li.active {\n      background-color: #fff;\n      padding: 1em 0 1em 1em;\n      font-weight: bold; }\n      .main-content-nav > ul li.active > ul li a {\n        color: #006a96;\n        padding-left: 0 !important; }\n      .main-content-nav > ul li.active > a {\n        color: #006a96; }\n      .main-content-nav > ul li.active a:hover {\n        text-decoration: underline;\n        color: #484949;\n        background-color: transparent; }\n    .main-content-nav > ul li ul {\n      margin: .4em 0 -.4em 1em;\n      padding: 0; }\n    .main-content-nav > ul li li {\n      font-size: 85%; }\n\n/* ***********************************************\n * BUTTONS\n * ***************/\n/* ***********************************************\n * INPUT\n * ***************/\n.form-control {\n  -webkit-border-radius: 0;\n  border-radius: 0;\n  padding: 0.5em; }\n\n.subhead {\n  font-size: 120%; }\n\n.layout-header.open,\n.layout-main.open,\n.layout-footer.open {\n  -webkit-transform: translate(42%, 0);\n  transform: translate(42%, 0); }\n  @media only screen and (max-width: 640px) {\n    .layout-header.open,\n    .layout-main.open,\n    .layout-footer.open {\n      -webkit-transform: translate(83%, 0);\n      transform: translate(83%, 0); } }\n\n.layout-header button.btn-nav {\n  position: relative;\n  float: left;\n  height: 44px;\n  color: #fff;\n  font-size: 24px;\n  background-image: none;\n  background-color: #006A96;\n  border-radius: 1px;\n  border: 1px solid #006A96;\n  padding: 9px 10px;\n  margin-right: 10px; }\n  @media only screen and (max-width: 360px) {\n    .layout-header button.btn-nav {\n      font-size: 20px; } }\n  @media only screen and (max-width: 960px) {\n    .layout-header button.btn-nav {\n      display: block; } }\n\n/* button iconbar styling */\nbutton.btn-nav .icon-bar {\n  display: block;\n  width: 30px;\n  height: 2px;\n  background-color: #fff;\n  border-radius: 1px;\n  margin-top: 0.25em; }\n  @media only screen and (max-width: 360px) {\n    button.btn-nav .icon-bar {\n      width: 22px; } }\n\n.btn-nav .icon-bar:nth-child(2),\n.btn-nav .icon-bar:nth-child(3),\n.btn-nav .icon-bar:nth-child(4) {\n  transition: all .2s ease;\n  transition-delay: .25s;\n  opacity: 1; }\n\n.btn-nav .icon-bar:nth-child(2) {\n  margin: 0; }\n\n/* button transition code */\n.btn-nav .icon-bar:nth-child(2),\n.btn-nav .icon-bar:nth-child(4) {\n  -webkit-transition: all .2s ease;\n  -o-transition: all .2s ease;\n  transition: all .2s ease;\n  -webkit-transition-delay: .25s;\n  -o-transition-delay: .25s;\n  transition-delay: .25s; }\n\n.layout-header.open .btn-nav .icon-bar:nth-child(2) {\n  -webkit-transform: translate3d(0, 8px, 0) rotateZ(45deg);\n  -ms-transform: translate3d(0, 8px, 0) rotateZ(45deg);\n  -o-transform: translate3d(0, 8px, 0) rotateZ(45deg);\n  transform: translate3d(0, 8px, 0) rotateZ(45deg); }\n\n.layout-header.open .btn-nav .icon-bar:nth-child(3) {\n  opacity: 0; }\n\n.layout-header.open .btn-nav .icon-bar:nth-child(4) {\n  -webkit-transform: translate3d(0, -8px, 0) rotateZ(-45deg);\n  -ms-transform: translate3d(0, -8px, 0) rotateZ(-45deg);\n  -o-transform: translate3d(0, -8px, 0) rotateZ(-45deg);\n  transform: translate3d(0, -8px, 0) rotateZ(-45deg); }\n\n/* end button transition code */\nbutton:hover {\n  border-color: transparent;\n  background-color: rgba(254, 254, 254, 0.4); }\n\nbutton:focus {\n  border-color: transparent;\n  outline: 0;\n  background-color: rgba(254, 254, 254, 0.4); }\n\nbutton:active {\n  border-color: transparent;\n  background-color: rgba(254, 254, 254, 0.6); }\n\n.layout-navbar.navbar-is-opened .navbar-list > li {\n  float: none; }\n\n.navdrawer-container.navbar-is-opened .layout-container {\n  width: 100%; }\n\n.navdrawer-container.navbar-is-opened .navbar-list > li.active {\n  background: #fff; }\n\n.navdrawer-container.navbar-is-opened .navbar-list > li > a {\n  border: none;\n  border-bottom: 1px solid #ccc;\n  padding: 10px 10px 10px 20px;\n  background-color: #006a96 !important;\n  border: none !important; }\n  .navdrawer-container.navbar-is-opened .navbar-list > li > a:hover {\n    background-color: #004663 !important; }\n  @media only screen and (max-width: 960px) {\n    .navdrawer-container.navbar-is-opened .navbar-list > li > a {\n      border: 0;\n      font-weight: bold;\n      background: #006A96;\n      border-bottom: 1px solid #ccc; } }\n\n/* Search bar integration */\n.navdrawer-container.navbar-is-opened button.search-toggle {\n  display: none; }\n\n.navdrawer-container.navbar-is-opened .search {\n  width: 100%;\n  height: 100%;\n  float: none; }\n\n.navdrawer-container.navbar-is-opened .search-content {\n  display: block;\n  height: 43px;\n  padding: 7px;\n  background-color: #006A96; }\n  .navdrawer-container.navbar-is-opened .search-content .search-scope {\n    max-width: 30%;\n    font-size: 11px;\n    padding: 4px 2px 4px 0;\n    float: left;\n    height: 27px; }\n  .navdrawer-container.navbar-is-opened .search-content form > .input-group {\n    width: 55%;\n    float: right; }\n    .navdrawer-container.navbar-is-opened .search-content form > .input-group input {\n      height: 27px; }\n\n.navdrawer-container ul {\n  list-style-type: none; }\n\n/* sub list stylings */\n.navdrawer-container .navbar-subnav:hover > a {\n  border-bottom: solid 3px #9FB3BF; }\n\n.navbar-subnav .navbar-sublist li:hover > a {\n  background-color: #006A96; }\n\n.navdrawer-container ul.navbar-sublist {\n  display: none;\n  position: absolute;\n  font-size: 14px;\n  padding: 0;\n  margin-left: 0;\n  -webkit-box-shadow: 0 3px 5px 0 rgba(50, 50, 50, 0.2);\n  box-shadow: 0 3px 5px 0 rgba(50, 50, 50, 0.2); }\n  @media only screen and (max-width: 960px) {\n    .navdrawer-container ul.navbar-sublist {\n      display: block;\n      position: relative;\n      border-left: 0;\n      border-top: 0;\n      border-bottom: 1px solid #E2E2E2;\n      box-shadow: none; } }\n\n.navdrawer-container .subnav-hover ul.navbar-sublist {\n  display: block;\n  z-index: 3; }\n  @media only screen and (max-width: 960px) {\n    .navdrawer-container .subnav-hover ul.navbar-sublist {\n      display: block;\n      position: relative;\n      border: 0;\n      border-bottom: 1px solid #ccc;\n      -webkit-box-shadow: none;\n      box-shadow: none; }\n      .navdrawer-container .subnav-hover ul.navbar-sublist a {\n        border: 0;\n        padding-left: 3em; } }\n\n.navdrawer-container .navbar-sublist.subnav-is-opened {\n  display: block; }\n\n.navdrawer-container.navbar-is-opened .navbar-sublist.subnav-is-opened a {\n  border: 0;\n  padding-left: 3em; }\n\n.navdrawer-container .navbar-sublist a {\n  display: block;\n  background: #00587d;\n  color: #fff;\n  padding: 9px 15px 8px;\n  text-decoration: none; }\n\n.layout-header,\n.layout-main,\n.layout-footer {\n  -webkit-transition: -webkit-transform .3s ease-in-out;\n  transition: transform .3s ease-in-out; }\n\nnav.navdrawer-container.navbar-is-opened {\n  position: fixed;\n  top: 0;\n  height: 100%;\n  opacity: 1;\n  border-right: 1px solid #DADADA;\n  -webkit-transition: opacity 0.3s ease-in-out;\n  transition: opacity 0.3s ease-in-out;\n  -webkit-transform: translate(0, 0);\n  transform: translate(0, 0);\n  transition-delay: 0.15s;\n  pointer-events: auto;\n  z-index: 2; }\n\n.navbar-is-opened {\n  display: block; }\n\n.navbar-is-opened a:hover {\n  text-decoration: underline !important; }\n\n@media only screen and (max-width: 640px) {\n  .navdrawer-container.navbar-is-opened {\n    width: 83%; }\n    .navdrawer-container.navbar-is-opened .search {\n      max-width: none; } }\n@media screen and (min-width: 320px) and (max-width: 640px) {\n  .navdrawer-container.navbar-is-opened .search-content form > .input-group {\n    width: 60%; } }\n\n@media only screen and (max-width: 768px) {\n  .layout-header .btn-nav {\n    margin-top: 1.7em; } }\n@media only screen and (max-width: 960px) {\n  .navdrawer-container .navbar-sublist a {\n    border: none;\n    margin: 0;\n    padding-left: 2.5em !important; } }\n@media only screen and (min-width: 960px) {\n  .navdrawer-container {\n    display: block;\n    width: 100%;\n    opacity: 1; }\n\n  button.btn-nav {\n    display: none; } }\n@media only screen and (max-width: 960px) {\n  .navdrawer-container {\n    position: fixed;\n    width: 42%;\n    z-index: -1;\n    opacity: 0; }\n\n  .navdrawer-container .navbar-subnav .navbar-sublist.subnav-is-opened {\n    display: block;\n    position: relative;\n    border: 0;\n    border-bottom: 1px solid #ccc;\n    -webkit-box-shadow: none;\n    box-shadow: none; } }\n.collapse-navbar .navdrawer-container {\n  position: fixed;\n  width: 42%;\n  z-index: -1;\n  opacity: 0; }\n  .collapse-navbar .navdrawer-container .subnav-hover ul.navbar-sublist {\n    display: block;\n    position: relative;\n    border: 0;\n    border-bottom: 1px solid #ccc;\n    -webkit-box-shadow: none;\n    box-shadow: none; }\n    .collapse-navbar .navdrawer-container .subnav-hover ul.navbar-sublist a {\n      border: 0;\n      padding-left: 3em; }\n\n.collapse-navbar .btn-nav {\n  display: block; }\n\n.collapse-navbar .search-content {\n  position: relative;\n  width: 100%; }\n\n/* Blink & TL Styles */\n.blink-nav-button {\n  background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/img/blink_nav.png) 0 6px no-repeat !important;\n  min-width: 78px; }\n  .blink-nav-button a {\n    color: transparent !important;\n    background-color: transparent !important; }\n\n.tlink-nav-button {\n  background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/img/current_students_nav.png) 0 6px no-repeat !important;\n  min-width: 103px; }\n  .tlink-nav-button a {\n    color: transparent !important;\n    background-color: transparent !important; }\n\n/**********************************************************************\n * Basic CSS styling\n */\n.clearfix {\n  overflow: auto; }\n\n/* --------------------------------------------------------------------\n * table\n */\ntable.styled {\n  margin-bottom: 1em; }\n\ntable.styled th, table.styled td {\n  padding: .25em 1em; }\n\ntable.styled th {\n  background-color: #eee;\n  font-weight: bold; }\n\ntable.styled th, table.styled td {\n  border: 1px solid #ccc; }\n\ntable.styled tbody tr.even {\n  background-color: #eff; }\n\n/* --------------------------------------------------------------------\n * _images\n */\nimg.left {\n  float: left;\n  padding: 0 1em 1em 0;\n  width: auto; }\n\nimg.right {\n  float: right;\n  padding: 0 0 1em 1em;\n  width: auto; }\n\n/* --------------------------------------------------------------------\n * * - 360px\n */\n@media only screen and (max-width: 360px) {\n  img.left,\n  img.right {\n    float: none;\n    padding: 1em 0; } }\n/**********************************************************************\n* Messages\n*/\n.msg {\n  -moz-border-radius: .5em;\n  -webkit-border-radius: .5em;\n  border-radius: .5em;\n  padding: .5em 1em;\n  margin-bottom: 1em; }\n\n.msg h4 {\n  padding-left: 20px;\n  text-shadow: none; }\n\n.msg.info {\n  border: 1px solid #aaa;\n  background-color: #eee; }\n\n.msg.info h4 {\n  background-position: 0 -150px; }\n\n.msg.alert {\n  border: 1px solid #fa0;\n  background-color: #ffe; }\n\n.msg.alert h4 {\n  background-position: 0 -249px;\n  color: #D56A03; }\n\n.msg.confirm {\n  border: 1px solid #393;\n  background-color: #efe; }\n\n.msg.confirm h4 {\n  color: #393;\n  background-position: 0 -200px; }\n\n.msg.error {\n  border: 1px solid #c00;\n  background-color: #fee; }\n\n.msg.error h4 {\n  color: #c00;\n  background-position: 0 -299px; }\n\n/**********************************************************************\n* Button\n*/\n.button {\n  border: none;\n  color: #333;\n  display: inline-block;\n  outline: none;\n  cursor: pointer;\n  text-align: center;\n  text-decoration: none;\n  text-shadow: rgba(255, 255, 255, 0.5) 0 1px 1px;\n  margin-right: .5em;\n  padding: .25em 1em;\n  -moz-border-radius: .25em;\n  -webkit-border-radius: .25em;\n  border-radius: .25em;\n  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); }\n\n.button:hover {\n  text-decoration: none; }\n\n.button:active {\n  position: relative;\n  top: 1px; }\n\n.button:disabled {\n  color: #999;\n  cursor: default; }\n\n/*---------------------------------------------------------------------\n * primary button\n */\n.primary {\n  background: #fc0;\n  background: -moz-linear-gradient(top, #fc0, #fa0);\n  background: -webkit-gradient(linear, left top, left bottom, from(#fc0), to(#fa0));\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc00',endColorstr='#ffaa00'); }\n\n.primary:hover {\n  background: #f90; }\n\n.primary:disabled {\n  background: #fd0;\n  background: -moz-linear-gradient(top, #fd0, #fc0);\n  background: -webkit-gradient(linear, left top, left bottom, from(#fd0), to(#fc0));\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd00',endColorstr='#ffcc00'); }\n\n/*---------------------------------------------------------------------\n * secondary button\n */\n.secondary {\n  background: #eee;\n  background: -moz-linear-gradient(top, #eee, #ddd);\n  background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd));\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee',endColorstr='#dddddd'); }\n\n.secondary:hover {\n  background: #ccc; }\n\n.secondary:disabled {\n  background: #fff;\n  background: -moz-linear-gradient(top, #fff, #eee);\n  background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#eeeeee'); }\n\n/*---------------------------------------------------------------------\n * link button\n */\na.button {\n  color: #333; }\n\n/* --------------------------------------------------------------------\n * * - 480px\n */\n@media only screen and (max-width: 480px) {\n  .button {\n    padding: .5em 1em; } }\n/**********************************************************************\n* Icon\n*/\n.icon {\n  padding-left: 1.5em; }\n\n/* ie 7 only hack */\n*:first-child + html .icon {\n  display: inline-block; }\n\n.icon.newwin {\n  background-position: 0 -50px; }\n\n.icon.info {\n  background-position: 0 -150px; }\n\n.icon.confirm {\n  background-position: 0 -200px; }\n\n.icon.alert {\n  background-position: 0 -250px; }\n\n.icon.error {\n  background-position: 0 -300px; }\n\n.icon.invalid {\n  background-position: 0 -300px; }\n\n.icon.cal {\n  background-position: 0 -350px; }\n\n.icon.check {\n  background-position: 0 -400px; }\n\n.icon.check_disabled {\n  background-position: 0 -450px; }\n\n.icon.close {\n  background-position: 0 -500px; }\n\n.icon.close_disabled {\n  background-position: 0 -550px; }\n\n.icon.disable {\n  background-position: 0 -600px; }\n\n.icon.disable_disabled {\n  background-position: 0 -650px; }\n\n.icon.doc {\n  background-position: 0 -700px; }\n\n.icon.doc_disabled {\n  background-position: 0 -750px; }\n\n.icon.gear {\n  background-position: 0 -900px; }\n\n.icon.mail {\n  background-position: 0 -950px; }\n\n.icon.minus {\n  background-position: 0 -1000px; }\n\n.icon.minus_disabled {\n  background-position: 0 -1050px; }\n\n.icon.pencil {\n  background-position: 0 -1100px; }\n\n.icon.pencil_disabled {\n  background-position: 0 -1150px; }\n\n.icon.plus {\n  background-position: 0 -1200px; }\n\n.icon.plus_disabled {\n  background-position: 0 -1250px; }\n\n.icon.print {\n  background-position: 0 -1300px; }\n\n.icon.search {\n  background-position: 0 -1400px; }\n\n.icon.search_disabled {\n  background-position: 0 -1450px; }\n\n.icon.submit {\n  background-position: 0 -1500px; }\n\n.icon.submit_disabled {\n  background-position: 0 -1550px; }\n\n.icon.trash {\n  background-position: 0 -1600px; }\n\n.icon.trash_disabled {\n  background-position: 0 -1650px; }\n\n.icon.undo {\n  background-position: 0 -1700px; }\n\n.icon.arrow_right {\n  background-position: 0 -1750px; }\n\n.icon.arrow_down {\n  background-position: 0 -1800px; }\n\n.icon.play {\n  background-position: 0 -1850px; }\n\n.icon.stop {\n  background-position: 0 -1900px; }\n\n/* Social Media Icons */\n.social-list {\n  margin-left: 0;\n  padding-left: 0;\n  list-style: none; }\n\n.social-list li {\n  height: 33px;\n  margin: 0 0 10px 0;\n  padding: 0 40px;\n  cursor: pointer; }\n\n.social-list li.facebook {\n  background-position: 0 0; }\n\n.social-list li.twitter {\n  background-position: 0 -39px; }\n\n.social-list li.youtube {\n  background-position: 0 -80px; }\n\n.social-list li.linkedin {\n  background-position: 0 -121px; }\n\n.social-list li.googleplus {\n  background-position: 0 -160px; }\n\n.social-list li.instagram {\n  background-position: 0 -200px; }\n\n.social-list li.tumblr {\n  background-position: 0 -240px; }\n\n.social-list li.flickr {\n  background-position: 0 -280px; }\n\n.social-list li.vine {\n  background-position: 0 -320px; }\n\n.social-list li.pinterest {\n  background-position: 0 -360px; }\n\n.social-list li.blogger {\n  background-position: 0 -400px; }\n\n.social-list li.rss {\n  background-position: 0 -440px; }\n\n.social-list li.vimeo {\n  background-position: 0 -480px; }\n\n.social-list li.wordpress {\n  background-position: 0 -520px; }\n\n/**********************************************************************\n * Form Elements\n */\ninput[type=\"text\"], select, textarea {\n  border: 1px solid #aaa; }\n\n.form-control {\n  border-radius: 0;\n  padding: .5em;\n  /* to keep in line with other input paddings */ }\n\ninput[type=\"text\"], textarea {\n  padding: .5em; }\n\nselect.form-control {\n  padding: .5em .2em; }\n\nfieldset {\n  border: 1px solid #aaa;\n  padding: .5em;\n  border: 0; }\n\nlegend {\n  color: #333;\n  margin-left: 0;\n  padding: 0; }\n\ninput[type=radio], input[type=checkbox] {\n  margin-right: .25em; }\n\n/*---------------------------------------------------------------------\n * input group addon\n */\n/* white background to make it look less like an 'actionable' button */\n.input-group-addon {\n  background: #fff; }\n\n/* --------------------------------------------------------------------\n * form fields and font style\n */\ndiv.field, div.field_top, div.field_left, div.label {\n  clear: both;\n  padding-bottom: 1em; }\n\ndiv.label {\n  color: #000; }\n\n.field_top div.label {\n  padding-bottom: .25em; }\n\n.label, .input, .output {\n  display: block; }\n\n.label label {\n  font-weight: bold; }\n\n/* --------------------------------------------------------------------\n * form\n */\nform {\n  margin-bottom: 1em; }\n\n/* output */\nform .output {\n  font-weight: normal; }\n\n/* help text */\nform .help {\n  color: #999;\n  display: block;\n  font-style: italic;\n  font-size: 85%; }\n\n/* required field */\nform .help.icon.asterisk {\n  padding-bottom: 1em; }\n\n/* multi field */\n.multi {\n  margin-right: .5em; }\n\n.input.multi {\n  margin-right: 0;\n  padding-bottom: .5em; }\n\n/* --------------------------------------------------------------------\n * form invalid field\n */\nform input.invalid, form textarea.invalid {\n  border: 1px solid #c00; }\n\nform .invalid, form .inline_invalid {\n  color: #c00; }\n\nform .inline_invalid {\n  display: block; }\n\n/* hide from ie */\nhtml > body form .icon.invalid {\n  margin-left: .5em; }\n\n/* --------------------------------------------------------------------\n * form layout - default is left aligned\n */\n.field .label {\n  width: 10em;\n  float: left;\n  text-align: right;\n  padding-right: 1em; }\n\n.field .input, .field .output, .field select.input, .field textarea.input {\n  margin-left: 11em; }\n\n.field .required {\n  background-position: right 0; }\n\n.field_top .required,\n.field_left .required {\n  background-position: left 0;\n  padding-left: 1em; }\n\n/* top-aligned */\n.field_top .label {\n  padding-left: 1em; }\n\n.field_top .input, .field_top .output, .field_top select.input, .field_top textarea.input {\n  margin-left: 1em; }\n\n/* left-aligned */\n.field_left .label {\n  width: 10em;\n  float: left;\n  text-align: left;\n  padding-left: 1em; }\n\n.field_left .input, .field_left .output, .field_left select.input, .field_left textarea.input {\n  margin-left: 11.5em; }\n\n/* --------------------------------------------------------------------\n * * - 640px\n */\n@media only screen and (max-width: 640px) {\n  .field .label,\n  .field_left .label {\n    float: none;\n    text-align: left;\n    padding-left: 1em;\n    padding-bottom: .25em; }\n\n  .field .input, .field .output, .field select.input, .field textarea.input,\n  .field_left .input, .field_left .output, .field_left select.input, .field_left textarea.input {\n    margin-left: 1em; }\n\n  .field .required,\n  .field_left .required {\n    background-position: left 0;\n    padding-left: 1em; } }\n/* --------------------------------------------------------------------\n * * - 480px\n */\n@media only screen and (max-width: 480px) {\n  input[type=\"text\"], textarea {\n    padding: .5em .25em; } }\n/**********************************************************************\n* loading styling\n*/\ndiv.loading {\n  clear: both;\n  height: 32px;\n  text-indent: -9999px;\n  background-position: center; }\n\nspan.loading {\n  background-position: right;\n  padding-right: 20px; }\n\n/**********************************************************************\n * CSS Styling for the page nav aside\n */\ndiv.styled {\n  background: #F2F5F7;\n  border: 1px solid #C8CFD3;\n  margin-bottom: 1em;\n  padding: 1em; }\n  div.styled h2, div.styled h3, div.styled h4, div.styled h5, div.styled h6 {\n    color: #738AA3;\n    text-shadow: 0 1px 1px #FFFFFF; }\n  div.styled h2 {\n    font-size: 140%; }\n  div.styled h3 {\n    font-size: 115%; }\n\n#page_nav {\n  margin: 0 -1em -1em;\n  padding: 0; }\n  #page_nav li {\n    border-top: 1px solid #DBD7D7;\n    color: #06c;\n    list-style: none;\n    margin: 0;\n    padding: 0; }\n    #page_nav li.active, #page_nav li a {\n      color: #016691;\n      display: block;\n      padding: 1em 0 1em 1em; }\n    #page_nav li.active {\n      background-color: #fff;\n      color: #D56A03; }\n    #page_nav li.collapsed ul {\n      display: none; }\n    #page_nav li a:hover {\n      background-color: #fff;\n      text-decoration: none; }\n    #page_nav li li {\n      font-size: 85%; }\n      #page_nav li li a:hover {\n        text-decoration: underline; }\n  #page_nav ul {\n    margin: .4em 0 -.4em 1em;\n    padding: 0; }\n\n#page_nav_title {\n  margin-bottom: 0.7em; }\n\n/* CUSTOMIZE THE CAROUSEL\n-------------------------------------------------- */\n/* Carousel base class */\n.carousel {\n  margin-bottom: 60px; }\n  .carousel .container {\n    padding: 7% 0;\n    position: absolute;\n    top: 0;\n    left: 10%; }\n\n/* Since positioning the image, we need to help out the caption */\n.carousel-caption {\n  z-index: 10; }\n\n/* Declare heights because of positioning of img element */\n.carousel .item {\n  background-color: #777; }\n\n.carousel-inner > .item > img {\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: auto; }\n\n/* RESPONSIVE CSS\n-------------------------------------------------- */\n@media (min-width: 768px) {\n  /* Bump up size of carousel content */\n  .carousel-caption p {\n    margin-bottom: 20px;\n    font-size: 21px;\n    line-height: 1.4; }\n\n  .featurette-heading {\n    font-size: 50px; } }\n@media (min-width: 992px) {\n  .featurette-heading {\n    margin-top: 120px; } }\n/********************* VITRO MODULES */\n/* ***********************************************\n * Modules\n *\n * Components:\n *  - Global styles\n *  - Buttons & Links\n *  - Hero Landing Page\n *  - Text and CTA w/Full Height Image Left\n *  - News with Images\n *  - Callout Image Small Inset\n *  - Callout Content One\n *  - Callout Content Two\n *\n * ***************/\n/* Global styles , specific for new templates */\n.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6 {\n  line-height: 1.1;\n  margin: 0 0 .25em; }\n\n.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .jumbotron .h1, .jumbotron .h2, .jumbotron .h3, .jumbotron .h4, .jumbotron .h5, .jumbotron .h6 {\n  text-transform: uppercase;\n  font-weight: bold; }\n\n.jumbotron h1, .jumbotron .h1, .jumbotron h2, .jumbotron .h2, .jumbotron h3, .jumbotron .h3 {\n  margin-top: 23px;\n  margin-bottom: 11.5px; }\n\n.jumbotron .drawer-wrapper ul, .jumbotron .drawer-wrapper ol {\n  padding-left: 1em; }\n\n.jumbotron .drawer-wrapper ul li, .jumbotron .drawer-wrapper ol li {\n  padding-bottom: 10px; }\n\n.jumbotron a, .jumbotron a:hover {\n  text-decoration: none; }\n\n.detail-logo img {\n  margin-top: 35px;\n  margin-bottom: 15px;\n  width: 80%; }\n\n#site-logo {\n  margin-top: 0; }\n  @media (min-width: 768px) {\n    #site-logo {\n      margin-top: 0; } }\n\n@media (min-width: 768px) {\n  .jumbotron h2 {\n    font-size: 2.33em; }\n\n  .jumbotron h4 {\n    font-size: 1.22em; } }\n/* Buttons & links */\n.jumbotron .btn-default {\n  background-color: #FFCD00;\n  color: #484949;\n  font-family: inherit;\n  transition: all 0.3s;\n  border: 0;\n  border-radius: 0; }\n  .jumbotron .btn-default:hover {\n    background-color: #fff; }\n\n.jumbotron .btn-primary {\n  background-color: #006A96;\n  color: #fff;\n  font-family: inherit;\n  transition: all 0.3s;\n  border: 0;\n  border-radius: 0; }\n  .jumbotron .btn-primary:hover {\n    background-color: #004663; }\n\n.jumbotron .btn {\n  font-size: 15px;\n  text-transform: uppercase;\n  padding: 0.8em 1.5em;\n  min-width: 200px;\n  margin-bottom: 1em;\n  letter-spacing: 0.08em;\n  font-weight: normal; }\n\n.jumbotron .text-link {\n  text-transform: uppercase;\n  font-weight: bold;\n  border-bottom: 1px #006A96 solid;\n  letter-spacing: 0.08em; }\n\n/* Hero Landing Page */\n.jumbotron {\n  background-size: cover !important;\n  background-repeat: no-repeat;\n  background-position: center;\n  color: inherit;\n  padding: 0 !important; }\n\n.hm {\n  padding: 0 0 !important;\n  color: #fff !important;\n  margin: 0 !important; }\n\n.jumbotron-hero-lg {\n  background-image: url(\"../img/gps-hero.jpg\"); }\n\n.jumbotron .text-indent-h1 h1 {\n  text-transform: uppercase; }\n  @media (max-width: 768px) {\n    .jumbotron .text-indent-h1 h1 {\n      font-size: 2.5em; } }\n  @media (max-width: 480px) {\n    .jumbotron .text-indent-h1 h1 {\n      font-size: 2em; } }\n\n.jumbotron .text-indent-h1 p {\n  margin-left: 6.75em; }\n\n.jumbotron .text-indent-h1 a.btn {\n  margin-left: 7.2em; }\n\n.jumbotron .text-indent-h2 p {\n  margin-left: 3.6em; }\n\n.jumbotron .text-indent-h2 a.btn {\n  margin-left: 4.4em; }\n\n.jumbotron .text-indent-h1 p, .jumbotron .text-indent-h2 p {\n  width: 19em; }\n\n.jumbotron .text-indent h1 span {\n  margin-left: 1.65em; }\n\n.jumbotron-hero .text-indent h1, .jumbotron-hero .text-indent h2, .jumbotron-hero .text-indent h3, .jumbotron-image-bg .text-indent h1, .jumbotron-image-bg .text-indent h2, .jumbotron-image-bg .text-indent h3 {\n  text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.75); }\n\n.jumbotron-hero .text-indent p, .jumbotron-image-bg .text-indent p {\n  text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.75); }\n\n.jumbotron {\n  margin: 60px 0; }\n\n/* Text and CTA w/Full Height Image Left */\n.side-image-white {\n  background-color: #fff; }\n\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 16px; }\n\n/* News with Images */\n.jumbotron-news {\n  background: none !important; }\n\n.jumbotron-news h2 {\n  margin-bottom: 1em;\n  margin-top: 0;\n  text-transform: uppercase;\n  font-weight: bold; }\n\n.no-gutter {\n  padding-left: 0;\n  padding-right: 0; }\n\n.jumbotron .panel {\n  border-radius: 0 !important; }\n\n.panel-heading {\n  padding: 10px 30px; }\n\n.jumbotron-news .panel.panel-default {\n  border: 1px solid #f2f2f2;\n  background-color: #f5f5f5; }\n\n.jumbotron-news .panel.panel-default .panel-heading {\n  background-color: #f5f5f5;\n  border: none; }\n\n.panel-default > .panel-heading {\n  color: #333; }\n\n.jumbotron-news .panel .panel-news-date {\n  text-transform: uppercase;\n  color: #747678;\n  font-size: 0.85em;\n  margin-bottom: 0.25em;\n  margin-top: 1em; }\n\n.jumbotron-news .panel .panel-news-title {\n  text-transform: none;\n  margin-top: 0; }\n\n.jumbotron-news .panel.panel-default .panel-body {\n  padding-top: 0;\n  padding-right: 2em; }\n\n@media (min-width: 768px) {\n  .jumbotron-news .panel.panel-default .panel-heading {\n    min-height: 135px; } }\n/* Callout Image Small Inset */\n.jumbotron-callout-image-small-inset {\n  background-image: url(\"../img/callout-content-two-bg.jpg\");\n  background-position: center center;\n  background-size: cover;\n  padding: 48px 0 !important;\n  border-radius: 0 !important; }\n  .jumbotron-callout-image-small-inset h2, .jumbotron-callout-image-small-inset h3, .jumbotron-callout-image-small-inset p, .jumbotron-callout-image-small-inset a {\n    color: #484949; }\n  .jumbotron-callout-image-small-inset .panel {\n    margin: 0 15px; }\n  .jumbotron-callout-image-small-inset .panel.panel-default .panel-body {\n    padding: 1em 2em; }\n  .jumbotron-callout-image-small-inset .btn-default:hover {\n    background-color: #e6b900; }\n\n/* Callout Content One */\n.jumbotron-callout-content-one {\n  background-color: #006A96;\n  padding: 30px 0 !important;\n  border-radius: 0 !important; }\n  .jumbotron-callout-content-one h2, .jumbotron-callout-content-one h3, .jumbotron-callout-content-one p, .jumbotron-callout-content-one li, .jumbotron-callout-content-one a, .jumbotron-callout-content-one a:hover {\n    color: #fff; }\n  .jumbotron-callout-content-one .panel {\n    background-color: transparent;\n    margin: 0 15px 20px 15px; }\n  .jumbotron-callout-content-one .panel.panel-primary .panel-body {\n    padding: 0em 1em; }\n  .jumbotron-callout-content-one .panel.panel-primary .panel-body p {\n    font-size: 18px;\n    color: #fff; }\n  @media (min-width: 992px) {\n    .jumbotron-callout-content-one h2 {\n      margin-left: 50px; } }\n\n/* Callout Content Two */\n.jumbotron-callout-content-two {\n  background-image: url(\"../img/callout-content-two-bg.jpg\");\n  background-position: center center;\n  background-size: cover;\n  padding: 48px 0 !important;\n  border-radius: 0 !important; }\n\n.jumbotron-callout-content-two h2, .jumbotron-callout-content-two h3, .jumbotron-callout-content-two p {\n  color: #fff; }\n\n.panel {\n  border: none; }\n\n.panel.panel-primary {\n  background-color: rgba(0, 106, 150, 0.85); }\n\n.panel.panel-primary .panel-body {\n  padding: 1em 2em; }\n\n.panel.panel-primary .panel-body .btn {\n  margin-bottom: 0; }\n\n.panel.panel-primary .text-link {\n  color: #fff; }\n\n.panel.panel-primary .text-right {\n  margin-bottom: 0.25em; }\n\n.panel-primary .text-link {\n  border-bottom: 1px #fff solid; }\n\n/********************* OVERWRITES */\n/*******************************************************************\nFLEXSLIDER\n************************/\n.flexslider {\n  border: 0;\n  border-radius: 0;\n  margin-bottom: 1em;\n  width: 100%;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  -o-box-shadow: none;\n  box-shadow: none;\n  /* pause and play control */\n  /* direction control */ }\n  .flexslider a {\n    color: #fff;\n    -webkit-tap-highlight-color: transparent; }\n  .flexslider .slides li {\n    margin: 0; }\n  .flexslider .flex-control-nav {\n    float: right;\n    right: 32px;\n    bottom: 10px;\n    height: 12px;\n    width: auto;\n    z-index: 5; }\n    .flexslider .flex-control-nav li {\n      vertical-align: top;\n      margin: 0 0 0 5px;\n      /* shared paging, pause and play control styles */\n      /* paging control */ }\n      .flexslider .flex-control-nav li a {\n        border: 1px solid #016691;\n        cursor: pointer;\n        height: 10px;\n        margin-left: 8px;\n        text-indent: -9999px;\n        width: 20px; }\n      .flexslider .flex-control-nav li a {\n        background: #bed4e7;\n        -webkit-border-radius: 0px;\n        -moz-border-radius: 0px;\n        -o-border-radius: 0px;\n        border-radius: 0px;\n        -webkit-box-shadow: none;\n        -moz-box-shadow: none;\n        -o-box-shadow: none;\n        box-shadow: none; }\n      .flexslider .flex-control-nav li a.flex-active {\n        background: #eb8626;\n        border: 1px solid #c15f01;\n        cursor: default; }\n  .flexslider .flex-pauseplay a {\n    border: 0;\n    display: block;\n    height: 10px;\n    width: 20px;\n    position: static;\n    text-indent: -9999px; }\n  .flexslider .flex-pauseplay a.flex-pause {\n    background-position: 6px -248px; }\n  .flexslider .flex-pauseplay a.flex-play {\n    background-position: 8px -232px; }\n  .flexslider .flex-direction-nav li a {\n    background: #000;\n    background: rgba(0, 0, 0, 0.3);\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c000000, endColorstr=#4c000000);\n    -webkit-border-radius: 12px;\n    -moz-border-radius: 12px;\n    border-radius: 12px;\n    text-indent: 0;\n    text-align: center;\n    margin: 0;\n    top: 30%;\n    height: 24px;\n    width: 24px;\n    opacity: 0.8; }\n  .flexslider .flex-direction-nav li a:hover {\n    text-decoration: none; }\n  .flexslider .flex-direction-nav li a.flex-prev {\n    left: 10px; }\n  .flexslider .flex-direction-nav li a.flex-next {\n    right: 10px; }\n  .flexslider .flex-direction-nav a:before {\n    content: ''; }\n  .flexslider .flex-direction-nav a.flex-next:before {\n    content: ''; }\n  .flexslider .flex-controls {\n    height: 37px;\n    z-index: 99; }\n    .flexslider .flex-controls .flex-pauseplay {\n      bottom: 10px;\n      right: 5px;\n      position: absolute;\n      z-index: 10; }\n\n/* Caption style */\n/* IE rgba() hack */\n.flex-caption {\n  background: none;\n  -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);\n  zoom: 1; }\n\n.flex-caption {\n  width: 100%;\n  padding: 2%;\n  margin: 0;\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  background: rgba(0, 0, 0, 0.3);\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);\n  font-size: 14px;\n  line-height: 18px; }\n  .flex-caption a {\n    -webkit-tap-highlight-color: rgba(88, 166, 203, 0.6); }\n\n/* control container */\n/* alternative theme */\n.flexslider.alt .flex-direction-nav li a,\n.flexslider.alt .flex-caption {\n  background: #0B638B;\n  background: rgba(11, 99, 139, 0.8);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4);\n  zoom: 1; }\n\n/*******************************************************************\nAlerts\n************************/\n/********************* CMS */\n/**********************************************************************\n * CSS Styling for the drawer widget.\n */\n.drawer-wrapper {\n  margin-bottom: 1em; }\n\n/* header */\n.drawer h2 {\n  text-transform: capitalize;\n  font-weight: normal;\n  font-size: 20px;\n  margin-top: 0;\n  margin-bottom: 0;\n  padding: .1em 0;\n  zoom: 1; }\n\n/* default state */\n.drawer h2 a {\n  background-position: 5px  12px;\n  display: block;\n  padding: 10px 0 10px 30px;\n  text-decoration: none;\n  color: #fff;\n  background-color: #006a96; }\n  .drawer h2 a:hover {\n    background-color: #004663; }\n\n/* ie7 hack */\n*:first-child + html .drawer h2 a {\n  display: inline-block; }\n\n/* expanded state */\n.drawer h2.expand a {\n  background-position: 5px -86px;\n  padding: 10px 0 10px 30px;\n  color: #fff;\n  background-color: #004663; }\n\n/* hover state */\n.drawer h2:hover, .drawer h2:active {\n  background-color: transparent;\n  cursor: pointer;\n  color: #fff; }\n\n/* content background */\n.drawer > div,\n.drawer > article {\n  padding: 1em 2em; }\n\n.drawer > div.cols_wrapper {\n  padding: 1em 0; }\n\n/* toggle links */\n.drawer-toggle {\n  font-size: 90%;\n  padding: .5em 0; }\n\n.drawer-toggle a {\n  color: #666; }\n\n.drawer-toggle a:hover, .drawer-toggle a:active {\n  color: #016691; }\n\n.drawer-toggle a {\n  background-position: 0 -215px;\n  padding-left: 16px; }\n\n.drawer-toggle a.expand {\n  background-position: 0 -200px; }\n\n@media print {\n  /* removes ucsd logo and other background images (glyphicons) */\n  html, main, footer *,\n  .layout-title * {\n    background-color: transparent !important;\n    background-image: none !important;\n    overflow: visible !important; }\n\n  /* title and header font color should be black (readable) */\n  .title-header,\n  h1, h2, h3, h4, h5, h6, p {\n    color: #000; }\n\n  /* hide login/ emergency/ nav/ search/ footer links/ btn-nav styles */\n  #uc-emergency, .layout-login, nav, .search, .footer-links, .btn-nav {\n    display: none; }\n\n  main {\n    width: 99.99% !important; }\n    main section {\n      left: 0 !important;\n      margin: 0 !important;\n      padding: 0 !important;\n      width: 100% !important; }\n\n  /* reset horizontal ruler */\n  hr {\n    background-color: #ccc !important; }\n\n  .main-content-nav {\n    background: none; }\n\n  a[href]:after {\n    content: none !important; } }\n\n/*# sourceMappingURL=base.css.map */\n","/* ***********************************************\r\n * Layout\r\n *\r\n * Components:\r\n *  - base layout\r\n *  - header\r\n *  - footer\r\n *  - nav\r\n *  - more(?)\r\n *\r\n * ***************/\r\n\r\n/* ***********************************************\r\n * BASE\r\n * ***************/\r\n\r\nhtml, body\r\n{\r\n  background: #FFF;\r\n  overflow-x: hidden;\r\n  color: #333;\r\n  font: normal normal normal 16px/1.5 'Roboto', sans-serif;\r\n}\r\n\r\n/*Accessibility Focus On Keyboard Navigation*/\r\n\r\n:focus {\r\n  outline: thin dotted #333333 !important;\r\n  outline: 5px auto -webkit-focus-ring-color !important;\r\n  outline-offset: -2px;\r\n}\r\n\r\n  /* container will have media queries for sizing*/\r\n\r\n  .layout-container {\r\n    max-width: $full;\r\n    width: 98%;\r\n    margin: 0px auto;\r\n    overflow: hidden;\r\n\r\n    @media only screen and (max-width: $desktop-small) {\r\n      width: 94%;\r\n    }\r\n\r\n    @media only screen and (max-width: $full) {\r\n      max-width: 960px;\r\n    }\r\n  }\r\n\r\n  .layout-navbar .layout-container {\r\n    overflow: visible;\r\n  }\r\n\r\n  .layout-header {\r\n    /* to incorporate new navbar button*/\r\n    display: block;\r\n    width: 100%;\r\n\r\n    background-color: #2b92b9;\r\n//\r\n    @media only screen and (min-width: $minimum) and (max-width: $desktop-small) {\r\n      height: 105px;\r\n\r\n    }\r\n\r\n\r\n\r\n    //\r\n   /*\r\n    @media only screen and (min-width: $desktop-small + 1) {\r\n      height: 78px;\r\n    }*/\r\n  }\r\n\r\n  .layout-header,.isLoggedIn {\r\n    height: 100%;\r\n  }\r\n    .layout-login {\r\n      width: 100%;\r\n\r\n      background: #0B4A67;\r\n      overflow: hidden;\r\n    }\r\n    .login-content {\r\n      color: #fff;\r\n      font-size: 85%;\r\n      padding: .4em 0;\r\n      float: right;\r\n\r\n      a {\r\n        color: #fff;\r\n        font-weight: 700;\r\n        text-transform: uppercase;\r\n      }\r\n    }\r\n\r\n    .layout-title {\r\n      font-family: 'Roboto', sans-serif;\r\n      box-sizing: border-box;\r\n\r\n      height: 92px;\r\n      width: 100%;\r\n      background: #fff;\r\n      padding: 1.5em 0;\r\n\r\n      @media only screen and (max-width: $mobile-small) {\r\n        padding: 0.5em 0;\r\n      }\r\n\r\n      @media only screen and (max-width: $desktop-small) {\r\n        padding: 1em 0;\r\n        height: auto;\r\n      }\r\n    }\r\n\r\n  .layout-navbar {\r\n    min-height: 50px;\r\n    width: 100%;\r\n\r\n    background-color: $blue;\r\n    border: 0;\r\n    border-bottom: 1px solid $blue;\r\n    margin-bottom: 0;\r\n    z-index: 100;\r\n\r\n    .layout-container {\r\n      overflow: visible;\r\n    }\r\n  }\r\n\r\n  .layout-main {\r\n    width:100%;\r\n  }\r\n\r\n  .layout-footer {\r\n    width: 100%;\r\n\r\n    color: #fff;\r\n    font-size: 90%;\r\n    border-top: 1px solid #ccc;\r\n    padding: 1em 0;\r\n    line-height: 1.5;\r\n\r\n    > .layout-container {\r\n      background-position: right -74px;\r\n\r\n      @media only screen and (max-width: $tablet) {\r\n        background: none;\r\n      }\r\n    }\r\n  }\r\n\r\n  h1, h2, h3, h4, h5, h6 {\r\n    color: #333;\r\n    font-weight: 400;\r\n\r\n    line-height: 1.5;\r\n    /*margin: 0 0 .25em;*/\r\n  }\r\n\r\n  h1 {\r\n    color: $blue;\r\n    letter-spacing: .5px;\r\n    font-size: 39px\r\n  }\r\n\r\n  .h2, h2 {\r\n    font-size: 28px;\r\n  }\r\n\r\n  .styled-h2 {\r\n    color: #333;\r\n  }\r\n\r\n\r\n  hr {\r\n    background-color: #ccc;\r\n    color: #ccc;\r\n    height: 1px;\r\n  }\r\n\r\n  a {\r\n    color: #016691;\r\n  }\r\n\r\n\r\n/* ***********************************************\r\n * HEADER\r\n * **************/\r\n\r\n.skip-to-main:focus, .skip-to-main:active {\r\n  width: auto;\r\n  height: auto;\r\n  margin: auto;\r\n  padding: auto;\r\n  clip: auto;\r\n  background-color: green;\r\n  color: white;\r\n}\r\n\r\n/* ***********************************************\r\n* NAV\r\n* **************/\r\n\r\nnav\r\n{\r\n  .container {\r\n    padding: 0;\r\n  }\r\n}\r\n\r\n.navbar-list {\r\n  list-style: none;\r\n  font-size: 16px;\r\n  padding: 9px 0 0 0;\r\n  margin: 0;\r\n}\r\n\r\n.navbar .caret {\r\n  margin-left: 7px;\r\n}\r\n\r\n.layout-navbar .navbar-list > li {\r\n  float: left;\r\n\r\n  > a {\r\n    display: block;\r\n    color: #fff;\r\n\r\n    background-color: $blue;\r\n    //border-bottom: solid 3px rgba(255,255,255,.4);\r\n    //border-right: solid 1px #C8CFD3;\r\n    //border-left: solid 1px rgba(255,255,255,.6);\r\n\r\n    padding: 9px 15px;\r\n    text-decoration: none;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  &.active > a {\r\n    border-bottom: #ffcd00 solid 3px;\r\n  }\r\n}\r\n\r\n.layout-navbar .navbar-list > li:first-child {\r\n  //border-left: solid 1px #fff;\r\n}\r\n\r\n// Bootstrap Native Navigation Overrides\r\n.navbar {\r\n\tmargin-bottom: 0;\r\n}\r\n.navbar-default {\r\n\tbackground-color: $blue;\r\n\tborder-bottom: none;\r\n}\r\n.navbar-default .navbar-nav > li > a {\r\n    color: #fff;\r\n}\r\n.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {\r\n    background-color: darken($blue, 10%);\r\n    color: #fff;\r\n}\r\n.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {\r\n\tbackground-color: darken($blue, 10%);\r\n\tcolor: #fff;\r\n}\r\n.dropdown-menu {\r\n\tbackground-color: darken($blue, 10%);\r\n  border-radius: 0;\r\n  padding: 0;\r\n}\r\n.dropdown-menu > li > a {\r\n\tcolor: #fff;\r\n  padding: 6px 20px;\r\n}\r\n\r\n.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {\r\n\tbackground-color: darken($blue, 10%);\r\n\tcolor: #fff;\r\n}\r\n\r\n.navbar-toggle {\r\n\tbackground-color: $blue;\r\n  border: none;\r\n\tfloat: left;\r\n\tmargin: 8px 0 8px 20px;\r\n}\r\n\r\n.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {\r\n    background-color: darken($blue, 10%);\r\n}\r\n.navbar-default .navbar-toggle .icon-bar {\r\n    background-color: #fff;\r\n}\r\n\r\n.mobile-nav-bars {\r\n  padding: 5px;\r\n  float: left;\r\n}\r\n\r\n.mobile-nav-icon {\r\n  font-size: 13px;\r\n  padding: 2px 0;\r\n  float: left;\r\n  color: #FFF;\r\n}\r\n\r\n#search {\r\n\tposition: absolute !important;\r\n\twidth: 385px;\r\n}\r\n\r\n/*Dropdown Hover Fallback */\r\n\r\n@media only screen and (min-width:767px) {\r\n  #navbar > .navbar-nav > .dropdown:hover .dropdown-menu {\r\n    display: block;\r\n }\r\n  #navbar > .navbar-nav > li:hover > a {\r\n    background-color: #004268 !important;\r\n }\r\n}\r\n\r\n// offcanvas overrides\r\n\r\n.navmenu-default .navmenu-nav > .active > a, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a, .navmenu-default .navmenu-nav > .active > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover, .navmenu-default .navmenu-nav > .active > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus {\r\n\tcolor: #fff;\r\n\tbackground-color: darken($blue, 10%);\r\n}\r\n\r\n.navmenu-default .navmenu-nav > li > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover, .navmenu-default .navmenu-nav > li > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus {\r\n\tcolor: #fff;\r\n\tbackground-color: $blue;\r\n}\r\n\r\n.navmenu-nav {padding-bottom: 0;}\r\n\r\n.navmenu-nav > li {\r\n\tborder-bottom: 1px solid #ccc;\r\n}\r\n\r\n.navmenu-default .navmenu-nav > li > a {\r\n\tcolor: #333;\r\n}\r\n\r\n.open .navmenu-nav > li > a {\r\n\tpadding: 10px 20px 10px 30px;\r\n\tcolor: $blue;\r\n\t&:hover {\r\n\t\tcolor: #333;\r\n\t\tbackground-color: transparent;\r\n\t\ttext-decoration: underline;\r\n\t}\r\n}\r\n\r\n\r\n\r\nli.open {border-bottom: none;}\r\n\r\n/*************************************************\r\n* Mobile Nav and search\r\n* ****************/\r\n\r\n.offcanvas > ul.nav.navbar-nav.navbar-right {\r\n\r\n  @media only screen and (max-width: $desktop-small-after) {\r\n    margin: 0;\r\n\r\n      .search {\r\n        width: 100%;\r\n      }\r\n\r\n      .search-toggle {\r\n        display: none;\r\n      }\r\n\r\n      .search-content {\r\n        background-color: #ffffff;\r\n        border-bottom: 2px solid #BDBDBD;\r\n      }\r\n\r\n      #search{\r\n        display: block !important;\r\n        position: relative !important;\r\n        width: 100%;\r\n        padding: 10px 15px;\r\n        overflow: hidden;\r\n      }\r\n\r\n      .search-content .input-group {\r\n        width: 60%;\r\n      }\r\n\r\n      .search-content .search-scope {\r\n        width: 34%;\r\n      }\r\n\r\n  }\r\n\r\n}\r\n\r\n\r\n@media only screen and (max-width: $desktop-small-after) {\r\n  .navmenu-default .navmenu-nav > li > a {\r\n    background-color: #e7e7e7;\r\n    color: $blue !important;\r\n  }\r\n\r\n  .navmenu-default .navmenu-nav > .open > a {\r\n    color: $blue !important;\r\n    border-bottom: 1px solid #CCC;\r\n\r\n  }\r\n\r\n  .dropdown-menu > li > a {\r\n    background-color: #FFF !important;\r\n    color: $blue !important;\r\n  }\r\n\r\n  .navmenu-default .navmenu-nav > .active > a {\r\n      color: $blue !important;;\r\n      background-color: #e7e7e7;\r\n      border-left: 2px solid $blue;\r\n  }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n/* ***********************************************\r\n* MAIN\r\n* **************/\r\n\r\nmain\r\n{\r\n}\r\n  .main-section {\r\n    line-height: 1.5;\r\n    padding: 0 0 1em 0;\r\n\r\n    /* space for smaller viewports */\r\n    margin-bottom: 1em;\r\n    @media only screen and (max-width: $desktop-small) {\r\n      width:100%;\r\n      padding: 0 15px 1em;\r\n    }\r\n\r\n    a {\r\n      text-decoration: underline;\r\n    }\r\n\r\n    .btn {\r\n      text-decoration: none;\r\n    }\r\n\r\n  }\r\n\r\n  .main-section-content {\r\n    position: relative;\r\n  }\r\n  .main-section img {\r\n\r\n    @media only screen and (max-width: 975px) {\r\n      max-width: 100% !important;\r\n      height: auto !important;\r\n    }\r\n  }\r\n\r\n  .main-section-supplement {\r\n    background-color: #F2F5F7;\r\n    border: solid 1px #C8CFD3;\r\n    padding: 1em;\r\n    margin-bottom: 1em;\r\n  }\r\n    .main-section-supplement h3 {\r\n      font-size: 115%;\r\n      color: #738AA3;\r\n      text-shadow: 0 1px 1px #FFF;\r\n    }\r\n\r\n\r\n    .blank-slate a, .layout-container.row a {\r\n      text-decoration: underline;\r\n\r\n    }\r\n\r\n    .layout-container.row .jumbotron a {\r\n      text-decoration: none;\r\n    }\r\n\r\n\r\n\r\n\r\n/* ***********************************************\r\n * FOOTER\r\n * **************/\r\n\r\nfooter\r\n{\r\n\tbackground-color: $blue;\r\n}\r\n  .footer-links {\r\n    list-style: none;\r\n\r\n    margin: .5em 0 0;\r\n    padding: 0;\r\n\r\n    > li {\r\n      display: inline;\r\n\r\n      margin-left: 0;\r\n      margin-right: .5em;\r\n      padding-right: .75em;\r\n      a {\r\n\t      color: #fff;\r\n\t      text-decoration: underline;\r\n      }\r\n    }\r\n\r\n    > li:first-child {\r\n      border-right: 1px solid #fff;\r\n    }\r\n  }\r\n\r\n.footer .row {\r\n\tpadding: 1.5em 0;\r\n\tcolor: #fff;\r\n\tfont-size: .9em;\r\n}\r\n.footer-logo {\r\n\twidth: 158px;\r\n\theight: 30px;\r\n\tfloat: right;\r\n\t@media only screen and (max-width: $desktop-small) {\r\n\t\tfloat: none;\r\n\t\tmargin-top: 15px;\r\n\t}\r\n}\r\n","/* ***********************************************\r\n * Modules\r\n *\r\n * Components:\r\n *  - breadcrumbs\r\n *  - search\r\n *  - title\r\n *  - buttons\r\n *  - input\r\n *  - two-column intro banner\r\n *  - more(?)\r\n *\r\n * ***************/\r\n\r\n/* ***********************************************\r\n * BREADCRUMBS\r\n * ***************/\r\n\r\n.breadcrumb, .breadcrumbs-list {\r\n  background-color: #fff;\r\n\r\n  margin-bottom: 0;\r\n  //padding: 2em 0 1em;\r\n\r\n  > li {\r\n    color: #666;\r\n    display: inline;\r\n    font-size: 80%;\r\n  }\r\n}\r\n\r\n/* ***********************************************\r\n * NAVBAR\r\n * ***************/\r\n/*\r\nul.nav.navbar-nav.navbar-right {\r\n  @media only screen and (max-width: $desktop-small-after) {\r\n  background: gray;\r\n  margin: 0;\r\n  padding: 0;\r\n  }\r\n}\r\n*/\r\n/* ***********************************************\r\n * SEARCH\r\n * ***************/\r\n\r\n.search {\r\n  float: right;\r\n  position:relative;\r\n  margin-top: 0;\r\n//  max-width:380px;\r\n}\r\n\r\n.search-toggle {\r\n  color: #fff !important;\r\n  /*max-height: 38px;*/\r\n\r\n  background-color: transparent !important;\r\n  border-radius: 0;\r\n  -webkit-border-radius: 0;\r\n  border: none;\r\n  border-width: 0 1px;\r\n\r\n  outline: 0;\r\n  padding: 11px;\r\n\r\n  /*&:hover,*/\r\n  &.search-is-open {\r\n\tcolor: darken(#fff, 15%);\r\n    background-color: #014663 !important;\r\n    border-color: none;\r\n    text-decoration: none;\r\n  }\r\n  span.caret {\r\n\tmargin-left: 6px;\r\n  }\r\n}\r\n\r\n.search-content {\r\n  position: absolute;\r\n  right: 0;\r\n\r\n  width: 385px;\r\n  padding: 10px;\r\n\r\n  background-color: #014663;\r\n  border: none;\r\n  border-width: 0 1px 2px;\r\n  display: none;\r\n\r\n  @media only screen and (max-width: $desktop) {\r\n    position: relative;\r\n    width: 100%;\r\n  }\r\n}\r\n  .search-content.search-is-open {\r\n    display: block;\r\n    z-index: 999;\r\n  }\r\n\r\n  .search-content .search-scope {\r\n    border-radius: 0;\r\n    max-width: 30%;\r\n    font-size: 11px;\r\n    padding: 4px 2px 4px 0;\r\n    float: left;\r\n    height: 27px;\r\n  }\r\n  .search-content .input-group {\r\n    width: 250px;\r\n    float: right;\r\n  }\r\n  .search-content .form-control {\r\n    float: right;\r\n    -webkit-border-radius: 0;\r\n    border-radius: 0;\r\n    height: 26px;\r\n  }\r\n\r\n/* ***********************************************\r\n * TITLE\r\n * ***************/\r\n\r\n.title-header {\r\n  float: left;\r\n\r\n  color: #000;\r\n  font-size: 1.35rem;\r\n  letter-spacing: 1px;\r\n  text-decoration: none;\r\n  text-transform: uppercase;\r\n\r\n  &.title-header-short {\r\n    display: none;\r\n    @media only screen and (max-width: $mobile) {\r\n\t    display: block;\r\n\t    margin-top: 0;\r\n    }\r\n  }\r\n\r\n  &:hover,\r\n  &:focus {\r\n    color: lighten(#000, 40%);\r\n    text-decoration: none;\r\n  }\r\n\r\n  @media only screen and (max-width: $mobile) {\r\n\tdisplay: none;\r\n    margin-top: 2.25em;\r\n  }\r\n  @media only screen and (max-width: $mobile-small) {\r\n    font-size: 20px;\r\n    margin-top: 2em;\r\n  }\r\n}\r\n\r\n.title-header-large {\r\n\tmargin-top: 5px;\r\n\t@media only screen and (min-width: $mobile) and (max-width: $desktop-small) {\r\n    display: block;\r\n    margin-top: 2.5em;\r\n  }\r\n}\r\n\r\n.title-logo {\r\n  float: right;\r\n\r\n  width: 229px;\r\n  height: 65px;\r\n\r\n  overflow: hidden;\r\n  text-indent: -999em;\r\n  background-position: 0 -3px;\r\n\r\n  @media only screen and (max-width: $mobile) {\r\n    background-position: -239px -2px;\r\n    height: 45px;\r\n    width: 166px;\r\n    display: none !important;\r\n  }\r\n\r\n  @media only screen and (max-width: $desktop-small) {\r\n    display: block;\r\n    position: absolute;\r\n\r\n  }\r\n}\r\n\r\n\r\n.header-logo {\r\n\r\n  height: 30px;\r\n  margin: 15px 20px 0 0;\r\n  width: auto;\r\n\r\n  @media only screen and (min-width: $mobile) {\r\n    display: none;\r\n  }\r\n\r\n}\r\n\r\n/* ***********************************************\r\n * MAIN CONTENT SIDE NAV\r\n * ***************/\r\n\r\n.sidebar-section {\r\n\tpadding: 0 4em 1em 0;\r\n\t@media (max-width: $desktop) {\r\n\t    padding: 0 0 3em 0;\r\n\t    width: 100%;\r\n    }\r\n}\r\n\r\n#site-logo img {\r\n    max-width: 100%;\r\n    height: auto;\r\n    margin-top: 0;\r\n    margin-bottom: 15px;\r\n    @media (max-width: $desktop-small) {\r\n\t    display: none;\r\n    }\r\n}\r\n\r\n.main-content-nav {\r\n  background: #eee;\r\n  border: solid 1px #D8D7D7;\r\n  padding: 1em;\r\n  margin-bottom: 1em;\r\n\r\n  @media only screen and (max-width: $desktop-small) {\r\n    margin-top: 0em;\r\n  }\r\n\r\n  > h2 {\r\n    color: #333;\r\n    font-size: 140%;\r\n    //text-shadow: 0 1px 1px #FFF;\r\n    margin: 0 0 .4em;\r\n    text-transform: capitalize;\r\n    font-weight: normal;\r\n  }\r\n  > ul {\r\n    /* for borders to line up properly */\r\n    margin: 0 -1em -1em;\r\n    /* override navbar-list 14px for main navbar*/\r\n    font-size: 1em;\r\n\r\n    > li.active {\r\n      color: darken($blue, 10%);\r\n    }\r\n  }\r\n\r\n  > ul li {\r\n    border-top: solid 1px #D8D7D7;\r\n    list-style: none;\r\n\r\n    a {\r\n      display: block;\r\n      padding: 1em;\r\n\t  color: #333;\r\n      &:hover {\r\n        background-color: $blue;\r\n        color: #fff;\r\n      }\r\n      &:hover, &:link, &:active {\r\n        text-decoration: none;\r\n      }\r\n    }\r\n\r\n    &.active {\r\n      background-color: #fff;\r\n      padding: 1em 0 1em 1em;\r\n      font-weight: bold;\r\n\r\n\t  > ul li a {\r\n\t\t  color: $blue;\r\n\t\t  padding-left: 0 !important;\r\n\t  }\r\n\r\n      > a {\r\n        color: $blue;\r\n      }\r\n\r\n\t  a:hover {\r\n        text-decoration: underline;\r\n        color: #484949;\r\n        background-color: transparent;\r\n      }\r\n    }\r\n\r\n    ul {\r\n      margin: .4em 0 -.4em 1em;\r\n      padding:0;\r\n    }\r\n\r\n    li {\r\n      font-size: 85%;\r\n    }\r\n  }\r\n}\r\n\r\n\r\n/* ***********************************************\r\n * BUTTONS\r\n * ***************/\r\n\r\nbutton {\r\n\r\n}\r\n\r\n\r\n/* ***********************************************\r\n * INPUT\r\n * ***************/\r\n\r\ninput {\r\n\r\n}\r\n\r\n.form-control {\r\n  -webkit-border-radius: 0;\r\n  border-radius: 0;\r\n  padding: 0.5em;\r\n}\r\n\r\nselect {\r\n\r\n}\r\n\r\n.subhead {\r\n  font-size: 120%\r\n}\r\n\r\n\r\n\r\n/* ***********************************************\r\n * Two Column Intro Banner\r\n * ***************/\r\n\r\n .intro-banner {\r\n  margin: 0 !important;\r\n  position: relative;\r\n  max-height: 380px;\r\n\r\n    h1 {\r\n      text-align: center;\r\n      color: white;\r\n      text-shadow: 0px 0px 20px #1e1e1e;\r\n    }\r\n\r\n    img {\r\n      width: 100%;\r\n      height: auto;\r\n      max-height: 380px;\r\n      position: absolute;\r\n    }\r\n\r\n    .cr-item-container {\r\n      margin: 9% 0;\r\n      /*\r\n      @media only screen and (max-width: $full) {\r\n        top: 20%;\r\n      }\r\n      */\r\n    }\r\n\r\n    @media only screen and (max-width: $full) {\r\n      .intro-banner-heading {\r\n        font-size: 53px !important;\r\n      }\r\n   }\r\n\r\n    @media only screen and (max-width: $desktop) {\r\n      .intro-banner-heading {\r\n        font-size: 43px !important;\r\n      }\r\n   }\r\n\r\n   @media only screen and (max-width: $desktop-small) {\r\n    .intro-banner-heading {\r\n      font-size: 43px !important;\r\n    }\r\n  }\r\n\r\n    @media only screen and (max-width: $tablet) {\r\n      .intro-banner-heading {\r\n        font-size: 37px !important;\r\n      }\r\n    }\r\n\r\n    @media only screen and (max-width: $mobile) {\r\n      .intro-banner-heading {\r\n        font-size: 27px !important;\r\n      }\r\n    }\r\n  \r\n \r\n/*\r\n@media only screen and (max-width: $desktop-small) {\r\n  min-height: 300px;\r\n}\r\n\r\n@media only screen and (max-width: $desktop-small) {\r\n  min-height: 250px;\r\n}\r\n*/\r\n\r\n}\r\n\r\n\r\n.display-flex-center {\r\n  display: flex;\r\n  align-items: center;\r\n  min-height: 380px;\r\n  \r\n}\r\n\r\n",".layout-header.open,\r\n.layout-main.open,\r\n.layout-footer.open {\r\n  -webkit-transform: translate(42%,0);\r\n  transform: translate(42%,0);\r\n\r\n  @media only screen and (max-width: $tablet) {\r\n    -webkit-transform: translate(83%,0);\r\n    transform: translate(83%,0);\r\n  }\r\n}\r\n\r\n.layout-header button.btn-nav {\r\n  position: relative;\r\n  float: left;\r\n\r\n  height: 44px;\r\n\r\n  color: #fff;\r\n  font-size: 24px;\r\n\r\n  background-image: none;\r\n  background-color: $blue;\r\n  border-radius: 1px;\r\n  border: 1px solid $blue;\r\n\r\n  padding: 9px 10px;\r\n  margin-right: 10px;\r\n\r\n  @media only screen and (max-width: $mobile-small) {\r\n    font-size: 20px;\r\n  }\r\n\r\n  @media only screen and (max-width: $desktop) {\r\n    display: block;\r\n  }\r\n}\r\n/* button iconbar styling */\r\n\r\n\r\nbutton.btn-nav .icon-bar {\r\n  display: block;\r\n\r\n  width: 30px;\r\n  height: 2px;\r\n\r\n  background-color: #fff;\r\n  border-radius: 1px;\r\n  margin-top: 0.25em;\r\n\r\n  @media only screen and (max-width: $mobile-small) {\r\n    width: 22px;\r\n  }\r\n}\r\n\r\n.btn-nav .icon-bar:nth-child(2),\r\n.btn-nav .icon-bar:nth-child(3),\r\n.btn-nav .icon-bar:nth-child(4) {\r\n  transition: all .2s ease;\r\n  transition-delay: .25s;\r\n  opacity: 1;\r\n}\r\n  .btn-nav .icon-bar:nth-child(2) {\r\n    margin: 0;\r\n  }\r\n  /* button transition code */\r\n  .btn-nav .icon-bar:nth-child(2),\r\n  .btn-nav .icon-bar:nth-child(4) {\r\n    -webkit-transition: all .2s ease;\r\n    -o-transition: all .2s ease;\r\n    transition: all .2s ease;\r\n\r\n    -webkit-transition-delay: .25s;\r\n    -o-transition-delay: .25s;\r\n    transition-delay: .25s;\r\n  }\r\n    .layout-header.open .btn-nav .icon-bar:nth-child(2) {\r\n      -webkit-transform: translate3d(0,8px,0) rotateZ(45deg);\r\n      -ms-transform: translate3d(0,8px,0) rotateZ(45deg);\r\n      -o-transform: translate3d(0,8px,0) rotateZ(45deg);\r\n      transform: translate3d(0,8px,0) rotateZ(45deg);\r\n    }\r\n    .layout-header.open .btn-nav .icon-bar:nth-child(3) {\r\n      opacity: 0;\r\n    }\r\n    .layout-header.open .btn-nav .icon-bar:nth-child(4) {\r\n      -webkit-transform: translate3d(0, -8px, 0) rotateZ(-45deg);\r\n      -ms-transform: translate3d(0, -8px, 0) rotateZ(-45deg);\r\n      -o-transform: translate3d(0, -8px, 0) rotateZ(-45deg);\r\n      transform: translate3d(0, -8px, 0) rotateZ(-45deg);\r\n    }\r\n/* end button transition code */\r\n\r\n\r\nbutton:hover {\r\n  border-color: transparent;\r\n  background-color: rgba(254,254,254,.4);\r\n}\r\n\r\nbutton:focus {\r\n  border-color: transparent;\r\n  outline: 0;\r\n  background-color: rgba(254,254,254,.4);\r\n}\r\n\r\nbutton:active {\r\n  border-color: transparent;\r\n  background-color: rgba(254,254,254,.6);\r\n}\r\n\r\n.layout-navbar.navbar-is-opened .navbar-list > li {\r\n  float: none;\r\n}\r\n\r\n.navdrawer-container.navbar-is-opened .layout-container {\r\n  width:100%;\r\n}\r\n\r\n\r\n.navdrawer-container.navbar-is-opened .navbar-list > li.active {\r\n  background: #fff;\r\n}\r\n\r\n.navdrawer-container.navbar-is-opened .navbar-list > li > a {\r\n  border: none;\r\n  border-bottom: 1px solid #ccc;\r\n  padding: 10px 10px 10px 20px;\r\n  background-color: $blue !important;\r\n  border: none !important;\r\n  &:hover {\r\n\t  background-color: darken($blue, 10%) !important;\r\n  }\r\n  @media only screen and (max-width: $desktop) {\r\n    border: 0;\r\n    font-weight: bold;\r\n    background: $blue;\r\n    border-bottom: 1px solid #ccc;\r\n  }\r\n}\r\n\r\n/* Search bar integration */\r\n.navdrawer-container.navbar-is-opened button.search-toggle {\r\n  display: none;\r\n}\r\n\r\n.navdrawer-container.navbar-is-opened .search {\r\n  width: 100%;\r\n  height: 100%;\r\n\r\n  float: none;\r\n}\r\n\r\n.navdrawer-container.navbar-is-opened .search-content {\r\n  display: block;\r\n\r\n  height: 43px;\r\n\r\n  padding: 7px;\r\n  background-color: $blue;\r\n  //border-bottom: 2px solid #BDBDBD;\r\n\r\n    .search-scope {\r\n      max-width: 30%;\r\n      font-size: 11px;\r\n      padding: 4px 2px 4px 0;\r\n      float: left;\r\n      height: 27px;\r\n    }\r\n\r\n    form > .input-group {\r\n      width: 55%;\r\n      float: right;\r\n\r\n      input {\r\n        height: 27px;\r\n      }\r\n    }\r\n}\r\n\r\n.navdrawer-container ul {\r\n  list-style-type: none;\r\n}\r\n\r\n  /* sub list stylings */\r\n  .navdrawer-container .navbar-subnav:hover > a {\r\n    border-bottom: solid 3px #9FB3BF;\r\n  }\r\n    .navbar-subnav .navbar-sublist li:hover > a {\r\n      background-color: $blue;\r\n    }\r\n\r\n  .navdrawer-container ul.navbar-sublist {\r\n    display: none;\r\n    position: absolute;\r\n    font-size: 14px;\r\n\r\n    @media only screen and (max-width: $desktop) {\r\n      display: block;\r\n      position: relative;\r\n      border-left: 0;\r\n      border-top: 0;\r\n      border-bottom: 1px solid #E2E2E2;\r\n      box-shadow: none;\r\n    }\r\n\r\n    padding: 0;\r\n\r\n    //border-left: solid 1px #C8CFD3;\r\n    //border-top: solid 1px #C8CFD3;\r\n    margin-left: 0;\r\n\r\n    -webkit-box-shadow: 0 3px 5px 0 rgba(50,50,50,.2);\r\n    box-shadow: 0 3px 5px 0 rgba(50,50,50,.2);\r\n  }\r\n    .navdrawer-container .subnav-hover ul.navbar-sublist {\r\n      display: block;\r\n      z-index: 3;\r\n\r\n      @media only screen and (max-width: $desktop) {\r\n        display: block;\r\n        position: relative;\r\n        border: 0;\r\n        border-bottom: 1px solid #ccc;\r\n        -webkit-box-shadow: none;\r\n        box-shadow: none;\r\n\r\n        a {\r\n          border: 0;\r\n          padding-left: 3em;\r\n        }\r\n      }\r\n    }\r\n\r\n    .navdrawer-container .navbar-sublist.subnav-is-opened {\r\n      display: block;\r\n    }\r\n      .navdrawer-container.navbar-is-opened .navbar-sublist.subnav-is-opened a{\r\n        border: 0;\r\n        padding-left: 3em;\r\n      }\r\n\r\n    .navdrawer-container .navbar-sublist a {\r\n      display: block;\r\n\r\n      //width: 100%;\r\n      //height: 100%;\r\n\r\n      background: darken($blue, 5%);\r\n      // border-bottom: solid 1px #C8CFD3;\r\n      //border-right: solid 1px #ffcd00;\r\n      //border-left: solid 1px rgba(255,255,255,.6);\r\n\r\n      color: #fff;\r\n      padding: 9px 15px 8px;\r\n      text-decoration: none;\r\n    }\r\n.layout-header,\r\n.layout-main,\r\n.layout-footer {\r\n  -webkit-transition: -webkit-transform .3s ease-in-out;\r\n  transition: transform .3s ease-in-out;\r\n}\r\n\r\nnav.navdrawer-container.navbar-is-opened {\r\n  position: fixed;\r\n\r\n  top: 0;\r\n  height: 100%;\r\n\r\n  opacity: 1;\r\n\r\n  border-right: 1px solid #DADADA;\r\n\r\n  -webkit-transition: opacity 0.3s ease-in-out;\r\n  transition: opacity 0.3s ease-in-out;\r\n\r\n  -webkit-transform: translate(0,0);\r\n  transform: translate(0,0);\r\n\r\n  transition-delay: 0.15s;\r\n\r\n  pointer-events: auto;\r\n\r\n  z-index: 2;\r\n}\r\n\r\n\r\n.navbar-is-opened {\r\n  display: block;\r\n}\r\n\r\n.navbar-is-opened a:hover {\r\n  text-decoration: underline !important;\r\n}\r\n\r\n\r\n  .navdrawer-container.navbar-is-opened {\r\n    @media only screen and (max-width: $tablet) {\r\n      width: 83%;\r\n\r\n      .search {\r\n        max-width: none;\r\n      }\r\n    }\r\n\r\n    @media screen and (min-width: $minimum) and (max-width: $tablet) {\r\n      .search-content form > .input-group {\r\n        width: 60%;\r\n      }\r\n    }\r\n\r\n  }\r\n\r\n@media only screen and (max-width: $desktop-small) {\r\n  .layout-header .btn-nav {\r\n    margin-top: 1.7em;\r\n  }\r\n}\r\n@media only screen and (max-width: $desktop) {\r\n  .navdrawer-container .navbar-sublist a {\r\n    border: none;\r\n    margin: 0;\r\n    padding-left: 2.5em !important;\r\n  }\r\n}\r\n\r\n\r\n@media only screen and (min-width: $desktop) {\r\n  .navdrawer-container {\r\n    display: block;\r\n    width: 100%;\r\n    opacity: 1;\r\n  }\r\n\r\n  button.btn-nav {\r\n    display: none;\r\n  }\r\n}\r\n\r\n@media only screen and (max-width: $desktop) {\r\n  .navdrawer-container {\r\n    position: fixed;\r\n    width: 42%;\r\n    z-index: -1;\r\n    opacity: 0;\r\n  }\r\n\r\n    .navdrawer-container .navbar-subnav .navbar-sublist.subnav-is-opened {\r\n      display: block;\r\n      position: relative;\r\n\r\n      border: 0;\r\n      border-bottom: 1px solid #ccc;\r\n\r\n      -webkit-box-shadow: none;\r\n      box-shadow: none;\r\n    }\r\n}\r\n\r\n.collapse-navbar .navdrawer-container {\r\n  position: fixed;\r\n  width: 42%;\r\n  z-index: -1;\r\n  opacity: 0;\r\n\r\n  .subnav-hover ul.navbar-sublist {\r\n    display: block;\r\n    position: relative;\r\n    border: 0;\r\n    border-bottom: 1px solid #ccc;\r\n    -webkit-box-shadow: none;\r\n    box-shadow: none;\r\n\r\n    a {\r\n      border: 0;\r\n      padding-left: 3em;\r\n    }\r\n  }\r\n}\r\n\r\n.collapse-navbar .btn-nav {\r\n  display: block;\r\n}\r\n\r\n.collapse-navbar .search-content {\r\n  position: relative;\r\n  width: 100%;\r\n}\r\n\r\nul.nav.navbar-nav.navbar-right {\r\n    margin-right: 0 !important;\r\n}\r\n\r\na.navbar-brand {\r\n  color: #FFF !important;\r\n}\r\n\r\n/* Blink & TL Styles */\r\n\r\n.blink-nav-button {\r\n  background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/../img/blink_nav.png) 0 6px no-repeat !important;\r\n  min-width: 78px;\r\n\r\n    a {\r\n      color: transparent !important;\r\n      background-color: transparent !important;\r\n    }\r\n\r\n}\r\n\r\n.tlink-nav-button {\r\n  background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/../img/current_students_nav.png) 0 6px no-repeat !important;\r\n  min-width: 103px;\r\n\r\n    a {\r\n      color: transparent !important;\r\n      background-color: transparent !important;\r\n    }\r\n\r\n}\r\n","/**********************************************************************\n * Basic CSS styling\n */\n\n.clearfix{\n\toverflow: auto;\n}\n\n/* --------------------------------------------------------------------\n * table\n */\ntable.styled {\n\tmargin-bottom: 1em;\n}\n\ntable.styled th,table.styled td {\n\tpadding: .25em 1em;\n}\n\ntable.styled th {\n\tbackground-color: #eee;\n\tfont-weight: bold;\n}\n\ntable.styled th,table.styled td {\n\tborder: 1px solid #ccc;\n}\n\ntable.styled tbody tr.even {\n\tbackground-color: #eff;\n}\n\n/* --------------------------------------------------------------------\n * _images\n */\nimg.left {\n\tfloat: left;\n\tpadding: 0 1em 1em 0;\n\twidth: auto;\n}\n\nimg.right {\n\tfloat: right;\n\tpadding: 0 0 1em 1em;\n\twidth: auto;\n}\n\n/* --------------------------------------------------------------------\n * * - 360px\n */\n@media only screen and (max-width: 360px) {\n\timg.left,\n\timg.right {\n\t\tfloat: none;\n\t\tpadding: 1em 0;\n\t}\n}/**********************************************************************\n * Messages\n */\n\n.msg {\n\t-moz-border-radius: .5em;\n\t-webkit-border-radius: .5em;\n\tborder-radius: .5em;\n\tpadding: .5em 1em;\n\tmargin-bottom: 1em;\n}\n\n.msg h4 {\n\tpadding-left: 20px;\n\ttext-shadow: none;\n}\n\n.msg.info {\n\tborder: 1px solid #aaa;\n\tbackground-color: #eee;\n}\n\n.msg.info h4 {\n\tbackground-position: 0 -150px;\n}\n\n.msg.alert {\n\tborder: 1px solid #fa0;\n\tbackground-color: #ffe;\n}\n\n.msg.alert h4 {\n\tbackground-position: 0 -249px;\n\tcolor: #D56A03;\n}\n\n.msg.confirm {\n\tborder: 1px solid #393;\n\tbackground-color: #efe;\n}\n\n.msg.confirm h4 {\n\tcolor: #393;\n\tbackground-position: 0 -200px;\n}\n\n.msg.error {\n\tborder: 1px solid #c00;\n\tbackground-color: #fee;\n}\n\n.msg.error h4 {\n\tcolor: #c00;\n\tbackground-position: 0 -299px;\n}/**********************************************************************\n * Button\n */\n.button {\n\tborder: none;\n\tcolor: #333;\n\tdisplay: inline-block;\n\toutline: none;\n\tcursor: pointer;\n\ttext-align: center;\n\ttext-decoration: none;\n\ttext-shadow: rgba(255, 255, 255, .5) 0 1px 1px;\n\tmargin-right: .5em;\n\tpadding: .25em 1em;\n\t-moz-border-radius: .25em;\n\t-webkit-border-radius: .25em;\n\tborder-radius: .25em;\n\t-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .5);\n\t-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .5);\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, .5);\n}\n\n.button:hover {\n\ttext-decoration: none;\n}\n\n.button:active {\n\tposition: relative;\n\ttop: 1px;\n}\n\n.button:disabled {\n\tcolor: #999;\n\tcursor: default;\n}\n\n/*---------------------------------------------------------------------\n * primary button\n */\n.primary {\n\tbackground: #fc0;\n\tbackground: -moz-linear-gradient(top, #fc0, #fa0);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#fc0), to(#fa0) );\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc00',endColorstr='#ffaa00');\n}\n\n.primary:hover {\n\tbackground: #f90;\n}\n\n.primary:disabled {\n\tbackground: #fd0;\n\tbackground: -moz-linear-gradient(top, #fd0, #fc0);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#fd0), to(#fc0) );\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd00',endColorstr='#ffcc00');\n}\n\n/*---------------------------------------------------------------------\n * secondary button\n */\n.secondary {\n\tbackground: #eee;\n\tbackground: -moz-linear-gradient(top, #eee, #ddd);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd) );\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee',endColorstr='#dddddd');\n}\n\n.secondary:hover {\n\tbackground: #ccc;\n}\n\n.secondary:disabled {\n\tbackground: #fff;\n\tbackground: -moz-linear-gradient(top, #fff, #eee);\n\tbackground: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee) );\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#eeeeee');\n}\n\n/*---------------------------------------------------------------------\n * link button\n */\na.button {\n\tcolor: #333;\n}\n\n/* --------------------------------------------------------------------\n * * - 480px\n */\n@media only screen and (max-width: 480px) {\n\t.button {\n\t\tpadding: .5em 1em;\n\t}\n}/**********************************************************************\n * Icon\n */\n.icon {\n\tpadding-left: 1.5em;\n}\n\n/* ie 7 only hack */\n*:first-child+html .icon {\n\tdisplay: inline-block;\n}\n\n.icon.newwin {\n\tbackground-position: 0 -50px;\n}\n\n.icon.info {\n\tbackground-position: 0 -150px;\n}\n\n.icon.confirm {\n\tbackground-position: 0 -200px;\n}\n\n.icon.alert {\n\tbackground-position: 0 -250px;\n}\n\n.icon.error {\n\tbackground-position: 0 -300px;\n}\n\n.icon.invalid {\n\tbackground-position: 0 -300px;\n}\n\n.icon.cal {\n\tbackground-position: 0 -350px;\n}\n\n.icon.check {\n\tbackground-position: 0 -400px;\n}\n\n.icon.check_disabled {\n\tbackground-position: 0 -450px;\n}\n\n.icon.close {\n\tbackground-position: 0 -500px;\n}\n\n.icon.close_disabled {\n\tbackground-position: 0 -550px;\n}\n\n.icon.disable {\n\tbackground-position: 0 -600px;\n}\n\n.icon.disable_disabled {\n\tbackground-position: 0 -650px;\n}\n\n.icon.doc {\n\tbackground-position: 0 -700px;\n}\n\n.icon.doc_disabled {\n\tbackground-position: 0 -750px;\n}\n\n.icon.gear {\n\tbackground-position: 0 -900px;\n}\n\n.icon.mail {\n\tbackground-position: 0 -950px;\n}\n\n.icon.minus {\n\tbackground-position: 0 -1000px;\n}\n\n.icon.minus_disabled {\n\tbackground-position: 0 -1050px;\n}\n\n.icon.pencil {\n\tbackground-position: 0 -1100px;\n}\n\n.icon.pencil_disabled {\n\tbackground-position: 0 -1150px;\n}\n\n.icon.plus {\n\tbackground-position: 0 -1200px;\n}\n\n.icon.plus_disabled {\n\tbackground-position: 0 -1250px;\n}\n\n.icon.print {\n\tbackground-position: 0 -1300px;\n}\n\n.icon.search {\n\tbackground-position: 0 -1400px;\n}\n\n.icon.search_disabled {\n\tbackground-position: 0 -1450px;\n}\n\n.icon.submit {\n\tbackground-position: 0 -1500px;\n}\n\n.icon.submit_disabled {\n\tbackground-position: 0 -1550px;\n}\n\n.icon.trash {\n\tbackground-position: 0 -1600px;\n}\n\n.icon.trash_disabled {\n\tbackground-position: 0 -1650px;\n}\n\n.icon.undo {\n\tbackground-position: 0 -1700px;\n}\n\n.icon.arrow_right {\n\tbackground-position: 0 -1750px;\n}\n\n.icon.arrow_down {\n\tbackground-position: 0 -1800px;\n}\n\n.icon.play {\n\tbackground-position: 0 -1850px;\n}\n\n.icon.stop {\n\tbackground-position: 0 -1900px;\n}\n\n/* Social Media Icons */\n\n\n.social-list {\n\tmargin-left: 0;\n\tpadding-left: 0;\n\tlist-style: none;\n}\n\n.social-list li {\n\theight: 33px;\n\tmargin: 0 0 10px 0;\n\tpadding: 0 40px;\n  \tcursor: pointer;\n}\n\n.social-list li.facebook {\n\tbackground-position: 0 0;\n}\n\n.social-list li.twitter {\n\tbackground-position: 0 -39px;\n}\n\n.social-list li.youtube {\n\tbackground-position: 0 -80px;\n}\n\n.social-list li.linkedin {\n\tbackground-position: 0 -121px;\n}\n\n.social-list li.googleplus {\n\tbackground-position: 0 -160px;\n}\n\n.social-list li.instagram {\n\tbackground-position: 0 -200px;\n}\n\n.social-list li.tumblr {\n\tbackground-position: 0 -240px;\n}\n\n.social-list li.flickr {\n\tbackground-position: 0 -280px;\n}\n\n.social-list li.vine {\n\tbackground-position: 0 -320px;\n}\n\n.social-list li.pinterest {\n\tbackground-position: 0 -360px;\n}\n\n.social-list li.blogger {\n\tbackground-position: 0 -400px;\n}\n\n.social-list li.rss {\n\tbackground-position: 0 -440px;\n}\n\n.social-list li.vimeo {\n  background-position: 0 -480px;\n}\n\n.social-list li.wordpress {\n  background-position: 0 -520px;\n}\n\n/**********************************************************************\n * Form Elements\n */\ninput[type=\"text\"],select,textarea {\n\tborder: 1px solid #aaa;\n}\n\n.form-control {\n\tborder-radius: 0;\n  padding: .5em;  /* to keep in line with other input paddings */\n}\n\ninput[type=\"text\"],textarea {\n\tpadding: .5em;\n}\n\nselect.form-control {\n  padding: .5em .2em;\n}\n\nfieldset {\n\tborder: 1px solid #aaa;\n\tpadding: .5em;\n\tborder: 0;\n}\n\nlegend {\n\tcolor: #333;\n\tmargin-left: 0;\n\tpadding: 0;\n}\n\ninput[type=radio],input[type=checkbox] {\n\tmargin-right: .25em;\n}\n\n\n/*---------------------------------------------------------------------\n * input group addon\n */\n\n/* white background to make it look less like an 'actionable' button */\n.input-group-addon {\n  background: #fff;\n}\n\n\n/* --------------------------------------------------------------------\n * form fields and font style\n */\ndiv.field,div.field_top,div.field_left,div.label {\n\tclear: both;\n\tpadding-bottom: 1em;\n}\ndiv.label {\n  color:#000;\n}\n.field_top div.label {\n\tpadding-bottom: .25em;\n}\n\n.label,.input,.output {\n\tdisplay: block;\n}\n\n.label label {\n\tfont-weight: bold;\n}\n\n/* --------------------------------------------------------------------\n * form\n */\nform {\n\tmargin-bottom: 1em;\n}\n\n/* output */\nform .output {\n\tfont-weight: normal;\n}\n\n/* help text */\nform .help {\n\tcolor: #999;\n\tdisplay: block;\n\tfont-style: italic;\n\tfont-size: 85%;\n}\n\n/* required field */\nform .help.icon.asterisk {\n\tpadding-bottom: 1em;\n}\n\n/* multi field */\n.multi {\n\tmargin-right: .5em;\n}\n\n.input.multi {\n\tmargin-right: 0;\n\tpadding-bottom: .5em;\n}\n\n/* --------------------------------------------------------------------\n * form invalid field\n */\nform input.invalid,form textarea.invalid {\n\tborder: 1px solid #c00;\n}\n\nform .invalid,form .inline_invalid {\n\tcolor: #c00;\n}\n\nform .inline_invalid {\n\tdisplay: block;\n}\n\n/* hide from ie */\nhtml>body form .icon.invalid {\n\tmargin-left: .5em;\n}\n\n/* --------------------------------------------------------------------\n * form layout - default is left aligned\n */\n.field .label {\n\twidth: 10em;\n\tfloat: left;\n\ttext-align: right;\n\tpadding-right: 1em;\n}\n\n.field .input,.field .output,.field select.input,.field textarea.input {\n\tmargin-left: 11em;\n}\n\n.field .required {\n\tbackground-position: right 0;\n}\n\n.field_top .required,\n.field_left .required {\n    background-position: left 0;\n    padding-left: 1em;\n}\n\n/* top-aligned */\n.field_top .label {\n\tpadding-left: 1em;\n}\n\n.field_top .input,.field_top .output,.field_top select.input,.field_top textarea.input\n{\n\tmargin-left: 1em;\n}\n\n/* left-aligned */\n.field_left .label {\n\twidth: 10em;\n\tfloat: left;\n\ttext-align: left;\n\tpadding-left: 1em;\n}\n\n.field_left .input,.field_left .output,.field_left select.input,.field_left textarea.input\n{\n\tmargin-left: 11.5em;\n}\n\n/* --------------------------------------------------------------------\n * * - 640px\n */\n@media only screen and (max-width: 640px) {\n\t.field .label,\n\t.field_left .label {\n\t\tfloat: none;\n\t\ttext-align: left;\n\t\tpadding-left: 1em;\n\t\tpadding-bottom: .25em;\n\t}\n\t.field .input,.field .output,.field select.input,.field textarea.input,\n\t.field_left .input,.field_left .output,.field_left select.input,.field_left textarea.input {\n\t\tmargin-left: 1em;\n\t}\n\t.field .required,\n\t.field_left .required {\n\t\tbackground-position: left 0;\n\t\tpadding-left: 1em;\n\t}\n}\n\n/* --------------------------------------------------------------------\n * * - 480px\n */\n@media only screen and (max-width: 480px) {\n\tinput[type=\"text\"],textarea {\n\t\tpadding: .5em .25em;\n\t}\n}/**********************************************************************\n * loading styling\n */\n\ndiv.loading {\n\tclear: both;\n\theight: 32px;\n\ttext-indent: -9999px;\n\tbackground-position: center;\n}\n\nspan.loading {\n\tbackground-position: right;\n\tpadding-right: 20px;\n}\n\n/**********************************************************************\n * CSS Styling for the page nav aside\n */\ndiv.styled {\n  background: #F2F5F7;\n  border: 1px solid #C8CFD3;\n  margin-bottom: 1em;\n  padding: 1em;\n\n  h2, h3, h4, h5, h6 {\n\tcolor: #738AA3;\n\ttext-shadow: 0 1px 1px #FFFFFF;\n  }\n\n  h2 {\n\tfont-size: 140%;\n  }\n\n  h3 {\n\tfont-size: 115%;\n  }\n}\n\n#page_nav {\n  margin: 0 -1em -1em;\n  padding: 0;\n\n  li {\n\tborder-top: 1px solid #DBD7D7;\n\tcolor: #06c;\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n\n\t&.active, a {\n\t  color: #016691;\n\t  display: block;\n\t  padding: 1em 0 1em 1em;\n\t}\n\n\t&.active {\n\t  background-color: #fff;\n\t  color: #D56A03;\n\t}\n\n\t&.collapsed ul {\n\t  display: none;\n\t}\n\n\ta:hover {\n\t  background-color: #fff;\n\t  text-decoration: none;\n\t}\n\n\tli {\n\t  font-size: 85%;\n\n\t  a:hover {\n\t\ttext-decoration: underline;\n\t  }\n\t}\n  }\n\n  ul {\n\tmargin: .4em 0 -.4em 1em;\n\tpadding: 0;\n  }\n}\n\n#page_nav_title {\n  margin-bottom: 0.7em;\n}\n","/* CUSTOMIZE THE CAROUSEL\r\n-------------------------------------------------- */\r\n\r\n.carousel {\r\n  margin-bottom: 60px;\r\n\r\n  .cr-item-container {\r\n      position: absolute;\r\n      top:20%;\r\n      transition:all .2s linear;\r\n      width: inherit;\r\n         @media screen and (max-width: $xl-deskotp) {\r\n           top:10%;\r\n         }\r\n\r\n         @media screen and (max-width: $desktop) {\r\n           top: 0%;\r\n         }\r\n\r\n         @media screen and (max-width: $desktop-small) {\r\n           top:20%;\r\n           margin: 0 5%;\r\n         }\r\n\r\n         @media screen and (max-width: $tablet) {\r\n            top:10%;\r\n         }\r\n\r\n         @media screen and (max-width: $mobile) {\r\n           top:5%;\r\n         }\r\n\r\n       h1 {\r\n          @media screen and (max-width: 1160px) {\r\n            font-size: 40px;\r\n          }\r\n          @media screen and (max-width: $desktop-small) {\r\n            font-size: 2em !important;\r\n          }\r\n\r\n          @media screen and (max-width: $mobile) {\r\n            font-size: 1.2em !important;\r\n          }\r\n       }\r\n\r\n       p {\r\n           @media screen and (max-width: $desktop-small) {\r\n             display: none;\r\n           }\r\n       }\r\n\r\n       a.btn {\r\n\r\n         @media screen and (max-width: $desktop-small) {\r\n           margin-left: 35px !important;\r\n           padding: 8px;\r\n           min-width: 150px;\r\n           font-size: 13px;\r\n         }\r\n\r\n       }\r\n  }\r\n\r\n  /*.container h1 {\r\n    @media screen and (max-width: 1160px) {\r\n      font-size: 40px;\r\n    }\r\n    @media screen and (max-width: $desktop-small) {\r\n      font-size: 2em !important;\r\n    }\r\n  }*/\r\n\r\n}\r\n/* Since positioning the image, we need to help out the caption */\r\n.carousel-caption {\r\n  z-index: 10;\r\n}\r\n\r\n/* Declare heights because of positioning of img element */\r\n.carousel .item {\r\n  background-color: #FFF;\r\n}\r\n.carousel-inner > .item > img {\r\n  top: 0;\r\n  left: 0;\r\n  width: 100%;\r\n  height: auto;\r\n}\r\n\r\n\r\n.carousel-control {\r\n      width: 10%;\r\n     @media screen and (max-width: $desktop) {\r\n       width: 5%;\r\n     }\r\n\r\n}\r\n\r\n.carousel-indicators {\r\n\r\n     @media screen and (max-width: $tablet) {\r\n       display: none;\r\n     }\r\n\r\n}\r\n\r\nbutton#toggleCarousel {\r\n    background: transparent;\r\n    border: none;\r\n    color: #FFF;\r\n    font-size: 14px;\r\n}\r\n\r\nbutton#toggleCarouselAria {\r\n  background-color: green;\r\n  bottom: 20px;\r\n  margin-left: 50%;\r\n  padding: 10px 15px;\r\n  position: absolute;\r\n  z-index: 20;\r\n}\r\n\r\na.hero-no-button {\r\n    display: block;\r\n    overflow: hidden;\r\n    width: 100%;\r\n}\r\n\r\na.hero-no-button > img {\r\n    width: 100%;\r\n}\r\n\r\n.carousel-inner>.item>a>img {\r\n  width: 100%;\r\n}\r\n\r\n/* ROTATOR BUILDER\r\n-------------------------------------------------- */\r\n\r\n  /*Center Styles */\r\n\r\n  .cntr {\r\n    width: auto !important;\r\n    margin: 5% auto !important;\r\n    display: block;\r\n    text-align: center;\r\n    padding: 0;\r\n\r\n    @media screen and (max-width: 1277px) {\r\n      margin-bottom: 2.2% !important;\r\n    }\r\n\r\n  }\r\n\r\n  .cntr-btn {\r\n    margin: 0 auto !important;\r\n    display: block;\r\n    text-align: center;\r\n    width: max-content;\r\n    width: intrinsic;           /* Safari/WebKit uses a non-standard name */\r\n    width: -moz-max-content;    /* Firefox/Gecko */\r\n    width: -webkit-max-content;\r\n  }\r\n\r\n  /* Background color */\r\n\r\n  .rt-dark-blue {\r\n    background-color: #182B49 !important;\r\n  }\r\n\r\n  .rt-light-blue {\r\n    background-color: $blue !important;\r\n  }\r\n\r\n  .rt-neutral-gray {\r\n    background-color: #747678 !important;\r\n  }\r\n\r\n\r\n  /* Accent color */\r\n\r\n  .rt-btn-gold {\r\n    background-color: #C69214 !important;\r\n    color: #FFF !important;\r\n  }\r\n\r\n  .rt-btn-cyan {\r\n    background-color: #00C6D7 !important;\r\n  }\r\n\r\n  .rt-btn-yellow {\r\n    background-color: #FFCD00 !important;\r\n  }\r\n\r\n  .rt-btn-orange {\r\n    background-color: #FC8900 !important;\r\n    color: #FFF !important;\r\n  }\r\n\r\n  /* main text font color */\r\n  .item .rt-text-dark {\r\n    color: #484949;\r\n  }\r\n\r\n  .jumbotron-hero .text-indent h1.rt-text-dark {\r\n    text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.25);\r\n  }\r\n\r\n  .jumbotron-hero .text-indent p.rt-text-dark {\r\n    text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.25);\r\n  }\r\n\r\n@media (min-width: 768px) {\r\n\r\n\r\n  /* Bump up size of carousel content */\r\n  .carousel-caption p {\r\n    margin-bottom: 20px;\r\n    font-size: 21px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .featurette-heading {\r\n    font-size: 50px;\r\n  }\r\n}\r\n\r\n@media (min-width: 992px) {\r\n  .featurette-heading {\r\n    margin-top: 120px;\r\n  }\r\n}\r\n\r\n\r\n.carousel-control.right, .carousel-control.left {\r\n  background-image: none;\r\n}\r\n\r\n\r\n/* QuickBlock Carousel\r\n-------------------------------------------------- */\r\n\r\n.qb-carousel {\r\n\r\n    #indicators-container {\r\n      margin-left: 89%;\r\n\r\n      #toggleCarousel {\r\n        float: left;\r\n      }\r\n      \r\n    }\r\n\r\n    .carousel-caption {\r\n\r\n      bottom: 20px;\r\n      padding-bottom: 0;\r\n      padding-top: 0;\r\n      text-align: left;\r\n      left: 0;\r\n      margin-left: 20px;\r\n\r\n        h3{\r\n          color: #FFF;\r\n        }\r\n\r\n        p {\r\n          font-size: 1em;\r\n        }\r\n\r\n    }\r\n\r\n    .carousel-indicators {\r\n      bottom: 0;\r\n      left: auto;\r\n      list-style: none;\r\n      margin-left: 0;\r\n      margin-right: 10px;\r\n      padding-left: 0;\r\n      right: 0;\r\n      text-align: right;\r\n      width: auto;\r\n    }\r\n\r\n\r\n}\r\n\r\n/*Contact Module */\r\n\r\n.contact-module {\r\n\r\n    h2 {\r\n      margin-bottom: 15px !important;\r\n    }\r\n\r\n    iframe {\r\n      width: 100%;\r\n      height: 300px;\r\n\r\n      @media(max-width: 400px) {\r\n          height: 250px;\r\n        }\r\n\r\n    }\r\n\r\n    .contact-lable p {\r\n    font-weight: bold !important;\r\n    margin-bottom: 25px;\r\n    }\r\n\r\n\r\n}\r\n\r\n/*Social Media Module */\r\n\r\n.social-media-module {\r\n\r\n    h2 {\r\n      text-transform: uppercase;\r\n      margin-top: 23px;\r\n      margin-bottom: 23px;\r\n      font-size: 2em\r\n    }\r\n\r\n    .btn-social-icon {\r\n      border: 0;\r\n      border-radius: 0;\r\n      margin: 0 10px 10px 0\r\n    }\r\n\r\n}\r\n\r\n//bootstrap-social button supplements\r\n\r\n.btn-youtube {\r\n    color: #fff;\r\n    background-color: #dd4b39;\r\n    border-color: rgba(0,0,0,0.2);\r\n}\r\n\r\n.btn-youtube:hover {\r\n    color: #fff;\r\n    background-color: #c23321;\r\n    border-color: rgba(0,0,0,0.2);\r\n}\r\n\r\n/* Legacy Social Media Icons */\r\n\r\n\r\n.social-list {\r\n\tmargin-left: 0;\r\n\tpadding-left: 0;\r\n\tlist-style: none;\r\n}\r\n\r\n.social-list li {\r\n\theight: 33px;\r\n\tmargin: 0 0 10px 0;\r\n\tpadding: 0 40px;\r\n  \tcursor: pointer;\r\n\tbackground: url(../img/sprite_social.png) no-repeat transparent;\r\n}\r\n\r\n.social-list li.facebook {\r\n\tbackground-position: 0 0;\r\n}\r\n\r\n.social-list li.twitter {\r\n\tbackground-position: 0 -39px;\r\n}\r\n\r\n.social-list li.youtube {\r\n\tbackground-position: 0 -80px;\r\n}\r\n\r\n.social-list li.linkedin {\r\n\tbackground-position: 0 -121px;\r\n}\r\n\r\n.social-list li.googleplus {\r\n\tbackground-position: 0 -160px;\r\n}\r\n\r\n.social-list li.instagram {\r\n\tbackground-position: 0 -200px;\r\n}\r\n\r\n.social-list li.tumblr {\r\n\tbackground-position: 0 -240px;\r\n}\r\n\r\n.social-list li.flickr {\r\n\tbackground-position: 0 -280px;\r\n}\r\n\r\n.social-list li.vine {\r\n\tbackground-position: 0 -320px;\r\n}\r\n\r\n.social-list li.pinterest {\r\n\tbackground-position: 0 -360px;\r\n}\r\n\r\n.social-list li.blogger {\r\n\tbackground-position: 0 -400px;\r\n}\r\n\r\n.social-list li.rss {\r\n\tbackground-position: 0 -440px;\r\n}\r\n\r\n.social-list li.vimeo {\r\n  background-position: 0 -480px;\r\n}\r\n\r\n.social-list li.wordpress {\r\n  background-position: 0 -520px;\r\n}\r\n\r\n.social-list li.mobile {\r\n  background-position: 0 -560px;\r\n}\r\n\r\n/* Blockquote Footer Reset*/\r\n\r\nblockquote > footer {\r\n    background-color: transparent;\r\n}\r\n\r\n/* Full Calendar */\r\n\r\n#calendar {\r\n  margin: 20px 0;\r\n}\r\n\r\n/** Accessibility enhancements - July 13, 2021 **/\r\n\r\n#indicators-container {\r\n\r\n\r\n  position: absolute;\r\n  bottom: 20px;\r\n  width: auto;\r\n  display: block;\r\n  /* margin: 0; */\r\n  padding: 0;\r\n  margin-left: 50%;\r\n  min-width: 74px;\r\n  z-index: 999999;\r\n  \r\n  .carousel-indicators {\r\n    /* min-width: 20px; */\r\n    margin: 0;\r\n    padding: 0;\r\n    position: relative;\r\n    left: unset;\r\n    width: auto;\r\n    display: block;\r\n    float: left;\r\n    bottom: 0;\r\n  }\r\n\r\n  #toggleCarousel {\r\n    min-width: 20px;\r\n    margin: 0 10px;\r\n    /* padding: 0; */\r\n    position: relative;\r\n    /* left: unset; */\r\n    /* width: 10px; */\r\n    display: block;\r\n    z-index: 9000;\r\n    float: right;\r\n    bottom: -1px;\r\n  }\r\n\r\n}\r\n\r\n","/* ***********************************************\r\n * Modules\r\n *\r\n * Components:\r\n *  - Global styles\r\n *  - Buttons & Links\r\n *  - Hero Landing Page\r\n *  - Text and CTA w/Full Height Image Left\r\n *  - News with Images\r\n *  - Callout Image Small Inset\r\n *  - Callout Content One\r\n *  - Callout Content Two\r\n *\r\n * ***************/\r\n\r\n /* Global styles , specific for new templates */\r\n\r\n.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .styled-h2    {\r\n\tline-height: 1.1;\r\n\tmargin: 0 0 .25em;\r\n}\r\n\r\n.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .jumbotron .h1, .jumbotron .h2, .jumbotron .h3, .jumbotron .h4, .jumbotron .h5, .jumbotron .h6, .styled-h2  {\r\n\ttext-transform: uppercase;\r\n\tfont-weight: bold;\r\n}\r\n.jumbotron h1, .jumbotron .h1, .jumbotron h2, .jumbotron .h2, .jumbotron h3, .jumbotron .h3, .styled-h2{\r\n\tmargin-top: 23px;\r\n\tmargin-bottom: 11.5px;\r\n}\r\n\r\n.jumbotron .drawer-wrapper ul, .jumbotron  .drawer-wrapper ol {padding-left: 1em;}\r\n\r\n.jumbotron .drawer-wrapper ul li, .jumbotron  .drawer-wrapper ol li {\r\n\tpadding-bottom: 10px;\r\n}\r\n\r\n.jumbotron a, .jumbotron a:hover {\r\n\ttext-decoration: none;\r\n}\r\n\r\n.jumbotron, .container .jumbotron {\r\n\tborder-radius: 0 !important;\r\n}\r\n\r\n.detail-logo img {\r\n\tmargin-top: 35px;\r\n\tmargin-bottom: 15px;\r\n\twidth: 80%;\r\n}\r\n#site-logo {\r\n\tmargin-top: 0;\r\n\t@media (min-width: $desktop-small) {\r\n\t\tmargin-top: 0;\r\n\t}\r\n}\r\n\r\n@media (min-width: $desktop-small) {\r\n\t.jumbotron h2, .styled-h2 {\r\n\t\tfont-size: 2em;\r\n\t}\r\n\r\n\t.jumbotron h4 {\r\n\t    font-size: 1.22em;\r\n\t}\r\n}\r\n\r\n/* Buttons & links */\r\n\r\n.btn, .btn-default {\r\n    white-space: normal;\r\n}\r\n\r\n.jumbotron  .btn-default {\r\n  background-color: $yellow;\r\n  color: #484949;\r\n  font-family: inherit;\r\n  transition: all 0.3s;\r\n  border: 0;\r\n  border-radius: 0;\r\n  &:hover {\r\n   \tbackground-color: $dark-blue;\r\n\tcolor: #fff;\r\n  }\r\n}\r\n\r\n.jumbotron-hero .btn-default:hover {\r\n\tbackground-color: #fff;\r\n\tcolor: $dark-gray;\r\n  }  \r\n\r\n\r\n.styled-yellow {\r\n  background-color: $yellow;\r\n  color: #484949 !important;\r\n  font-family: inherit;\r\n  transition: all 0.3s;\r\n  border: 0;\r\n  border-radius: 0;\r\n  text-decoration: none !important;\r\n  &:hover {\r\n   \tbackground-color: darken($yellow, 5%);\r\n  }\r\n}\r\n\r\n.jumbotron .btn-primary {\r\n  background-color: $blue;\r\n  color: #fff;\r\n  font-family: inherit;\r\n  transition: all 0.3s;\r\n  border: 0;\r\n  border-radius: 0;\r\n  &:hover {\r\n   \tbackground-color: $dark-blue;\r\n  }\r\n}\r\n\r\n\r\n.styled-blue {\r\n  background-color: $blue;\r\n  color: #fff !important;\r\n  font-family: inherit;\r\n  transition: all 0.3s;\r\n  border: 0;\r\n  border-radius: 0;\r\n  text-decoration: none !important;\r\n  &:hover {\r\n   \tbackground-color: darken($blue, 10%);\r\n\t\tcolor: #fff;\r\n  }\r\n}\r\n\r\n\r\n.jumbotron .btn, .styled-yellow, .styled-blue {\r\n\tfont-size: 0.9375em;\r\n\ttext-transform: uppercase;\r\n\tpadding: 0.8em 1.5em;\r\n\tmin-width: 200px;\r\n\tmargin-bottom: 1em;\r\n\tletter-spacing: 0.08em;\r\n\tfont-weight: normal;\r\n}\r\n\r\n.jumbotron .text-link {\r\n    text-transform: uppercase;\r\n    font-weight: bold;\r\n    border-bottom: 1px $blue solid;\r\n    letter-spacing: 0.08em;\r\n}\r\n\r\n/* Hero Landing Page */\r\n\r\n.jumbotron {\r\n\tbackground-size: cover !important;\r\n\tbackground-repeat: no-repeat;\r\n\tbackground-position: center;\r\n\tcolor: inherit;\r\n\t// removed padding, to have consistent spacing to work with these templates\r\n\tpadding: 0 !important;\r\n}\r\n.hm {\r\n\tpadding: 0 0 !important;\r\n\tcolor: #fff !important;\r\n\tmargin: 0 !important;\r\n}\r\n.jumbotron-hero-lg {\r\n\tbackground-image: url(\"../../img/gps-hero.jpg\");\r\n}\r\n.jumbotron .text-indent-h1 h1 {\r\n\ttext-transform: uppercase;\r\n\t@media (max-width: $desktop-small) {\r\n\t\tfont-size: 2.5em;\r\n\t}\r\n\t@media (max-width: $mobile) {\r\n\t\tfont-size: 2em;\r\n\t}\r\n}\r\n.jumbotron .text-indent-h1 p {\r\n\tmargin-left: 6.75em;\r\n}\r\n.jumbotron .text-indent-h1 a.btn {\r\n\tmargin-left: 7.2em;\r\n}\r\n.jumbotron .text-indent-h2 p {\r\n\tmargin-left: 3.6em;\r\n}\r\n.jumbotron .text-indent-h2 a.btn {\r\n\tmargin-left: 4.4em;\r\n}\r\n.jumbotron .text-indent-h1 p, .jumbotron  .text-indent-h2 p {\r\n\twidth: 19em;\r\n}\r\n.jumbotron .text-indent h1 span {\r\n\tmargin-left: 1.65em;\r\n}\r\n.jumbotron-hero .text-indent h1, .jumbotron-hero .text-indent h2, .jumbotron-hero .text-indent h3, .jumbotron-image-bg .text-indent h1, .jumbotron-image-bg .text-indent h2, .jumbotron-image-bg .text-indent h3 {\r\n\ttext-shadow: 0px 0px 50px rgba(0, 0, 0, 0.75);\r\n}\r\n.jumbotron-hero .text-indent p , .jumbotron-image-bg .text-indent p {\r\n  text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.75);\r\n}\r\n\r\n.jumbotron {\r\n\tmargin: 60px 0;\r\n}\r\n\r\n/* Text and CTA w/Full Height Image Left */\r\n\r\n.side-image-white {\r\n\tbackground-color: #fff;\r\n}\r\n.jumbotron p {\r\n\tmargin-bottom: 15px;\r\n\tfont-size: 1em;\r\n}\r\n\r\n.embed-video {\r\n\tmargin: 23px 0;\r\n    position: relative;\r\n    padding-bottom: 51.10%; /* - 16:9 aspect ratio (most common) */\r\n    padding-top: 30px;\r\n    height: 0;\r\n    overflow: hidden;\r\n}\r\n\r\n.embed-video iframe,\r\n.embed-video object,\r\n.embed-video embed {\r\n    border: 0;\r\n    position: absolute;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n}\r\n\r\n/* News with Images */\r\n\r\n.jumbotron-news {\r\n\tbackground: none !important;\r\n\r\n\t.panel-heading {\r\n\t    padding: 10px 30px;\r\n\t}\r\n\r\n}\r\n\r\n.jumbotron-news h2 {\r\n    margin-bottom: 1em;\r\n    margin-top: 0;\r\n    text-transform: uppercase;\r\n    font-weight: bold;\r\n}\r\n\r\n.no-gutter {\r\n    padding-left: 0;\r\n    padding-right: 0;\r\n}\r\n\r\n.jumbotron .panel {border-radius: 0 !important;}\r\n\r\n\r\n.jumbotron-news .panel.panel-default {\r\n    border: 1px solid #f2f2f2;\r\n    background-color: #f5f5f5;\r\n\r\n\t\timg {\r\n    \twidth: 100%;\r\n\t\t}\r\n\r\n}\r\n.jumbotron-news .panel.panel-default .panel-heading {\r\n    background-color: #f5f5f5;\r\n    border: none;\r\n}\r\n.panel-default>.panel-heading {\r\n    color: #333;\r\n}\r\n.jumbotron-news .panel .panel-news-date {\r\n    text-transform: uppercase;\r\n    color: #747678;\r\n    font-size: 0.85em;\r\n    margin-bottom: 0.25em;\r\n    margin-top: 1em;\r\n}\r\n.jumbotron-news .panel .panel-news-title {\r\n    text-transform: none;\r\n    margin-top: 0;\r\n}\r\n.jumbotron-news .panel.panel-default .panel-body {\r\n    padding-top: 0;\r\n    padding-right: 2em;\r\n}\r\n\r\n\r\n@media (min-width: $desktop-small) {\r\n\t.jumbotron-news .panel.panel-default .panel-heading {\r\n\t    min-height: 135px;\r\n\t}\r\n}\r\n\r\n\r\n/* Callout Image Small Inset */\r\n\r\n.jumbotron-callout-image-small-inset {\r\n\tbackground-image: url(\"../img/callout-content-two-bg.jpg\");\r\n\tbackground-position: center center;\r\n\tbackground-size: cover;\r\n\tpadding: 48px 0 !important;\r\n\tborder-radius: 0 !important;\r\n\th2, h3, p, a {\r\n\t\tcolor: #484949;\r\n\t}\r\n\t.panel {\r\n\t\tmargin: 0 15px;\r\n\t}\r\n\t.panel.panel-default .panel-body {\r\n\t\tpadding: 1em 2em;\r\n\t}\r\n\t.btn-default:hover {\r\n\t\tbackground-color: $dark-blue;\r\n\t\tcolor: #fff;\r\n\t}\r\n}\r\n\r\n/* Callout Content One */\r\n\r\n.jumbotron-callout-content-one {\r\n\tbackground-color: $blue;\r\n\tbackground-image: url(\"../img/bg-dark-blue-trident-full.png\");\r\n  \tbackground-position: center;\r\n\tcolor: #fff;\r\n\tpadding: 30px 0 !important;\r\n\tborder-radius: 0 !important;\r\n\th2, h3, h4, h5, h6, p, li, a:hover {color: #fff;}\r\n\r\n\ta {color: #FFF; text-decoration: underline !important;}\r\n\r\n\ta:hover {color: #FFF; text-decoration: underline !important;}\r\n\r\n\ta.btn {text-decoration: none !important;}\r\n\r\n\ta.btn:hover {text-decoration:none;}\r\n\r\n\t.panel {\r\n\t\tbackground-color: transparent !important;\r\n\t\tmargin: 0 15px 20px 15px;\r\n\t\tbox-shadow: none;\r\n\t\tborder: 0;\r\n\t}\r\n\t.panel.panel-primary .panel-body {\r\n\t\tpadding: 0em 1em ;\r\n\t}\r\n\t.panel.panel-primary .panel-body p {\r\n\t\tfont-size: 1.125em;\r\n\t\tcolor: #fff;\r\n\t}\r\n\r\n\t.cc-yellow-trident {\r\n\t\tbackground-image: url(\"../img/bg-dark-blue-trident-full.png\");\r\n\t}\r\n\r\n\t\r\n\r\n\t@media (min-width: 992px) {\r\n\t\th2 {\r\n\t\t\tmargin-left: 50px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.cc-yellow-trident {\r\n\tcolor: $darker-gray;\r\n\tbackground-color: #f5f5f5;\r\n\tbackground-image: url(\"../img/bg-yellow-trident-full.png\");\r\n\r\n\th2, h3, h4, h5, h6, p, li, a:hover {color: $darker-gray;}\r\n\r\n\t.panel.panel-primary .panel-body p {\r\n\t\tcolor: $darker-gray;\r\n\t}\r\n\ta {color: $darker-gray; text-decoration: underline !important;}\r\n\r\n\ta:hover {color: $darker-gray; text-decoration: underline !important;}\r\n}\r\n\r\n.cc-dark-blue-trident {\r\n\tbackground-color: #182b49;\r\n\tbackground-image: url(\"../img/bg-white-trident-full.png\");\r\n}\r\n\r\n.cc-dark-blue-library {\r\n\tbackground-color: #182b49;\r\n\tbackground-image: url(\"../img/dark-blue-library.png\");\r\n}\r\n\r\n.cc-blue-library-light {\r\n\tbackground-image: url(\"../img/dark-blue-library.png\");\r\n}\r\n\r\n.cc-custom-background {\r\n\tbackground-size:cover;\r\n}\r\n\r\n/* Callout Content Two */\r\n\r\n.jumbotron-callout-content-two {\r\n\tbackground-image: url(\"../img/callout-content-two-bg.jpg\");\r\n\tbackground-position: center center;\r\n\tbackground-size: cover;\r\n\tpadding: 48px 0 !important;\r\n\tborder-radius: 0 !important;\r\n\r\n\t\t.panel {\r\n\t\t\tborder: none;\r\n\t\t}\r\n\t\t.panel.panel-primary {\r\n\t\t\tbackground-color: rgba(0,106,150,0.85);\r\n\t\t}\r\n\t\t.panel.panel-primary .panel-body {\r\n\t\t\tpadding: 1em 2em;\r\n\t\t}\r\n\t\t.panel.panel-primary .panel-body .btn {\r\n\t\t\tmargin-bottom: 0;\r\n\t\t}\r\n\t\t.panel.panel-primary .text-link {\r\n\t\t\tcolor: #fff;\r\n\t\t}\r\n\t\t.panel.panel-primary .text-right {\r\n\t\t\tmargin-bottom: 0.25em;\r\n\t\t}\r\n\t\t.panel-primary .text-link {\r\n\t\t\t\tborder-bottom: 1px #fff solid;\r\n\t\t}\r\n\r\n\r\n}\r\n.jumbotron-callout-content-two h2, .jumbotron-callout-content-two h3, .jumbotron-callout-content-two p {\r\n\tcolor: #fff;\r\n}\r\n\r\n.cta-two-three p {\r\n\tcolor: #fff !important;\r\n}\r\n\r\n.ct4-light-bg {\r\n\th2 {\r\n\r\n\t\tcolor: #484949 !important;\r\n\r\n\t } \r\n\t \r\n\t p {\r\n\t\tcolor: #333;\r\n\t }\r\n\t\r\n}\r\n\r\n.panel-darker {\r\n\tbackground-color: #00629B !important;\r\n}\r\n\r\n.text-indent h2 span, .text-indent .h2 span {\r\n    margin-left: 2em;\r\n}\r\n\r\n\r\n/* Jumbotron full-width */\r\n\r\n.jumbotron-full-width {\r\n    background-image: url(\"../img/bg-light-yellow-trident.png\");\r\n    background-position: top right;\r\n    background-color: #f5f5f5;\r\n\t\tborder-radius: 0 !important;\r\n    padding: 2em !important;\r\n}\r\n\r\n.jumbotron-full-width-ni {\r\n    background-color: #f5f5f5;\r\n\t\tborder-radius: 0 !important;\r\n    padding: 2em !important;\r\n\r\n\t\th2{\r\n\t\t\tmargin: 0 0 30px 0;\r\n\t\t}\r\n}\r\n","/*******************************************************************\nFLEXSLIDER\n************************/\n\n.flexslider {\n\tborder: 0;\n\tborder-radius: 0;\n\tmargin-bottom: 1em;\n\twidth: 100%;\n\t-webkit-box-shadow: none;\n\t-moz-box-shadow: none;\n\t-o-box-shadow: none;\n\tbox-shadow: none;\n\n\ta {\n\t\tcolor: #fff;\n\t\t-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n\t}\n\n\t.slides li {\n\t\tmargin: 0;\n\t}\n\t.flex-control-nav {\n\t\tfloat: right;\n\t\tright: 32px;\n\t\tbottom: 10px;\n\t\theight: 12px;\n\t\twidth: auto;\n\t\tz-index: 5;\n\n\t\tli {\n\t\t\tvertical-align: top;\n\t\t\tmargin: 0 0 0 5px;\n\n\t\t\t/* shared paging, pause and play control styles */\n\t\t\ta {\n\t\t\t\tborder: 1px solid #016691;\n\t\t\t\tcursor: pointer;\n\t\t\t\theight: 10px;\n\t\t\t\tmargin-left: 8px;\n\t\t\t\ttext-indent: -9999px;\n\t\t\t\twidth: 20px;\n\t\t\t}\n\n\t\t\t/* paging control */\n\t\t\ta {\n\t\t\t\tbackground: #bed4e7;\n\t\t\t\t-webkit-border-radius: 0px;\n\t\t\t\t-moz-border-radius: 0px;\n\t\t\t\t-o-border-radius: 0px;\n\t\t\t\tborder-radius: 0px;\n\t\t\t\t-webkit-box-shadow: none;\n\t\t\t\t-moz-box-shadow: none;\n\t\t\t\t-o-box-shadow: none;\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n\t\t\ta.flex-active {\n\t\t\t\tbackground: #eb8626;\n\t\t\t\tborder: 1px solid #c15f01;\n\t\t\t\tcursor: default;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* pause and play control */\n\n\t.flex-pauseplay a {\n\t\tborder: 0;\n\t\tdisplay: block;\n\t\theight: 10px;\n\t\twidth: 20px;\n\t\tposition: static;\n\t\ttext-indent: -9999px;\n\t}\n\n\t.flex-pauseplay a.flex-pause {\n\t\tbackground-position: 6px -248px;\n\t}\n\n\t.flex-pauseplay a.flex-play {\n\t\tbackground-position: 8px -232px;\n\t}\n\n\t/* direction control */\n\t.flex-direction-nav li a {\n\t\tbackground: #000;\n\t\tbackground: rgba(0, 0, 0, 0.3);\n\t\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c000000, endColorstr=#4c000000);\n\t\t-webkit-border-radius: 12px;\n\t\t-moz-border-radius: 12px;\n\t\tborder-radius: 12px;\n\t\ttext-indent: 0;\n\t\ttext-align: center;\n\t\tmargin: 0;\n\t\ttop: 30%;\n\t\theight: 24px;\n\t\twidth: 24px;\n\t\topacity: .8\n\t}\n\n\t.flex-direction-nav li a:hover {\n\t\ttext-decoration: none;\n\t}\n\n\t.flex-direction-nav li a.flex-prev {\n\t\tleft: 10px;\n\t}\n\n\t.flex-direction-nav li a.flex-next {\n\t\tright: 10px;\n\t}\n\n\t.flex-direction-nav a:before {\n\t\tcontent: '';\n\t}\n\n\t.flex-direction-nav a.flex-next:before {\n\t\tcontent: '';\n\t}\n\n\t.flex-controls {\n\t\theight: 37px;\n\t\tz-index: 99;\n\n\t\t.flex-pauseplay {\n\t\t\tbottom: 10px;\n\t\t\tright: 5px;\n\t\t\tposition: absolute;\n\t\t\tz-index: 10;\n\t\t}\n\t}\n}\n/* Caption style */\n/* IE rgba() hack */\n\n.flex-caption {\n\tbackground: none;\n\t-ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);\n\tfilter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);\n\tzoom: 1;\n}\n\n.flex-caption {\n\twidth: 100%;\n\tpadding: 2%;\n\tmargin: 0;\n\tposition: absolute;\n\tleft: 0;\n\tbottom: 0;\n\tbackground: rgba(0, 0, 0, .3);\n\tcolor: #fff;\n\ttext-shadow: 0 -1px 0 rgba(0, 0, 0, .3);\n\tfont-size: 14px;\n\tline-height: 18px;\n\n\ta {\n\t\t-webkit-tap-highlight-color: rgba(88, 166, 203, 0.6);\n\t}\n}\n\n/* control container */\n\n\n/* alternative theme */\n.flexslider.alt .flex-direction-nav li a,\n.flexslider.alt .flex-caption {\n\tbackground: #0B638B;\n\tbackground: rgba(11, 99, 139, 0.8);\n\tfilter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4);\n\tzoom: 1;\n}\n\n/*******************************************************************\nAlerts\n************************/\n\n.alert-success:before {\n\n}\n\n/*******************************************************************\nBreadcrumbs\n************************/\n\n.breadcrumb {\n\tbackground: transparent;\n}\n\n/*******************************************************************\nKitchen Sink\n************************/\n\n.bs-example {\n    margin-bottom: 10px;\n}\n","/**********************************************************************\n * CSS Styling for the drawer widget.\n */\n.drawer-wrapper {\n\tmargin-bottom: 1em;\n\tclear: both;\n}\n\n.drawer {\n\t//border-bottom: 1px solid #ccc;\n}\n\n/* header */\n.drawer h2 {\n\t//border-top: 1px solid #ccc;\n\ttext-transform: none;\n\tfont-weight: normal;\n\tfont-size: 20px;\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n\tpadding: .1em 0;\n\tzoom: 1;\n}\n\n/* default state */\n.drawer h2 a {\n\tbackground-position: 5px  12px;\n\tdisplay: block;\n\tpadding: 10px 0 10px 30px;\n\ttext-decoration: none;\n\tcolor: #fff;\n\tbackground-color: $blue;\n\t&:hover {\n\t\tbackground-color: darken($blue, 10%);\n\t}\n}\n\n/* ie7 hack */\n*:first-child+html .drawer h2 a {\n\tdisplay: inline-block;\n}\n\n/* expanded state */\n.drawer h2.expand {\n\t//background-color: $blue;\n}\n\n.drawer h2.expand a {\n\tbackground-position: 5px -86px;\n\tpadding: 10px 0 10px 30px;\n\tcolor: #fff;\n\tbackground-color: darken($blue, 10%);\n}\n\n/* hover state */\n.drawer h2:hover,.drawer h2:active {\n\tbackground-color: transparent;\n\tcursor: pointer;\n\tcolor: #fff;\n}\n\n.drawer h2.expand:hover,.drawer h2.expand:active {\n\t//background: $blue;\n}\n\n/* content background */\n.drawer > div,\n.drawer > article {\n\tpadding: 1em 2em;\n}\n\n.drawer > div.cols_wrapper {\n\tpadding: 1em 0;\n}\n\n/* toggle links */\n.drawer-toggle {\n\tfont-size: 90%;\n\tpadding: .5em 0;\n}\n\n.drawer-toggle a {\n\tcolor: #666;\n}\n\n.drawer-toggle a:hover,.drawer-toggle a:active {\n\tcolor: #016691;\n}\n\n.drawer-toggle a {\n\tbackground-position: 0 -215px;\n\tpadding-left: 16px;\n}\n\n.drawer-toggle a.expand {\n\tbackground-position: 0 -200px;\n}\n\n/* light theme */\n.drawer-wrapper .drawer.light-theme {\n\t> div {\n\t\tmargin-bottom: 16px;\n\t\tborder-left: 1px solid #e3e3e3;\n\t\tborder-right: 1px solid #e3e3e3;\n\t\tborder-bottom: 1px solid #e3e3e3;\n\t\tbackground-color: #fcfcfc;\n\t\tpadding: 0.5em 70px 0em 1em;\n\t}\n\n\th2 {\n\t\tfont-weight: normal;\n\t\tfont-size: 18px;\n\t\tline-height: 22px;\n\t\tmargin-bottom: 16px;\n\t\tpadding-bottom: 0;\n\t\tbackground-color: #e8e8e8;\n\t\tposition: relative;\n\t}\n\n\th2:after {\n\t\tcontent: \" \";\n\t\tposition: absolute;\n\t\tright: 1.3em;\n\t\ttop: 1.3em;\n\t\tdisplay: block;\n\t\twidth: 30px;\n\t\theight: 25px;\n\t\tbackground: url(../img/expand.svg) no-repeat;\n\t}\n\n\th2.expand {\n\t\tmargin-bottom: 0;\n\t}\n\n\th2.expand:after {\n\t\tcontent: \" \";\n\t\tposition: absolute;\n\t\tright: 1.3em;\n\t\ttop: 1.3em;\n\t\tdisplay: block;\n\t\twidth: 30px;\n\t\theight: 25px;\n\t\tbackground: url(../img/collapse.svg) no-repeat;\n\t}\n\n\th2 a {\n\t\tfont-weight: bold;\n\t\tbackground-color: #e8e8e8;\n\t\tcolor: #333;\n\t\tline-height: 1.8em;\n\t\tbackground: none;\n\t\tpadding: 1em 70px 1em 1em;\n\t}\n\n\th2 a:hover {\n\t\tbackground-color: #e8e8e8;\n\t}\n}","@media print {\r\n  /* removes ucsd logo and other background images (glyphicons) */\r\n  html, main, footer *,\r\n  .layout-title *, {\r\n    background-color: transparent !important;\r\n    background-image: none !important;\r\n    overflow: visible !important;\r\n  }\r\n\r\n  /* title and header font color should be black (readable) */\r\n  .title-header,\r\n  h1,h2,h3,h4,h5,h6,p\r\n  {\r\n    color: #000;\r\n  }\r\n\r\n  /* hide login/ emergency/ nav/ search/ footer links/ btn-nav styles */\r\n  #uc-emergency, .layout-login, nav, .search, .footer-links, .btn-nav {\r\n    display: none;\r\n  }\r\n\r\n  main {\r\n    width: 99.99% !important;\r\n\r\n    section {\r\n      left: 0 !important;\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      width: 100% !important;\r\n    }\r\n  }\r\n\r\n  /* reset horizontal ruler */\r\n  hr {\r\n    background-color: #ccc !important;\r\n  }\r\n\r\n  .main-content-nav {\r\n    background: none;\r\n  }\r\n\r\n  a[href]:after {\r\n      content: none !important;\r\n    }\r\n\r\n}\r\n"]}
\ No newline at end of file
diff --git a/app/css/bootstrap.css b/app/css/bootstrap.css
new file mode 100755
index 0000000..b55f28f
--- /dev/null
+++ b/app/css/bootstrap.css
@@ -0,0 +1,6218 @@
+@charset "UTF-8";
+/* BREAKPOINTS */
+/* COLORS */
+/* LAYOUT VALUES */
+/* FONTS */
+/* MIXINS */
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+  font-family: sans-serif;
+  -ms-text-size-adjust: 100%;
+  -webkit-text-size-adjust: 100%; }
+
+body {
+  margin: 0; }
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+  display: block; }
+
+audio,
+canvas,
+progress,
+video {
+  display: inline-block;
+  vertical-align: baseline; }
+
+audio:not([controls]) {
+  display: none;
+  height: 0; }
+
+[hidden],
+template {
+  display: none; }
+
+a {
+  background-color: transparent; }
+
+a:active,
+a:hover {
+  outline: 0; }
+
+abbr[title] {
+  border-bottom: 1px dotted; }
+
+b,
+strong {
+  font-weight: bold; }
+
+dfn {
+  font-style: italic; }
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0; }
+
+mark {
+  background: #ff0;
+  color: #000; }
+
+small {
+  font-size: 80%; }
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline; }
+
+sup {
+  top: -0.5em; }
+
+sub {
+  bottom: -0.25em; }
+
+img {
+  border: 0; }
+
+svg:not(:root) {
+  overflow: hidden; }
+
+figure {
+  margin: 1em 40px; }
+
+hr {
+  box-sizing: content-box;
+  height: 0; }
+
+pre {
+  overflow: auto; }
+
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em; }
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  color: inherit;
+  font: inherit;
+  margin: 0; }
+
+button {
+  overflow: visible; }
+
+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; }
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0; }
+
+input {
+  line-height: normal; }
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box;
+  padding: 0; }
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+  height: auto; }
+
+input[type="search"] {
+  -webkit-appearance: textfield;
+  box-sizing: content-box; }
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none; }
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em; }
+
+legend {
+  border: 0;
+  padding: 0; }
+
+textarea {
+  overflow: auto; }
+
+optgroup {
+  font-weight: bold; }
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0; }
+
+td,
+th {
+  padding: 0; }
+
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+  *,
+  *:before,
+  *:after {
+    background: transparent !important;
+    color: #000 !important;
+    box-shadow: none !important;
+    text-shadow: none !important; }
+  a,
+  a:visited {
+    text-decoration: underline; }
+  a[href]:after {
+    content: " (" attr(href) ")"; }
+  abbr[title]:after {
+    content: " (" attr(title) ")"; }
+  a[href^="#"]:after,
+  a[href^="javascript:"]: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; }
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3; }
+  h2,
+  h3 {
+    page-break-after: avoid; }
+  .navbar {
+    display: none; }
+  .btn > .caret,
+  .dropup > .btn > .caret {
+    border-top-color: #000 !important; }
+  .label {
+    border: 1px solid #000; }
+  .table {
+    border-collapse: collapse !important; }
+  .table td,
+  .table th {
+    background-color: #fff !important; }
+  .table-bordered th,
+  .table-bordered td {
+    border: 1px solid #ddd !important; } }
+
+@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.woff2") format("woff2"), 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: normal;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale; }
+
+.glyphicon-asterisk:before {
+  content: "\002a"; }
+
+.glyphicon-plus:before {
+  content: "\002b"; }
+
+.glyphicon-euro:before,
+.glyphicon-eur: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"; }
+
+.glyphicon-cd:before {
+  content: "\e201"; }
+
+.glyphicon-save-file:before {
+  content: "\e202"; }
+
+.glyphicon-open-file:before {
+  content: "\e203"; }
+
+.glyphicon-level-up:before {
+  content: "\e204"; }
+
+.glyphicon-copy:before {
+  content: "\e205"; }
+
+.glyphicon-paste:before {
+  content: "\e206"; }
+
+.glyphicon-alert:before {
+  content: "\e209"; }
+
+.glyphicon-equalizer:before {
+  content: "\e210"; }
+
+.glyphicon-king:before {
+  content: "\e211"; }
+
+.glyphicon-queen:before {
+  content: "\e212"; }
+
+.glyphicon-pawn:before {
+  content: "\e213"; }
+
+.glyphicon-bishop:before {
+  content: "\e214"; }
+
+.glyphicon-knight:before {
+  content: "\e215"; }
+
+.glyphicon-baby-formula:before {
+  content: "\e216"; }
+
+.glyphicon-tent:before {
+  content: "\26fa"; }
+
+.glyphicon-blackboard:before {
+  content: "\e218"; }
+
+.glyphicon-bed:before {
+  content: "\e219"; }
+
+.glyphicon-apple:before {
+  content: "\f8ff"; }
+
+.glyphicon-erase:before {
+  content: "\e221"; }
+
+.glyphicon-hourglass:before {
+  content: "\231b"; }
+
+.glyphicon-lamp:before {
+  content: "\e223"; }
+
+.glyphicon-duplicate:before {
+  content: "\e224"; }
+
+.glyphicon-piggy-bank:before {
+  content: "\e225"; }
+
+.glyphicon-scissors:before {
+  content: "\e226"; }
+
+.glyphicon-bitcoin:before {
+  content: "\e227"; }
+
+.glyphicon-btc:before {
+  content: "\e227"; }
+
+.glyphicon-xbt:before {
+  content: "\e227"; }
+
+.glyphicon-yen:before {
+  content: "\00a5"; }
+
+.glyphicon-jpy:before {
+  content: "\00a5"; }
+
+.glyphicon-ruble:before {
+  content: "\20bd"; }
+
+.glyphicon-rub:before {
+  content: "\20bd"; }
+
+.glyphicon-scale:before {
+  content: "\e230"; }
+
+.glyphicon-ice-lolly:before {
+  content: "\e231"; }
+
+.glyphicon-ice-lolly-tasted:before {
+  content: "\e232"; }
+
+.glyphicon-education:before {
+  content: "\e233"; }
+
+.glyphicon-option-horizontal:before {
+  content: "\e234"; }
+
+.glyphicon-option-vertical:before {
+  content: "\e235"; }
+
+.glyphicon-menu-hamburger:before {
+  content: "\e236"; }
+
+.glyphicon-modal-window:before {
+  content: "\e237"; }
+
+.glyphicon-oil:before {
+  content: "\e238"; }
+
+.glyphicon-grain:before {
+  content: "\e239"; }
+
+.glyphicon-sunglasses:before {
+  content: "\e240"; }
+
+.glyphicon-text-size:before {
+  content: "\e241"; }
+
+.glyphicon-text-color:before {
+  content: "\e242"; }
+
+.glyphicon-text-background:before {
+  content: "\e243"; }
+
+.glyphicon-object-align-top:before {
+  content: "\e244"; }
+
+.glyphicon-object-align-bottom:before {
+  content: "\e245"; }
+
+.glyphicon-object-align-horizontal:before {
+  content: "\e246"; }
+
+.glyphicon-object-align-left:before {
+  content: "\e247"; }
+
+.glyphicon-object-align-vertical:before {
+  content: "\e248"; }
+
+.glyphicon-object-align-right:before {
+  content: "\e249"; }
+
+.glyphicon-triangle-right:before {
+  content: "\e250"; }
+
+.glyphicon-triangle-left:before {
+  content: "\e251"; }
+
+.glyphicon-triangle-bottom:before {
+  content: "\e252"; }
+
+.glyphicon-triangle-top:before {
+  content: "\e253"; }
+
+.glyphicon-console:before {
+  content: "\e254"; }
+
+.glyphicon-superscript:before {
+  content: "\e255"; }
+
+.glyphicon-subscript:before {
+  content: "\e256"; }
+
+.glyphicon-menu-left:before {
+  content: "\e257"; }
+
+.glyphicon-menu-right:before {
+  content: "\e258"; }
+
+.glyphicon-menu-down:before {
+  content: "\e259"; }
+
+.glyphicon-menu-up:before {
+  content: "\e260"; }
+
+* {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+*:before,
+*:after {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box; }
+
+html {
+  font-size: 10px;
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
+
+body {
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 14px;
+  line-height: 1.42857;
+  color: #333333;
+  background-color: #fff; }
+
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit; }
+
+a {
+  color: #337ab7;
+  text-decoration: none; }
+
+a:hover, a:focus {
+  color: #23527c;
+  text-decoration: underline; }
+
+a:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px; }
+
+figure {
+  margin: 0; }
+
+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.42857;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: all 0.2s ease-in-out;
+  -o-transition: all 0.2s ease-in-out;
+  transition: all 0.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 #eeeeee; }
+
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  margin: -1px;
+  padding: 0;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0; }
+
+.sr-only-focusable:active, .sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto; }
+
+[role="button"] {
+  cursor: pointer; }
+
+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,
+h1 .small, h2 small,
+h2 .small, h3 small,
+h3 .small, h4 small,
+h4 .small, h5 small,
+h5 .small, h6 small,
+h6 .small,
+.h1 small,
+.h1 .small, .h2 small,
+.h2 .small, .h3 small,
+.h3 .small, .h4 small,
+.h4 .small, .h5 small,
+.h5 .small, .h6 small,
+.h6 .small {
+  font-weight: normal;
+  line-height: 1;
+  color: #777777; }
+
+h1, .h1,
+h2, .h2,
+h3, .h3 {
+  margin-top: 20px;
+  margin-bottom: 10px; }
+
+h1 small,
+h1 .small, .h1 small,
+.h1 .small,
+h2 small,
+h2 .small, .h2 small,
+.h2 .small,
+h3 small,
+h3 .small, .h3 small,
+.h3 .small {
+  font-size: 65%; }
+
+h4, .h4,
+h5, .h5,
+h6, .h6 {
+  margin-top: 10px;
+  margin-bottom: 10px; }
+
+h4 small,
+h4 .small, .h4 small,
+.h4 .small,
+h5 small,
+h5 .small, .h5 small,
+.h5 .small,
+h6 small,
+h6 .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: 300;
+  line-height: 1.4; }
+
+@media (min-width: 768px) {
+  .lead {
+    font-size: 21px; } }
+
+small,
+.small {
+  font-size: 85%; }
+
+mark,
+.mark {
+  background-color: #fcf8e3;
+  padding: .2em; }
+
+.text-left {
+  text-align: left; }
+
+.text-right {
+  text-align: right; }
+
+.text-center {
+  text-align: center; }
+
+.text-justify {
+  text-align: justify; }
+
+.text-nowrap {
+  white-space: nowrap; }
+
+.text-lowercase {
+  text-transform: lowercase; }
+
+.text-uppercase, .initialism {
+  text-transform: uppercase; }
+
+.text-capitalize {
+  text-transform: capitalize; }
+
+.text-muted {
+  color: #777777; }
+
+.text-primary {
+  color: #337ab7; }
+
+a.text-primary:hover,
+a.text-primary:focus {
+  color: #286090; }
+
+.text-success {
+  color: #3c763d; }
+
+a.text-success:hover,
+a.text-success:focus {
+  color: #2b542c; }
+
+.text-info {
+  color: #31708f; }
+
+a.text-info:hover,
+a.text-info:focus {
+  color: #245269; }
+
+.text-warning {
+  color: #8a6d3b; }
+
+a.text-warning:hover,
+a.text-warning:focus {
+  color: #66512c; }
+
+.text-danger {
+  color: #a94442; }
+
+a.text-danger:hover,
+a.text-danger:focus {
+  color: #843534; }
+
+.bg-primary {
+  color: #fff; }
+
+.bg-primary {
+  background-color: #337ab7; }
+
+a.bg-primary:hover,
+a.bg-primary:focus {
+  background-color: #286090; }
+
+.bg-success {
+  background-color: #dff0d8; }
+
+a.bg-success:hover,
+a.bg-success:focus {
+  background-color: #c1e2b3; }
+
+.bg-info {
+  background-color: #d9edf7; }
+
+a.bg-info:hover,
+a.bg-info:focus {
+  background-color: #afd9ee; }
+
+.bg-warning {
+  background-color: #fcf8e3; }
+
+a.bg-warning:hover,
+a.bg-warning:focus {
+  background-color: #f7ecb5; }
+
+.bg-danger {
+  background-color: #f2dede; }
+
+a.bg-danger:hover,
+a.bg-danger:focus {
+  background-color: #e4b9b9; }
+
+.page-header {
+  padding-bottom: 9px;
+  margin: 40px 0 20px;
+  border-bottom: 1px solid #eeeeee; }
+
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: 10px; }
+
+ul ul,
+ul ol,
+ol ul,
+ol ol {
+  margin-bottom: 0; }
+
+.list-unstyled {
+  padding-left: 0;
+  list-style: none; }
+
+.list-inline {
+  padding-left: 0;
+  list-style: none;
+  margin-left: -5px; }
+
+.list-inline > li {
+  display: inline-block;
+  padding-left: 5px;
+  padding-right: 5px; }
+
+dl {
+  margin-top: 0;
+  margin-bottom: 20px; }
+
+dt,
+dd {
+  line-height: 1.42857; }
+
+dt {
+  font-weight: bold; }
+
+dd {
+  margin-left: 0; }
+
+.dl-horizontal dd:before, .dl-horizontal dd:after {
+  content: " ";
+  display: table; }
+
+.dl-horizontal dd:after {
+  clear: both; }
+
+@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 #777777; }
+
+.initialism {
+  font-size: 90%; }
+
+blockquote {
+  padding: 10px 20px;
+  margin: 0 0 20px;
+  font-size: 17.5px;
+  border-left: 5px solid #eeeeee; }
+
+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.42857;
+  color: #777777; }
+
+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 #eeeeee;
+  border-left: 0;
+  text-align: right; }
+
+.blockquote-reverse footer:before,
+.blockquote-reverse small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right footer:before,
+blockquote.pull-right small:before,
+blockquote.pull-right .small:before {
+  content: ''; }
+
+.blockquote-reverse footer:after,
+.blockquote-reverse small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right footer:after,
+blockquote.pull-right small:after,
+blockquote.pull-right .small:after {
+  content: '\00A0 \2014'; }
+
+address {
+  margin-bottom: 20px;
+  font-style: normal;
+  line-height: 1.42857; }
+
+code,
+kbd,
+pre,
+samp {
+  font-family: Menlo, Monaco, Consolas, "Courier New", monospace; }
+
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: #c7254e;
+  background-color: #f9f2f4;
+  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, 0.25); }
+
+kbd kbd {
+  padding: 0;
+  font-size: 100%;
+  font-weight: bold;
+  box-shadow: none; }
+
+pre {
+  display: block;
+  padding: 9.5px;
+  margin: 0 0 10px;
+  font-size: 13px;
+  line-height: 1.42857;
+  word-break: break-all;
+  word-wrap: break-word;
+  color: #333333;
+  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; }
+
+.container:before, .container:after {
+  content: " ";
+  display: table; }
+
+.container:after {
+  clear: both; }
+
+@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; }
+
+.container-fluid:before, .container-fluid:after {
+  content: " ";
+  display: table; }
+
+.container-fluid:after {
+  clear: both; }
+
+.row {
+  margin-left: -15px;
+  margin-right: -15px; }
+
+.row:before, .row:after {
+  content: " ";
+  display: table; }
+
+.row:after {
+  clear: both; }
+
+.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-1 {
+  width: 8.33333%; }
+
+.col-xs-2 {
+  width: 16.66667%; }
+
+.col-xs-3 {
+  width: 25%; }
+
+.col-xs-4 {
+  width: 33.33333%; }
+
+.col-xs-5 {
+  width: 41.66667%; }
+
+.col-xs-6 {
+  width: 50%; }
+
+.col-xs-7 {
+  width: 58.33333%; }
+
+.col-xs-8 {
+  width: 66.66667%; }
+
+.col-xs-9 {
+  width: 75%; }
+
+.col-xs-10 {
+  width: 83.33333%; }
+
+.col-xs-11 {
+  width: 91.66667%; }
+
+.col-xs-12 {
+  width: 100%; }
+
+.col-xs-pull-0 {
+  right: auto; }
+
+.col-xs-pull-1 {
+  right: 8.33333%; }
+
+.col-xs-pull-2 {
+  right: 16.66667%; }
+
+.col-xs-pull-3 {
+  right: 25%; }
+
+.col-xs-pull-4 {
+  right: 33.33333%; }
+
+.col-xs-pull-5 {
+  right: 41.66667%; }
+
+.col-xs-pull-6 {
+  right: 50%; }
+
+.col-xs-pull-7 {
+  right: 58.33333%; }
+
+.col-xs-pull-8 {
+  right: 66.66667%; }
+
+.col-xs-pull-9 {
+  right: 75%; }
+
+.col-xs-pull-10 {
+  right: 83.33333%; }
+
+.col-xs-pull-11 {
+  right: 91.66667%; }
+
+.col-xs-pull-12 {
+  right: 100%; }
+
+.col-xs-push-0 {
+  left: auto; }
+
+.col-xs-push-1 {
+  left: 8.33333%; }
+
+.col-xs-push-2 {
+  left: 16.66667%; }
+
+.col-xs-push-3 {
+  left: 25%; }
+
+.col-xs-push-4 {
+  left: 33.33333%; }
+
+.col-xs-push-5 {
+  left: 41.66667%; }
+
+.col-xs-push-6 {
+  left: 50%; }
+
+.col-xs-push-7 {
+  left: 58.33333%; }
+
+.col-xs-push-8 {
+  left: 66.66667%; }
+
+.col-xs-push-9 {
+  left: 75%; }
+
+.col-xs-push-10 {
+  left: 83.33333%; }
+
+.col-xs-push-11 {
+  left: 91.66667%; }
+
+.col-xs-push-12 {
+  left: 100%; }
+
+.col-xs-offset-0 {
+  margin-left: 0%; }
+
+.col-xs-offset-1 {
+  margin-left: 8.33333%; }
+
+.col-xs-offset-2 {
+  margin-left: 16.66667%; }
+
+.col-xs-offset-3 {
+  margin-left: 25%; }
+
+.col-xs-offset-4 {
+  margin-left: 33.33333%; }
+
+.col-xs-offset-5 {
+  margin-left: 41.66667%; }
+
+.col-xs-offset-6 {
+  margin-left: 50%; }
+
+.col-xs-offset-7 {
+  margin-left: 58.33333%; }
+
+.col-xs-offset-8 {
+  margin-left: 66.66667%; }
+
+.col-xs-offset-9 {
+  margin-left: 75%; }
+
+.col-xs-offset-10 {
+  margin-left: 83.33333%; }
+
+.col-xs-offset-11 {
+  margin-left: 91.66667%; }
+
+.col-xs-offset-12 {
+  margin-left: 100%; }
+
+@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-1 {
+    width: 8.33333%; }
+  .col-sm-2 {
+    width: 16.66667%; }
+  .col-sm-3 {
+    width: 25%; }
+  .col-sm-4 {
+    width: 33.33333%; }
+  .col-sm-5 {
+    width: 41.66667%; }
+  .col-sm-6 {
+    width: 50%; }
+  .col-sm-7 {
+    width: 58.33333%; }
+  .col-sm-8 {
+    width: 66.66667%; }
+  .col-sm-9 {
+    width: 75%; }
+  .col-sm-10 {
+    width: 83.33333%; }
+  .col-sm-11 {
+    width: 91.66667%; }
+  .col-sm-12 {
+    width: 100%; }
+  .col-sm-pull-0 {
+    right: auto; }
+  .col-sm-pull-1 {
+    right: 8.33333%; }
+  .col-sm-pull-2 {
+    right: 16.66667%; }
+  .col-sm-pull-3 {
+    right: 25%; }
+  .col-sm-pull-4 {
+    right: 33.33333%; }
+  .col-sm-pull-5 {
+    right: 41.66667%; }
+  .col-sm-pull-6 {
+    right: 50%; }
+  .col-sm-pull-7 {
+    right: 58.33333%; }
+  .col-sm-pull-8 {
+    right: 66.66667%; }
+  .col-sm-pull-9 {
+    right: 75%; }
+  .col-sm-pull-10 {
+    right: 83.33333%; }
+  .col-sm-pull-11 {
+    right: 91.66667%; }
+  .col-sm-pull-12 {
+    right: 100%; }
+  .col-sm-push-0 {
+    left: auto; }
+  .col-sm-push-1 {
+    left: 8.33333%; }
+  .col-sm-push-2 {
+    left: 16.66667%; }
+  .col-sm-push-3 {
+    left: 25%; }
+  .col-sm-push-4 {
+    left: 33.33333%; }
+  .col-sm-push-5 {
+    left: 41.66667%; }
+  .col-sm-push-6 {
+    left: 50%; }
+  .col-sm-push-7 {
+    left: 58.33333%; }
+  .col-sm-push-8 {
+    left: 66.66667%; }
+  .col-sm-push-9 {
+    left: 75%; }
+  .col-sm-push-10 {
+    left: 83.33333%; }
+  .col-sm-push-11 {
+    left: 91.66667%; }
+  .col-sm-push-12 {
+    left: 100%; }
+  .col-sm-offset-0 {
+    margin-left: 0%; }
+  .col-sm-offset-1 {
+    margin-left: 8.33333%; }
+  .col-sm-offset-2 {
+    margin-left: 16.66667%; }
+  .col-sm-offset-3 {
+    margin-left: 25%; }
+  .col-sm-offset-4 {
+    margin-left: 33.33333%; }
+  .col-sm-offset-5 {
+    margin-left: 41.66667%; }
+  .col-sm-offset-6 {
+    margin-left: 50%; }
+  .col-sm-offset-7 {
+    margin-left: 58.33333%; }
+  .col-sm-offset-8 {
+    margin-left: 66.66667%; }
+  .col-sm-offset-9 {
+    margin-left: 75%; }
+  .col-sm-offset-10 {
+    margin-left: 83.33333%; }
+  .col-sm-offset-11 {
+    margin-left: 91.66667%; }
+  .col-sm-offset-12 {
+    margin-left: 100%; } }
+
+@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-1 {
+    width: 8.33333%; }
+  .col-md-2 {
+    width: 16.66667%; }
+  .col-md-3 {
+    width: 25%; }
+  .col-md-4 {
+    width: 33.33333%; }
+  .col-md-5 {
+    width: 41.66667%; }
+  .col-md-6 {
+    width: 50%; }
+  .col-md-7 {
+    width: 58.33333%; }
+  .col-md-8 {
+    width: 66.66667%; }
+  .col-md-9 {
+    width: 75%; }
+  .col-md-10 {
+    width: 83.33333%; }
+  .col-md-11 {
+    width: 91.66667%; }
+  .col-md-12 {
+    width: 100%; }
+  .col-md-pull-0 {
+    right: auto; }
+  .col-md-pull-1 {
+    right: 8.33333%; }
+  .col-md-pull-2 {
+    right: 16.66667%; }
+  .col-md-pull-3 {
+    right: 25%; }
+  .col-md-pull-4 {
+    right: 33.33333%; }
+  .col-md-pull-5 {
+    right: 41.66667%; }
+  .col-md-pull-6 {
+    right: 50%; }
+  .col-md-pull-7 {
+    right: 58.33333%; }
+  .col-md-pull-8 {
+    right: 66.66667%; }
+  .col-md-pull-9 {
+    right: 75%; }
+  .col-md-pull-10 {
+    right: 83.33333%; }
+  .col-md-pull-11 {
+    right: 91.66667%; }
+  .col-md-pull-12 {
+    right: 100%; }
+  .col-md-push-0 {
+    left: auto; }
+  .col-md-push-1 {
+    left: 8.33333%; }
+  .col-md-push-2 {
+    left: 16.66667%; }
+  .col-md-push-3 {
+    left: 25%; }
+  .col-md-push-4 {
+    left: 33.33333%; }
+  .col-md-push-5 {
+    left: 41.66667%; }
+  .col-md-push-6 {
+    left: 50%; }
+  .col-md-push-7 {
+    left: 58.33333%; }
+  .col-md-push-8 {
+    left: 66.66667%; }
+  .col-md-push-9 {
+    left: 75%; }
+  .col-md-push-10 {
+    left: 83.33333%; }
+  .col-md-push-11 {
+    left: 91.66667%; }
+  .col-md-push-12 {
+    left: 100%; }
+  .col-md-offset-0 {
+    margin-left: 0%; }
+  .col-md-offset-1 {
+    margin-left: 8.33333%; }
+  .col-md-offset-2 {
+    margin-left: 16.66667%; }
+  .col-md-offset-3 {
+    margin-left: 25%; }
+  .col-md-offset-4 {
+    margin-left: 33.33333%; }
+  .col-md-offset-5 {
+    margin-left: 41.66667%; }
+  .col-md-offset-6 {
+    margin-left: 50%; }
+  .col-md-offset-7 {
+    margin-left: 58.33333%; }
+  .col-md-offset-8 {
+    margin-left: 66.66667%; }
+  .col-md-offset-9 {
+    margin-left: 75%; }
+  .col-md-offset-10 {
+    margin-left: 83.33333%; }
+  .col-md-offset-11 {
+    margin-left: 91.66667%; }
+  .col-md-offset-12 {
+    margin-left: 100%; } }
+
+@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-1 {
+    width: 8.33333%; }
+  .col-lg-2 {
+    width: 16.66667%; }
+  .col-lg-3 {
+    width: 25%; }
+  .col-lg-4 {
+    width: 33.33333%; }
+  .col-lg-5 {
+    width: 41.66667%; }
+  .col-lg-6 {
+    width: 50%; }
+  .col-lg-7 {
+    width: 58.33333%; }
+  .col-lg-8 {
+    width: 66.66667%; }
+  .col-lg-9 {
+    width: 75%; }
+  .col-lg-10 {
+    width: 83.33333%; }
+  .col-lg-11 {
+    width: 91.66667%; }
+  .col-lg-12 {
+    width: 100%; }
+  .col-lg-pull-0 {
+    right: auto; }
+  .col-lg-pull-1 {
+    right: 8.33333%; }
+  .col-lg-pull-2 {
+    right: 16.66667%; }
+  .col-lg-pull-3 {
+    right: 25%; }
+  .col-lg-pull-4 {
+    right: 33.33333%; }
+  .col-lg-pull-5 {
+    right: 41.66667%; }
+  .col-lg-pull-6 {
+    right: 50%; }
+  .col-lg-pull-7 {
+    right: 58.33333%; }
+  .col-lg-pull-8 {
+    right: 66.66667%; }
+  .col-lg-pull-9 {
+    right: 75%; }
+  .col-lg-pull-10 {
+    right: 83.33333%; }
+  .col-lg-pull-11 {
+    right: 91.66667%; }
+  .col-lg-pull-12 {
+    right: 100%; }
+  .col-lg-push-0 {
+    left: auto; }
+  .col-lg-push-1 {
+    left: 8.33333%; }
+  .col-lg-push-2 {
+    left: 16.66667%; }
+  .col-lg-push-3 {
+    left: 25%; }
+  .col-lg-push-4 {
+    left: 33.33333%; }
+  .col-lg-push-5 {
+    left: 41.66667%; }
+  .col-lg-push-6 {
+    left: 50%; }
+  .col-lg-push-7 {
+    left: 58.33333%; }
+  .col-lg-push-8 {
+    left: 66.66667%; }
+  .col-lg-push-9 {
+    left: 75%; }
+  .col-lg-push-10 {
+    left: 83.33333%; }
+  .col-lg-push-11 {
+    left: 91.66667%; }
+  .col-lg-push-12 {
+    left: 100%; }
+  .col-lg-offset-0 {
+    margin-left: 0%; }
+  .col-lg-offset-1 {
+    margin-left: 8.33333%; }
+  .col-lg-offset-2 {
+    margin-left: 16.66667%; }
+  .col-lg-offset-3 {
+    margin-left: 25%; }
+  .col-lg-offset-4 {
+    margin-left: 33.33333%; }
+  .col-lg-offset-5 {
+    margin-left: 41.66667%; }
+  .col-lg-offset-6 {
+    margin-left: 50%; }
+  .col-lg-offset-7 {
+    margin-left: 58.33333%; }
+  .col-lg-offset-8 {
+    margin-left: 66.66667%; }
+  .col-lg-offset-9 {
+    margin-left: 75%; }
+  .col-lg-offset-10 {
+    margin-left: 83.33333%; }
+  .col-lg-offset-11 {
+    margin-left: 91.66667%; }
+  .col-lg-offset-12 {
+    margin-left: 100%; } }
+
+table {
+  background-color: transparent; }
+
+caption {
+  padding-top: 8px;
+  padding-bottom: 8px;
+  color: #777777;
+  text-align: left; }
+
+th {
+  text-align: left; }
+
+.table {
+  width: 100%;
+  max-width: 100%;
+  margin-bottom: 20px; }
+
+.table > thead > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > th,
+.table > tbody > tr > td,
+.table > tfoot > tr > th,
+.table > tfoot > tr > td {
+  padding: 8px;
+  line-height: 1.42857;
+  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 > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > th,
+.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 > thead > tr > td,
+.table-condensed > tbody > tr > th,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > th,
+.table-condensed > tfoot > tr > td {
+  padding: 5px; }
+
+.table-bordered {
+  border: 1px solid #ddd; }
+
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > th,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > th,
+.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-of-type(odd) {
+  background-color: #f9f9f9; }
+
+.table-hover > tbody > tr:hover {
+  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 > thead > tr > th.active,
+.table > thead > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr > td.active,
+.table > tbody > tr > th.active,
+.table > tbody > tr.active > td,
+.table > tbody > tr.active > th,
+.table > tfoot > tr > td.active,
+.table > tfoot > tr > th.active,
+.table > tfoot > tr.active > td,
+.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:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+  background-color: #e8e8e8; }
+
+.table > thead > tr > td.success,
+.table > thead > tr > th.success,
+.table > thead > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr > td.success,
+.table > tbody > tr > th.success,
+.table > tbody > tr.success > td,
+.table > tbody > tr.success > th,
+.table > tfoot > tr > td.success,
+.table > tfoot > tr > th.success,
+.table > tfoot > tr.success > td,
+.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:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+  background-color: #d0e9c6; }
+
+.table > thead > tr > td.info,
+.table > thead > tr > th.info,
+.table > thead > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr > td.info,
+.table > tbody > tr > th.info,
+.table > tbody > tr.info > td,
+.table > tbody > tr.info > th,
+.table > tfoot > tr > td.info,
+.table > tfoot > tr > th.info,
+.table > tfoot > tr.info > td,
+.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:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+  background-color: #c4e3f3; }
+
+.table > thead > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr > td.warning,
+.table > tbody > tr > th.warning,
+.table > tbody > tr.warning > td,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr > td.warning,
+.table > tfoot > tr > th.warning,
+.table > tfoot > tr.warning > td,
+.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:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+  background-color: #faf2cc; }
+
+.table > thead > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr > td.danger,
+.table > tbody > tr > th.danger,
+.table > tbody > tr.danger > td,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr > td.danger,
+.table > tfoot > tr > th.danger,
+.table > tfoot > tr.danger > td,
+.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:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+  background-color: #ebcccc; }
+
+.table-responsive {
+  overflow-x: auto;
+  min-height: 0.01%; }
+
+@media screen and (max-width: 767px) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    -ms-overflow-style: -ms-autohiding-scrollbar;
+    border: 1px solid #ddd; }
+  .table-responsive > .table {
+    margin-bottom: 0; }
+  .table-responsive > .table > thead > tr > th,
+  .table-responsive > .table > thead > tr > td,
+  .table-responsive > .table > tbody > tr > th,
+  .table-responsive > .table > tbody > tr > td,
+  .table-responsive > .table > tfoot > tr > th,
+  .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 > thead > tr > td:first-child,
+  .table-responsive > .table-bordered > tbody > tr > th:first-child,
+  .table-responsive > .table-bordered > tbody > tr > td:first-child,
+  .table-responsive > .table-bordered > tfoot > tr > th: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 > thead > tr > td:last-child,
+  .table-responsive > .table-bordered > tbody > tr > th:last-child,
+  .table-responsive > .table-bordered > tbody > tr > td:last-child,
+  .table-responsive > .table-bordered > tfoot > tr > th: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 > tbody > tr:last-child > td,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+    border-bottom: 0; } }
+
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+  min-width: 0; }
+
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: 20px;
+  font-size: 21px;
+  line-height: inherit;
+  color: #333333;
+  border: 0;
+  border-bottom: 1px solid #e5e5e5; }
+
+label {
+  display: inline-block;
+  max-width: 100%;
+  margin-bottom: 5px;
+  font-weight: bold; }
+
+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; }
+
+input[type="range"] {
+  display: block;
+  width: 100%; }
+
+select[multiple],
+select[size] {
+  height: auto; }
+
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px; }
+
+output {
+  display: block;
+  padding-top: 7px;
+  font-size: 14px;
+  line-height: 1.42857;
+  color: #555555; }
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: 34px;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857;
+  color: #555555;
+  background-color: #fff;
+  background-image: none;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+  -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
+  transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; }
+
+.form-control:focus {
+  border-color: #66afe9;
+  outline: 0;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); }
+
+.form-control::-moz-placeholder {
+  color: #999;
+  opacity: 1; }
+
+.form-control:-ms-input-placeholder {
+  color: #999; }
+
+.form-control::-webkit-input-placeholder {
+  color: #999; }
+
+.form-control::-ms-expand {
+  border: 0;
+  background-color: transparent; }
+
+.form-control[disabled], .form-control[readonly],
+fieldset[disabled] .form-control {
+  background-color: #eeeeee;
+  opacity: 1; }
+
+.form-control[disabled],
+fieldset[disabled] .form-control {
+  cursor: not-allowed; }
+
+textarea.form-control {
+  height: auto; }
+
+input[type="search"] {
+  -webkit-appearance: none; }
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"].form-control,
+  input[type="time"].form-control,
+  input[type="datetime-local"].form-control,
+  input[type="month"].form-control {
+    line-height: 34px; }
+  input[type="date"].input-sm, .input-group-sm > input.form-control[type="date"],
+  .input-group-sm > input.input-group-addon[type="date"],
+  .input-group-sm > .input-group-btn > input.btn[type="date"],
+  .input-group-sm input[type="date"],
+  input[type="time"].input-sm,
+  .input-group-sm > input.form-control[type="time"],
+  .input-group-sm > input.input-group-addon[type="time"],
+  .input-group-sm > .input-group-btn > input.btn[type="time"],
+  .input-group-sm
+input[type="time"],
+  input[type="datetime-local"].input-sm,
+  .input-group-sm > input.form-control[type="datetime-local"],
+  .input-group-sm > input.input-group-addon[type="datetime-local"],
+  .input-group-sm > .input-group-btn > input.btn[type="datetime-local"],
+  .input-group-sm
+input[type="datetime-local"],
+  input[type="month"].input-sm,
+  .input-group-sm > input.form-control[type="month"],
+  .input-group-sm > input.input-group-addon[type="month"],
+  .input-group-sm > .input-group-btn > input.btn[type="month"],
+  .input-group-sm
+input[type="month"] {
+    line-height: 30px; }
+  input[type="date"].input-lg, .input-group-lg > input.form-control[type="date"],
+  .input-group-lg > input.input-group-addon[type="date"],
+  .input-group-lg > .input-group-btn > input.btn[type="date"],
+  .input-group-lg input[type="date"],
+  input[type="time"].input-lg,
+  .input-group-lg > input.form-control[type="time"],
+  .input-group-lg > input.input-group-addon[type="time"],
+  .input-group-lg > .input-group-btn > input.btn[type="time"],
+  .input-group-lg
+input[type="time"],
+  input[type="datetime-local"].input-lg,
+  .input-group-lg > input.form-control[type="datetime-local"],
+  .input-group-lg > input.input-group-addon[type="datetime-local"],
+  .input-group-lg > .input-group-btn > input.btn[type="datetime-local"],
+  .input-group-lg
+input[type="datetime-local"],
+  input[type="month"].input-lg,
+  .input-group-lg > input.form-control[type="month"],
+  .input-group-lg > input.input-group-addon[type="month"],
+  .input-group-lg > .input-group-btn > input.btn[type="month"],
+  .input-group-lg
+input[type="month"] {
+    line-height: 46px; } }
+
+.form-group {
+  margin-bottom: 15px; }
+
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px; }
+
+.radio label,
+.checkbox label {
+  min-height: 20px;
+  padding-left: 20px;
+  margin-bottom: 0;
+  font-weight: normal;
+  cursor: pointer; }
+
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-left: -20px;
+  margin-top: 4px \9; }
+
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px; }
+
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  vertical-align: middle;
+  font-weight: normal;
+  cursor: pointer; }
+
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px; }
+
+input[type="radio"][disabled], input[type="radio"].disabled,
+fieldset[disabled] input[type="radio"],
+input[type="checkbox"][disabled],
+input[type="checkbox"].disabled,
+fieldset[disabled]
+input[type="checkbox"] {
+  cursor: not-allowed; }
+
+.radio-inline.disabled,
+fieldset[disabled] .radio-inline,
+.checkbox-inline.disabled,
+fieldset[disabled]
+.checkbox-inline {
+  cursor: not-allowed; }
+
+.radio.disabled label,
+fieldset[disabled] .radio label,
+.checkbox.disabled label,
+fieldset[disabled]
+.checkbox label {
+  cursor: not-allowed; }
+
+.form-control-static {
+  padding-top: 7px;
+  padding-bottom: 7px;
+  margin-bottom: 0;
+  min-height: 34px; }
+
+.form-control-static.input-lg, .input-group-lg > .form-control-static.form-control,
+.input-group-lg > .form-control-static.input-group-addon,
+.input-group-lg > .input-group-btn > .form-control-static.btn, .form-control-static.input-sm, .input-group-sm > .form-control-static.form-control,
+.input-group-sm > .form-control-static.input-group-addon,
+.input-group-sm > .input-group-btn > .form-control-static.btn {
+  padding-left: 0;
+  padding-right: 0; }
+
+.input-sm, .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-sm, .input-group-sm > select.form-control,
+.input-group-sm > select.input-group-addon,
+.input-group-sm > .input-group-btn > select.btn {
+  height: 30px;
+  line-height: 30px; }
+
+textarea.input-sm, .input-group-sm > textarea.form-control,
+.input-group-sm > textarea.input-group-addon,
+.input-group-sm > .input-group-btn > textarea.btn,
+select[multiple].input-sm,
+.input-group-sm > select.form-control[multiple],
+.input-group-sm > select.input-group-addon[multiple],
+.input-group-sm > .input-group-btn > select.btn[multiple] {
+  height: auto; }
+
+.form-group-sm .form-control {
+  height: 30px;
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+.form-group-sm select.form-control {
+  height: 30px;
+  line-height: 30px; }
+
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+  height: auto; }
+
+.form-group-sm .form-control-static {
+  height: 30px;
+  min-height: 32px;
+  padding: 6px 10px;
+  font-size: 12px;
+  line-height: 1.5; }
+
+.input-lg, .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.33333;
+  border-radius: 6px; }
+
+select.input-lg, .input-group-lg > select.form-control,
+.input-group-lg > select.input-group-addon,
+.input-group-lg > .input-group-btn > select.btn {
+  height: 46px;
+  line-height: 46px; }
+
+textarea.input-lg, .input-group-lg > textarea.form-control,
+.input-group-lg > textarea.input-group-addon,
+.input-group-lg > .input-group-btn > textarea.btn,
+select[multiple].input-lg,
+.input-group-lg > select.form-control[multiple],
+.input-group-lg > select.input-group-addon[multiple],
+.input-group-lg > .input-group-btn > select.btn[multiple] {
+  height: auto; }
+
+.form-group-lg .form-control {
+  height: 46px;
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33333;
+  border-radius: 6px; }
+
+.form-group-lg select.form-control {
+  height: 46px;
+  line-height: 46px; }
+
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+  height: auto; }
+
+.form-group-lg .form-control-static {
+  height: 46px;
+  min-height: 38px;
+  padding: 11px 16px;
+  font-size: 18px;
+  line-height: 1.33333; }
+
+.has-feedback {
+  position: relative; }
+
+.has-feedback .form-control {
+  padding-right: 42.5px; }
+
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2;
+  display: block;
+  width: 34px;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  pointer-events: none; }
+
+.input-lg + .form-control-feedback, .input-group-lg > .form-control + .form-control-feedback, .input-group-lg > .input-group-addon + .form-control-feedback, .input-group-lg > .input-group-btn > .btn + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: 46px;
+  height: 46px;
+  line-height: 46px; }
+
+.input-sm + .form-control-feedback, .input-group-sm > .form-control + .form-control-feedback, .input-group-sm > .input-group-addon + .form-control-feedback, .input-group-sm > .input-group-btn > .btn + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: 30px;
+  height: 30px;
+  line-height: 30px; }
+
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+  color: #3c763d; }
+
+.has-success .form-control {
+  border-color: #3c763d;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+
+.has-success .form-control:focus {
+  border-color: #2b542c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+  box-shadow: inset 0 1px 1px rgba(0, 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; }
+
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+  color: #8a6d3b; }
+
+.has-warning .form-control {
+  border-color: #8a6d3b;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+
+.has-warning .form-control:focus {
+  border-color: #66512c;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+  box-shadow: inset 0 1px 1px rgba(0, 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,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+  color: #a94442; }
+
+.has-error .form-control {
+  border-color: #a94442;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); }
+
+.has-error .form-control:focus {
+  border-color: #843534;
+  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+  box-shadow: inset 0 1px 1px rgba(0, 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-feedback label ~ .form-control-feedback {
+  top: 25px; }
+
+.has-feedback label.sr-only ~ .form-control-feedback {
+  top: 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 .form-control-static {
+    display: inline-block; }
+  .form-inline .input-group {
+    display: inline-table;
+    vertical-align: middle; }
+  .form-inline .input-group .input-group-addon,
+  .form-inline .input-group .input-group-btn,
+  .form-inline .input-group .form-control {
+    width: auto; }
+  .form-inline .input-group > .form-control {
+    width: 100%; }
+  .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;
+    vertical-align: middle; }
+  .form-inline .radio label,
+  .form-inline .checkbox label {
+    padding-left: 0; }
+  .form-inline .radio input[type="radio"],
+  .form-inline .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0; }
+  .form-inline .has-feedback .form-control-feedback {
+    top: 0; } }
+
+.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-group:before, .form-horizontal .form-group:after {
+  content: " ";
+  display: table; }
+
+.form-horizontal .form-group:after {
+  clear: both; }
+
+@media (min-width: 768px) {
+  .form-horizontal .control-label {
+    text-align: right;
+    margin-bottom: 0;
+    padding-top: 7px; } }
+
+.form-horizontal .has-feedback .form-control-feedback {
+  right: 15px; }
+
+@media (min-width: 768px) {
+  .form-horizontal .form-group-lg .control-label {
+    padding-top: 11px;
+    font-size: 18px; } }
+
+@media (min-width: 768px) {
+  .form-horizontal .form-group-sm .control-label {
+    padding-top: 6px;
+    font-size: 12px; } }
+
+.btn {
+  display: inline-block;
+  margin-bottom: 0;
+  font-weight: normal;
+  text-align: center;
+  vertical-align: middle;
+  touch-action: manipulation;
+  cursor: pointer;
+  background-image: none;
+  border: 1px solid transparent;
+  white-space: nowrap;
+  padding: 6px 12px;
+  font-size: 14px;
+  line-height: 1.42857;
+  border-radius: 4px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none; }
+
+.btn:focus, .btn.focus, .btn:active:focus, .btn:active.focus, .btn.active:focus, .btn.active.focus {
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px; }
+
+.btn:hover, .btn:focus, .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, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); }
+
+.btn.disabled, .btn[disabled],
+fieldset[disabled] .btn {
+  cursor: not-allowed;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  box-shadow: none; }
+
+a.btn.disabled,
+fieldset[disabled] a.btn {
+  pointer-events: none; }
+
+.btn-default {
+  color: #333;
+  background-color: #fff;
+  border-color: #ccc; }
+
+.btn-default:focus, .btn-default.focus {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #8c8c8c; }
+
+.btn-default:hover {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad; }
+
+.btn-default:active, .btn-default.active,
+.open > .btn-default.dropdown-toggle {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad; }
+
+.btn-default:active:hover, .btn-default:active:focus, .btn-default:active.focus, .btn-default.active:hover, .btn-default.active:focus, .btn-default.active.focus,
+.open > .btn-default.dropdown-toggle:hover,
+.open > .btn-default.dropdown-toggle:focus,
+.open > .btn-default.dropdown-toggle.focus {
+  color: #333;
+  background-color: #d4d4d4;
+  border-color: #8c8c8c; }
+
+.btn-default:active, .btn-default.active,
+.open > .btn-default.dropdown-toggle {
+  background-image: none; }
+
+.btn-default.disabled:hover, .btn-default.disabled:focus, .btn-default.disabled.focus, .btn-default[disabled]:hover, .btn-default[disabled]:focus, .btn-default[disabled].focus,
+fieldset[disabled] .btn-default:hover,
+fieldset[disabled] .btn-default:focus,
+fieldset[disabled] .btn-default.focus {
+  background-color: #fff;
+  border-color: #ccc; }
+
+.btn-default .badge {
+  color: #fff;
+  background-color: #333; }
+
+.btn-primary {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #2e6da4; }
+
+.btn-primary:focus, .btn-primary.focus {
+  color: #fff;
+  background-color: #286090;
+  border-color: #122b40; }
+
+.btn-primary:hover {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74; }
+
+.btn-primary:active, .btn-primary.active,
+.open > .btn-primary.dropdown-toggle {
+  color: #fff;
+  background-color: #286090;
+  border-color: #204d74; }
+
+.btn-primary:active:hover, .btn-primary:active:focus, .btn-primary:active.focus, .btn-primary.active:hover, .btn-primary.active:focus, .btn-primary.active.focus,
+.open > .btn-primary.dropdown-toggle:hover,
+.open > .btn-primary.dropdown-toggle:focus,
+.open > .btn-primary.dropdown-toggle.focus {
+  color: #fff;
+  background-color: #204d74;
+  border-color: #122b40; }
+
+.btn-primary:active, .btn-primary.active,
+.open > .btn-primary.dropdown-toggle {
+  background-image: none; }
+
+.btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled.focus, .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary:hover,
+fieldset[disabled] .btn-primary:focus,
+fieldset[disabled] .btn-primary.focus {
+  background-color: #337ab7;
+  border-color: #2e6da4; }
+
+.btn-primary .badge {
+  color: #337ab7;
+  background-color: #fff; }
+
+.btn-success {
+  color: #fff;
+  background-color: #5cb85c;
+  border-color: #4cae4c; }
+
+.btn-success:focus, .btn-success.focus {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #255625; }
+
+.btn-success:hover {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439; }
+
+.btn-success:active, .btn-success.active,
+.open > .btn-success.dropdown-toggle {
+  color: #fff;
+  background-color: #449d44;
+  border-color: #398439; }
+
+.btn-success:active:hover, .btn-success:active:focus, .btn-success:active.focus, .btn-success.active:hover, .btn-success.active:focus, .btn-success.active.focus,
+.open > .btn-success.dropdown-toggle:hover,
+.open > .btn-success.dropdown-toggle:focus,
+.open > .btn-success.dropdown-toggle.focus {
+  color: #fff;
+  background-color: #398439;
+  border-color: #255625; }
+
+.btn-success:active, .btn-success.active,
+.open > .btn-success.dropdown-toggle {
+  background-image: none; }
+
+.btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled.focus, .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled].focus,
+fieldset[disabled] .btn-success:hover,
+fieldset[disabled] .btn-success:focus,
+fieldset[disabled] .btn-success.focus {
+  background-color: #5cb85c;
+  border-color: #4cae4c; }
+
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff; }
+
+.btn-info {
+  color: #fff;
+  background-color: #5bc0de;
+  border-color: #46b8da; }
+
+.btn-info:focus, .btn-info.focus {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #1b6d85; }
+
+.btn-info:hover {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc; }
+
+.btn-info:active, .btn-info.active,
+.open > .btn-info.dropdown-toggle {
+  color: #fff;
+  background-color: #31b0d5;
+  border-color: #269abc; }
+
+.btn-info:active:hover, .btn-info:active:focus, .btn-info:active.focus, .btn-info.active:hover, .btn-info.active:focus, .btn-info.active.focus,
+.open > .btn-info.dropdown-toggle:hover,
+.open > .btn-info.dropdown-toggle:focus,
+.open > .btn-info.dropdown-toggle.focus {
+  color: #fff;
+  background-color: #269abc;
+  border-color: #1b6d85; }
+
+.btn-info:active, .btn-info.active,
+.open > .btn-info.dropdown-toggle {
+  background-image: none; }
+
+.btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled.focus, .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled].focus,
+fieldset[disabled] .btn-info:hover,
+fieldset[disabled] .btn-info:focus,
+fieldset[disabled] .btn-info.focus {
+  background-color: #5bc0de;
+  border-color: #46b8da; }
+
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff; }
+
+.btn-warning {
+  color: #fff;
+  background-color: #f0ad4e;
+  border-color: #eea236; }
+
+.btn-warning:focus, .btn-warning.focus {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #985f0d; }
+
+.btn-warning:hover {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512; }
+
+.btn-warning:active, .btn-warning.active,
+.open > .btn-warning.dropdown-toggle {
+  color: #fff;
+  background-color: #ec971f;
+  border-color: #d58512; }
+
+.btn-warning:active:hover, .btn-warning:active:focus, .btn-warning:active.focus, .btn-warning.active:hover, .btn-warning.active:focus, .btn-warning.active.focus,
+.open > .btn-warning.dropdown-toggle:hover,
+.open > .btn-warning.dropdown-toggle:focus,
+.open > .btn-warning.dropdown-toggle.focus {
+  color: #fff;
+  background-color: #d58512;
+  border-color: #985f0d; }
+
+.btn-warning:active, .btn-warning.active,
+.open > .btn-warning.dropdown-toggle {
+  background-image: none; }
+
+.btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled.focus, .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning:hover,
+fieldset[disabled] .btn-warning:focus,
+fieldset[disabled] .btn-warning.focus {
+  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:focus, .btn-danger.focus {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #761c19; }
+
+.btn-danger:hover {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925; }
+
+.btn-danger:active, .btn-danger.active,
+.open > .btn-danger.dropdown-toggle {
+  color: #fff;
+  background-color: #c9302c;
+  border-color: #ac2925; }
+
+.btn-danger:active:hover, .btn-danger:active:focus, .btn-danger:active.focus, .btn-danger.active:hover, .btn-danger.active:focus, .btn-danger.active.focus,
+.open > .btn-danger.dropdown-toggle:hover,
+.open > .btn-danger.dropdown-toggle:focus,
+.open > .btn-danger.dropdown-toggle.focus {
+  color: #fff;
+  background-color: #ac2925;
+  border-color: #761c19; }
+
+.btn-danger:active, .btn-danger.active,
+.open > .btn-danger.dropdown-toggle {
+  background-image: none; }
+
+.btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled.focus, .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger:hover,
+fieldset[disabled] .btn-danger:focus,
+fieldset[disabled] .btn-danger.focus {
+  background-color: #d9534f;
+  border-color: #d43f3a; }
+
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff; }
+
+.btn-link {
+  color: #337ab7;
+  font-weight: normal;
+  border-radius: 0; }
+
+.btn-link, .btn-link:active, .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: #23527c;
+  text-decoration: underline;
+  background-color: transparent; }
+
+.btn-link[disabled]:hover, .btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:hover,
+fieldset[disabled] .btn-link:focus {
+  color: #777777;
+  text-decoration: none; }
+
+.btn-lg, .btn-group-lg > .btn {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33333;
+  border-radius: 6px; }
+
+.btn-sm, .btn-group-sm > .btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+.btn-xs, .btn-group-xs > .btn {
+  padding: 1px 5px;
+  font-size: 12px;
+  line-height: 1.5;
+  border-radius: 3px; }
+
+.btn-block {
+  display: block;
+  width: 100%; }
+
+.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 0.15s linear;
+  -o-transition: opacity 0.15s linear;
+  transition: opacity 0.15s linear; }
+
+.fade.in {
+  opacity: 1; }
+
+.collapse {
+  display: none; }
+
+.collapse.in {
+  display: block; }
+
+tr.collapse.in {
+  display: table-row; }
+
+tbody.collapse.in {
+  display: table-row-group; }
+
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  -webkit-transition-property: height, visibility;
+  transition-property: height, visibility;
+  -webkit-transition-duration: 0.35s;
+  transition-duration: 0.35s;
+  -webkit-transition-timing-function: ease;
+  transition-timing-function: ease; }
+
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top: 4px dashed;
+  border-top: 4px solid \9;
+  border-right: 4px solid transparent;
+  border-left: 4px solid transparent; }
+
+.dropup,
+.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;
+  text-align: left;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.15);
+  border-radius: 4px;
+  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+  box-shadow: 0 6px 12px rgba(0, 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: normal;
+  line-height: 1.42857;
+  color: #333333;
+  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: #337ab7; }
+
+.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
+  color: #777777; }
+
+.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.42857;
+  color: #777777;
+  white-space: nowrap; }
+
+.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 dashed;
+  border-bottom: 4px solid \9;
+  content: ""; }
+
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+  top: auto;
+  bottom: 100%;
+  margin-bottom: 2px; }
+
+@media (min-width: 768px) {
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto; }
+  .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 > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,
+.btn-group-vertical > .btn:hover,
+.btn-group-vertical > .btn:focus,
+.btn-group-vertical > .btn:active,
+.btn-group-vertical > .btn.active {
+  z-index: 2; }
+
+.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:before, .btn-toolbar:after {
+  content: " ";
+  display: table; }
+
+.btn-toolbar:after {
+  clear: both; }
+
+.btn-toolbar .btn,
+.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:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+  border-bottom-right-radius: 0;
+  border-top-right-radius: 0; }
+
+.btn-group > .btn-group:last-child:not(:first-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 > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px; }
+
+.btn-group > .btn-lg + .dropdown-toggle, .btn-group-lg.btn-group > .btn + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px; }
+
+.btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 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, .btn-group-lg > .btn .caret {
+  border-width: 5px 5px 0;
+  border-bottom-width: 0; }
+
+.dropup .btn-lg .caret, .dropup .btn-group-lg > .btn .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:before, .btn-group-vertical > .btn-group:after {
+  content: " ";
+  display: table; }
+
+.btn-group-vertical > .btn-group:after {
+  clear: both; }
+
+.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-top-left-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0; }
+
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0;
+  border-bottom-right-radius: 4px;
+  border-bottom-left-radius: 4px; }
+
+.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%; }
+
+.btn-group-justified > .btn-group .dropdown-menu {
+  left: auto; }
+
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+  position: absolute;
+  clip: rect(0, 0, 0, 0);
+  pointer-events: 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 {
+  position: relative;
+  z-index: 2;
+  float: left;
+  width: 100%;
+  margin-bottom: 0; }
+
+.input-group .form-control:focus {
+  z-index: 3; }
+
+.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: normal;
+  line-height: 1;
+  color: #555555;
+  text-align: center;
+  background-color: #eeeeee;
+  border: 1px solid #ccc;
+  border-radius: 4px; }
+
+.input-group-addon.input-sm,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .input-group-addon.btn {
+  padding: 5px 10px;
+  font-size: 12px;
+  border-radius: 3px; }
+
+.input-group-addon.input-lg,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .input-group-addon.btn {
+  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 {
+  z-index: 2;
+  margin-left: -1px; }
+
+.nav {
+  margin-bottom: 0;
+  padding-left: 0;
+  list-style: none; }
+
+.nav:before, .nav:after {
+  content: " ";
+  display: table; }
+
+.nav:after {
+  clear: both; }
+
+.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: #eeeeee; }
+
+.nav > li.disabled > a {
+  color: #777777; }
+
+.nav > li.disabled > a:hover, .nav > li.disabled > a:focus {
+  color: #777777;
+  text-decoration: none;
+  background-color: transparent;
+  cursor: not-allowed; }
+
+.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
+  background-color: #eeeeee;
+  border-color: #337ab7; }
+
+.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.42857;
+  border: 1px solid transparent;
+  border-radius: 4px 4px 0 0; }
+
+.nav-tabs > li > a:hover {
+  border-color: #eeeeee #eeeeee #ddd; }
+
+.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
+  color: #555555;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-bottom-color: transparent;
+  cursor: default; }
+
+.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: #337ab7; }
+
+.nav-stacked > li {
+  float: none; }
+
+.nav-stacked > li + li {
+  margin-top: 2px;
+  margin-left: 0; }
+
+.nav-justified, .nav-tabs.nav-justified {
+  width: 100%; }
+
+.nav-justified > li, .nav-tabs.nav-justified > li {
+  float: none; }
+
+.nav-justified > li > a, .nav-tabs.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, .nav-tabs.nav-justified > li {
+    display: table-cell;
+    width: 1%; }
+  .nav-justified > li > a, .nav-tabs.nav-justified > li > a {
+    margin-bottom: 0; } }
+
+.nav-tabs-justified, .nav-tabs.nav-justified {
+  border-bottom: 0; }
+
+.nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a {
+  margin-right: 0;
+  border-radius: 4px; }
+
+.nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus,
+.nav-tabs.nav-justified > .active > a:focus {
+  border: 1px solid #ddd; }
+
+@media (min-width: 768px) {
+  .nav-tabs-justified > li > a, .nav-tabs.nav-justified > li > a {
+    border-bottom: 1px solid #ddd;
+    border-radius: 4px 4px 0 0; }
+  .nav-tabs-justified > .active > a, .nav-tabs.nav-justified > .active > a,
+  .nav-tabs-justified > .active > a:hover,
+  .nav-tabs.nav-justified > .active > a:hover,
+  .nav-tabs-justified > .active > a:focus,
+  .nav-tabs.nav-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; }
+
+.navbar:before, .navbar:after {
+  content: " ";
+  display: table; }
+
+.navbar:after {
+  clear: both; }
+
+@media (min-width: 768px) {
+  .navbar {
+    border-radius: 4px; } }
+
+.navbar-header:before, .navbar-header:after {
+  content: " ";
+  display: table; }
+
+.navbar-header:after {
+  clear: both; }
+
+@media (min-width: 768px) {
+  .navbar-header {
+    float: left; } }
+
+.navbar-collapse {
+  overflow-x: visible;
+  padding-right: 15px;
+  padding-left: 15px;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+  -webkit-overflow-scrolling: touch; }
+
+.navbar-collapse:before, .navbar-collapse:after {
+  content: " ";
+  display: table; }
+
+.navbar-collapse:after {
+  clear: both; }
+
+.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; } }
+
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+  max-height: 340px; }
+
+@media (max-device-width: 480px) and (orientation: landscape) {
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    max-height: 200px; } }
+
+.container > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-header,
+.container-fluid > .navbar-collapse {
+  margin-right: -15px;
+  margin-left: -15px; }
+
+@media (min-width: 768px) {
+  .container > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-header,
+  .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 15px;
+  font-size: 18px;
+  line-height: 20px;
+  height: 50px; }
+
+.navbar-brand:hover, .navbar-brand:focus {
+  text-decoration: none; }
+
+.navbar-brand > img {
+  display: block; }
+
+@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:focus {
+  outline: 0; }
+
+.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-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, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.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 .form-control-static {
+    display: inline-block; }
+  .navbar-form .input-group {
+    display: inline-table;
+    vertical-align: middle; }
+  .navbar-form .input-group .input-group-addon,
+  .navbar-form .input-group .input-group-btn,
+  .navbar-form .input-group .form-control {
+    width: auto; }
+  .navbar-form .input-group > .form-control {
+    width: 100%; }
+  .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;
+    vertical-align: middle; }
+  .navbar-form .radio label,
+  .navbar-form .checkbox label {
+    padding-left: 0; }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0; }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0; } }
+
+@media (max-width: 767px) {
+  .navbar-form .form-group {
+    margin-bottom: 5px; }
+  .navbar-form .form-group:last-child {
+    margin-bottom: 0; } }
+
+@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-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 {
+  margin-bottom: 0;
+  border-top-right-radius: 4px;
+  border-top-left-radius: 4px;
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0; }
+
+.navbar-btn {
+  margin-top: 8px;
+  margin-bottom: 8px; }
+
+.navbar-btn.btn-sm, .btn-group-sm > .navbar-btn.btn {
+  margin-top: 10px;
+  margin-bottom: 10px; }
+
+.navbar-btn.btn-xs, .btn-group-xs > .navbar-btn.btn {
+  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; } }
+
+@media (min-width: 768px) {
+  .navbar-left {
+    float: left !important; }
+  .navbar-right {
+    float: right !important;
+    margin-right: -15px; }
+  .navbar-right ~ .navbar-right {
+    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-default .btn-link {
+  color: #777; }
+
+.navbar-default .btn-link:hover, .navbar-default .btn-link:focus {
+  color: #333; }
+
+.navbar-default .btn-link[disabled]:hover, .navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:hover,
+fieldset[disabled] .navbar-default .btn-link:focus {
+  color: #ccc; }
+
+.navbar-inverse {
+  background-color: #222;
+  border-color: #090909; }
+
+.navbar-inverse .navbar-brand {
+  color: #9d9d9d; }
+
+.navbar-inverse .navbar-brand:hover, .navbar-inverse .navbar-brand:focus {
+  color: #fff;
+  background-color: transparent; }
+
+.navbar-inverse .navbar-text {
+  color: #9d9d9d; }
+
+.navbar-inverse .navbar-nav > li > a {
+  color: #9d9d9d; }
+
+.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: #090909; }
+
+.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: #090909;
+  color: #fff; }
+
+@media (max-width: 767px) {
+  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+    border-color: #090909; }
+  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+    background-color: #090909; }
+  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+    color: #9d9d9d; }
+  .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: #090909; }
+  .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: #9d9d9d; }
+
+.navbar-inverse .navbar-link:hover {
+  color: #fff; }
+
+.navbar-inverse .btn-link {
+  color: #9d9d9d; }
+
+.navbar-inverse .btn-link:hover, .navbar-inverse .btn-link:focus {
+  color: #fff; }
+
+.navbar-inverse .btn-link[disabled]:hover, .navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+  color: #444; }
+
+.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: "/ ";
+  padding: 0 5px;
+  color: #ccc; }
+
+.breadcrumb > .active {
+  color: #777777; }
+
+.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.42857;
+  text-decoration: none;
+  color: #337ab7;
+  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 > a:focus,
+.pagination > li > span:hover,
+.pagination > li > span:focus {
+  z-index: 2;
+  color: #23527c;
+  background-color: #eeeeee;
+  border-color: #ddd; }
+
+.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus,
+.pagination > .active > span,
+.pagination > .active > span:hover,
+.pagination > .active > span:focus {
+  z-index: 3;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7;
+  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: #777777;
+  background-color: #fff;
+  border-color: #ddd;
+  cursor: not-allowed; }
+
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+  padding: 10px 16px;
+  font-size: 18px;
+  line-height: 1.33333; }
+
+.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;
+  line-height: 1.5; }
+
+.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:before, .pager:after {
+  content: " ";
+  display: table; }
+
+.pager:after {
+  clear: both; }
+
+.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: #eeeeee; }
+
+.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: #777777;
+  background-color: #fff;
+  cursor: not-allowed; }
+
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: #fff;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em; }
+
+.label:empty {
+  display: none; }
+
+.btn .label {
+  position: relative;
+  top: -1px; }
+
+a.label:hover, a.label:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer; }
+
+.label-default {
+  background-color: #777777; }
+
+.label-default[href]:hover, .label-default[href]:focus {
+  background-color: #5e5e5e; }
+
+.label-primary {
+  background-color: #337ab7; }
+
+.label-primary[href]:hover, .label-primary[href]:focus {
+  background-color: #286090; }
+
+.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: bold;
+  color: #fff;
+  line-height: 1;
+  vertical-align: middle;
+  white-space: nowrap;
+  text-align: center;
+  background-color: #777777;
+  border-radius: 10px; }
+
+.badge:empty {
+  display: none; }
+
+.btn .badge {
+  position: relative;
+  top: -1px; }
+
+.btn-xs .badge, .btn-group-xs > .btn .badge,
+.btn-group-xs > .btn .badge {
+  top: 0;
+  padding: 1px 5px; }
+
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: #337ab7;
+  background-color: #fff; }
+
+.list-group-item > .badge {
+  float: right; }
+
+.list-group-item > .badge + .badge {
+  margin-right: 5px; }
+
+.nav-pills > li > a > .badge {
+  margin-left: 3px; }
+
+a.badge:hover, a.badge:focus {
+  color: #fff;
+  text-decoration: none;
+  cursor: pointer; }
+
+.jumbotron {
+  padding-top: 30px;
+  padding-bottom: 30px;
+  margin-bottom: 30px;
+  color: inherit;
+  background-color: #eeeeee; }
+
+.jumbotron h1,
+.jumbotron .h1 {
+  color: inherit; }
+
+.jumbotron p {
+  margin-bottom: 15px;
+  font-size: 21px;
+  font-weight: 200; }
+
+.jumbotron > hr {
+  border-top-color: #d5d5d5; }
+
+.container .jumbotron,
+.container-fluid .jumbotron {
+  border-radius: 6px;
+  padding-left: 15px;
+  padding-right: 15px; }
+
+.jumbotron .container {
+  max-width: 100%; }
+
+@media screen and (min-width: 768px) {
+  .jumbotron {
+    padding-top: 48px;
+    padding-bottom: 48px; }
+  .container .jumbotron,
+  .container-fluid .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.42857;
+  background-color: #fff;
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  -webkit-transition: border 0.2s ease-in-out;
+  -o-transition: border 0.2s ease-in-out;
+  transition: border 0.2s ease-in-out; }
+
+.thumbnail > img,
+.thumbnail a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+  margin-left: auto;
+  margin-right: auto; }
+
+.thumbnail .caption {
+  padding: 9px;
+  color: #333333; }
+
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+  border-color: #337ab7; }
+
+.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: bold; }
+
+.alert > p,
+.alert > ul {
+  margin-bottom: 0; }
+
+.alert > p + p {
+  margin-top: 5px; }
+
+.alert-dismissable,
+.alert-dismissible {
+  padding-right: 35px; }
+
+.alert-dismissable .close,
+.alert-dismissible .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, 0.1);
+  box-shadow: inset 0 1px 2px rgba(0, 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: #337ab7;
+  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-transition: width 0.6s ease;
+  -o-transition: width 0.6s ease;
+  transition: width 0.6s ease; }
+
+.progress-striped .progress-bar,
+.progress-bar-striped {
+  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-size: 40px 40px; }
+
+.progress.active .progress-bar,
+.progress-bar.active {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+  -o-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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.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, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
+
+.media {
+  margin-top: 15px; }
+
+.media:first-child {
+  margin-top: 0; }
+
+.media,
+.media-body {
+  zoom: 1;
+  overflow: hidden; }
+
+.media-body {
+  width: 10000px; }
+
+.media-object {
+  display: block; }
+
+.media-object.img-thumbnail {
+  max-width: none; }
+
+.media-right,
+.media > .pull-right {
+  padding-left: 10px; }
+
+.media-left,
+.media > .pull-left {
+  padding-right: 10px; }
+
+.media-left,
+.media-right,
+.media-body {
+  display: table-cell;
+  vertical-align: top; }
+
+.media-middle {
+  vertical-align: middle; }
+
+.media-bottom {
+  vertical-align: bottom; }
+
+.media-heading {
+  margin-top: 0;
+  margin-bottom: 5px; }
+
+.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; }
+
+a.list-group-item,
+button.list-group-item {
+  color: #555; }
+
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+  color: #333; }
+
+a.list-group-item:hover, a.list-group-item:focus,
+button.list-group-item:hover,
+button.list-group-item:focus {
+  text-decoration: none;
+  color: #555;
+  background-color: #f5f5f5; }
+
+button.list-group-item {
+  width: 100%;
+  text-align: left; }
+
+.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus {
+  background-color: #eeeeee;
+  color: #777777;
+  cursor: not-allowed; }
+
+.list-group-item.disabled .list-group-item-heading, .list-group-item.disabled:hover .list-group-item-heading, .list-group-item.disabled:focus .list-group-item-heading {
+  color: inherit; }
+
+.list-group-item.disabled .list-group-item-text, .list-group-item.disabled:hover .list-group-item-text, .list-group-item.disabled:focus .list-group-item-text {
+  color: #777777; }
+
+.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
+  z-index: 2;
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7; }
+
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > .small, .list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+  color: inherit; }
+
+.list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text {
+  color: #c7ddef; }
+
+.list-group-item-success {
+  color: #3c763d;
+  background-color: #dff0d8; }
+
+a.list-group-item-success,
+button.list-group-item-success {
+  color: #3c763d; }
+
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+  color: inherit; }
+
+a.list-group-item-success:hover, a.list-group-item-success:focus,
+button.list-group-item-success:hover,
+button.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,
+button.list-group-item-success.active,
+button.list-group-item-success.active:hover,
+button.list-group-item-success.active:focus {
+  color: #fff;
+  background-color: #3c763d;
+  border-color: #3c763d; }
+
+.list-group-item-info {
+  color: #31708f;
+  background-color: #d9edf7; }
+
+a.list-group-item-info,
+button.list-group-item-info {
+  color: #31708f; }
+
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+  color: inherit; }
+
+a.list-group-item-info:hover, a.list-group-item-info:focus,
+button.list-group-item-info:hover,
+button.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,
+button.list-group-item-info.active,
+button.list-group-item-info.active:hover,
+button.list-group-item-info.active:focus {
+  color: #fff;
+  background-color: #31708f;
+  border-color: #31708f; }
+
+.list-group-item-warning {
+  color: #8a6d3b;
+  background-color: #fcf8e3; }
+
+a.list-group-item-warning,
+button.list-group-item-warning {
+  color: #8a6d3b; }
+
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+  color: inherit; }
+
+a.list-group-item-warning:hover, a.list-group-item-warning:focus,
+button.list-group-item-warning:hover,
+button.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,
+button.list-group-item-warning.active,
+button.list-group-item-warning.active:hover,
+button.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,
+button.list-group-item-danger {
+  color: #a94442; }
+
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+  color: inherit; }
+
+a.list-group-item-danger:hover, a.list-group-item-danger:focus,
+button.list-group-item-danger:hover,
+button.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,
+button.list-group-item-danger.active,
+button.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:focus {
+  color: #fff;
+  background-color: #a94442;
+  border-color: #a94442; }
+
+.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, 0.05);
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); }
+
+.panel-body {
+  padding: 15px; }
+
+.panel-body:before, .panel-body:after {
+  content: " ";
+  display: table; }
+
+.panel-body:after {
+  clear: both; }
+
+.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,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > 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 > .list-group,
+.panel > .panel-collapse > .list-group {
+  margin-bottom: 0; }
+
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+  border-width: 1px 0;
+  border-radius: 0; }
+
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+  border-top: 0;
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px; }
+
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+  border-bottom: 0;
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px; }
+
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+  border-top-right-radius: 0;
+  border-top-left-radius: 0; }
+
+.panel-heading + .list-group .list-group-item:first-child {
+  border-top-width: 0; }
+
+.list-group + .panel-footer {
+  border-top-width: 0; }
+
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+  margin-bottom: 0; }
+
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+  padding-left: 15px;
+  padding-right: 15px; }
+
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+  border-top-right-radius: 3px;
+  border-top-left-radius: 3px; }
+
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+  border-top-left-radius: 3px;
+  border-top-right-radius: 3px; }
+
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+  border-top-left-radius: 3px; }
+
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+  border-top-right-radius: 3px; }
+
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+  border-bottom-right-radius: 3px;
+  border-bottom-left-radius: 3px; }
+
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+  border-bottom-left-radius: 3px;
+  border-bottom-right-radius: 3px; }
+
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+  border-bottom-left-radius: 3px; }
+
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+  border-bottom-right-radius: 3px; }
+
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+  border-top: 1px solid #ddd; }
+
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr: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-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th: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-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+  border-right: 0; }
+
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+  border-bottom: 0; }
+
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+  border-bottom: 0; }
+
+.panel > .table-responsive {
+  border: 0;
+  margin-bottom: 0; }
+
+.panel-group {
+  margin-bottom: 20px; }
+
+.panel-group .panel {
+  margin-bottom: 0;
+  border-radius: 4px; }
+
+.panel-group .panel + .panel {
+  margin-top: 5px; }
+
+.panel-group .panel-heading {
+  border-bottom: 0; }
+
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+  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: #333333;
+  background-color: #f5f5f5;
+  border-color: #ddd; }
+
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #ddd; }
+
+.panel-default > .panel-heading .badge {
+  color: #f5f5f5;
+  background-color: #333333; }
+
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ddd; }
+
+.panel-primary {
+  border-color: #337ab7; }
+
+.panel-primary > .panel-heading {
+  color: #fff;
+  background-color: #337ab7;
+  border-color: #337ab7; }
+
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+  border-top-color: #337ab7; }
+
+.panel-primary > .panel-heading .badge {
+  color: #337ab7;
+  background-color: #fff; }
+
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #337ab7; }
+
+.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-heading .badge {
+  color: #dff0d8;
+  background-color: #3c763d; }
+
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #d6e9c6; }
+
+.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-heading .badge {
+  color: #d9edf7;
+  background-color: #31708f; }
+
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #bce8f1; }
+
+.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-heading .badge {
+  color: #fcf8e3;
+  background-color: #8a6d3b; }
+
+.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-heading .badge {
+  color: #f2dede;
+  background-color: #a94442; }
+
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+  border-bottom-color: #ebccd1; }
+
+.embed-responsive {
+  position: relative;
+  display: block;
+  height: 0;
+  padding: 0;
+  overflow: hidden; }
+
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  height: 100%;
+  width: 100%;
+  border: 0; }
+
+.embed-responsive-16by9 {
+  padding-bottom: 56.25%; }
+
+.embed-responsive-4by3 {
+  padding-bottom: 75%; }
+
+.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, 0.05);
+  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); }
+
+.well blockquote {
+  border-color: #ddd;
+  border-color: rgba(0, 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: bold;
+  line-height: 1;
+  color: #000;
+  text-shadow: 0 1px 0 #fff;
+  opacity: 0.2;
+  filter: alpha(opacity=20); }
+
+.close:hover, .close:focus {
+  color: #000;
+  text-decoration: none;
+  cursor: pointer;
+  opacity: 0.5;
+  filter: alpha(opacity=50); }
+
+button.close {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none; }
+
+.modal-open {
+  overflow: hidden; }
+
+.modal {
+  display: none;
+  overflow: hidden;
+  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%);
+  -o-transform: translate(0, -25%);
+  transform: translate(0, -25%);
+  -webkit-transition: -webkit-transform 0.3s ease-out;
+  -moz-transition: -moz-transform 0.3s ease-out;
+  -o-transition: -o-transform 0.3s ease-out;
+  transition: transform 0.3s ease-out; }
+
+.modal.in .modal-dialog {
+  -webkit-transform: translate(0, 0);
+  -ms-transform: translate(0, 0);
+  -o-transform: translate(0, 0);
+  transform: translate(0, 0); }
+
+.modal-open .modal {
+  overflow-x: hidden;
+  overflow-y: auto; }
+
+.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, 0.2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+  box-shadow: 0 3px 9px rgba(0, 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: 0.5;
+  filter: alpha(opacity=50); }
+
+.modal-header {
+  padding: 15px;
+  border-bottom: 1px solid #e5e5e5; }
+
+.modal-header:before, .modal-header:after {
+  content: " ";
+  display: table; }
+
+.modal-header:after {
+  clear: both; }
+
+.modal-header .close {
+  margin-top: -2px; }
+
+.modal-title {
+  margin: 0;
+  line-height: 1.42857; }
+
+.modal-body {
+  position: relative;
+  padding: 15px; }
+
+.modal-footer {
+  padding: 15px;
+  text-align: right;
+  border-top: 1px solid #e5e5e5; }
+
+.modal-footer:before, .modal-footer:after {
+  content: " ";
+  display: table; }
+
+.modal-footer:after {
+  clear: both; }
+
+.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; }
+
+.modal-scrollbar-measure {
+  position: absolute;
+  top: -9999px;
+  width: 50px;
+  height: 50px;
+  overflow: scroll; }
+
+@media (min-width: 768px) {
+  .modal-dialog {
+    width: 600px;
+    margin: 30px auto; }
+  .modal-content {
+    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); }
+  .modal-sm {
+    width: 300px; } }
+
+@media (min-width: 992px) {
+  .modal-lg {
+    width: 900px; } }
+
+.tooltip {
+  position: absolute;
+  z-index: 1070;
+  display: block;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-style: normal;
+  font-weight: normal;
+  letter-spacing: normal;
+  line-break: auto;
+  line-height: 1.42857;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  white-space: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  font-size: 12px;
+  opacity: 0;
+  filter: alpha(opacity=0); }
+
+.tooltip.in {
+  opacity: 0.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;
+  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;
+  right: 5px;
+  margin-bottom: -5px;
+  border-width: 5px 5px 0;
+  border-top-color: #000; }
+
+.tooltip.top-right .tooltip-arrow {
+  bottom: 0;
+  left: 5px;
+  margin-bottom: -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;
+  right: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000; }
+
+.tooltip.bottom-right .tooltip-arrow {
+  top: 0;
+  left: 5px;
+  margin-top: -5px;
+  border-width: 0 5px 5px;
+  border-bottom-color: #000; }
+
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1060;
+  display: none;
+  max-width: 276px;
+  padding: 1px;
+  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-style: normal;
+  font-weight: normal;
+  letter-spacing: normal;
+  line-break: auto;
+  line-height: 1.42857;
+  text-align: left;
+  text-align: start;
+  text-decoration: none;
+  text-shadow: none;
+  text-transform: none;
+  white-space: normal;
+  word-break: normal;
+  word-spacing: normal;
+  word-wrap: normal;
+  font-size: 14px;
+  background-color: #fff;
+  background-clip: padding-box;
+  border: 1px solid #ccc;
+  border: 1px solid rgba(0, 0, 0, 0.2);
+  border-radius: 6px;
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); }
+
+.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;
+  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: #999999;
+  border-top-color: rgba(0, 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: #999999;
+  border-right-color: rgba(0, 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: #999999;
+  border-bottom-color: rgba(0, 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: #999999;
+  border-left-color: rgba(0, 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: 0.6s ease-in-out left;
+  -o-transition: 0.6s ease-in-out left;
+  transition: 0.6s ease-in-out left; }
+
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+  display: block;
+  max-width: 100%;
+  height: auto;
+  line-height: 1; }
+
+@media all and (transform-3d), (-webkit-transform-3d) {
+  .carousel-inner > .item {
+    -webkit-transition: -webkit-transform 0.6s ease-in-out;
+    -moz-transition: -moz-transform 0.6s ease-in-out;
+    -o-transition: -o-transform 0.6s ease-in-out;
+    transition: transform 0.6s ease-in-out;
+    -webkit-backface-visibility: hidden;
+    -moz-backface-visibility: hidden;
+    backface-visibility: hidden;
+    -webkit-perspective: 1000px;
+    -moz-perspective: 1000px;
+    perspective: 1000px; }
+  .carousel-inner > .item.next, .carousel-inner > .item.active.right {
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+    left: 0; }
+  .carousel-inner > .item.prev, .carousel-inner > .item.active.left {
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+    left: 0; }
+  .carousel-inner > .item.next.left, .carousel-inner > .item.prev.right, .carousel-inner > .item.active {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    left: 0; } }
+
+.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: 0.5;
+  filter: alpha(opacity=50);
+  font-size: 20px;
+  color: #fff;
+  text-align: center;
+  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+  background-color: rgba(0, 0, 0, 0); }
+
+.carousel-control.left {
+  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 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, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 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: 0.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%;
+  margin-top: -10px;
+  z-index: 5;
+  display: inline-block; }
+
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+  left: 50%;
+  margin-left: -10px; }
+
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+  right: 50%;
+  margin-right: -10px; }
+
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+  width: 20px;
+  height: 20px;
+  line-height: 1;
+  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, 0.6); }
+
+.carousel-caption .btn {
+  text-shadow: none; }
+
+@media screen and (min-width: 768px) {
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -10px;
+    font-size: 30px; }
+  .carousel-control .glyphicon-chevron-left,
+  .carousel-control .icon-prev {
+    margin-left: -10px; }
+  .carousel-control .glyphicon-chevron-right,
+  .carousel-control .icon-next {
+    margin-right: -10px; }
+  .carousel-caption {
+    left: 20%;
+    right: 20%;
+    padding-bottom: 30px; }
+  .carousel-indicators {
+    bottom: 20px; } }
+
+.clearfix:before, .clearfix:after {
+  content: " ";
+  display: table; }
+
+.clearfix: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; }
+
+.affix {
+  position: fixed; }
+
+@-ms-viewport {
+  width: device-width; }
+
+.visible-xs {
+  display: none !important; }
+
+.visible-sm {
+  display: none !important; }
+
+.visible-md {
+  display: none !important; }
+
+.visible-lg {
+  display: none !important; }
+
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+  display: none !important; }
+
+@media (max-width: 767px) {
+  .visible-xs {
+    display: block !important; }
+  table.visible-xs {
+    display: table !important; }
+  tr.visible-xs {
+    display: table-row !important; }
+  th.visible-xs,
+  td.visible-xs {
+    display: table-cell !important; } }
+
+@media (max-width: 767px) {
+  .visible-xs-block {
+    display: block !important; } }
+
+@media (max-width: 767px) {
+  .visible-xs-inline {
+    display: inline !important; } }
+
+@media (max-width: 767px) {
+  .visible-xs-inline-block {
+    display: inline-block !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm {
+    display: block !important; }
+  table.visible-sm {
+    display: table !important; }
+  tr.visible-sm {
+    display: table-row !important; }
+  th.visible-sm,
+  td.visible-sm {
+    display: table-cell !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-block {
+    display: block !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline {
+    display: inline !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .visible-sm-inline-block {
+    display: inline-block !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md {
+    display: block !important; }
+  table.visible-md {
+    display: table !important; }
+  tr.visible-md {
+    display: table-row !important; }
+  th.visible-md,
+  td.visible-md {
+    display: table-cell !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-block {
+    display: block !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline {
+    display: inline !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .visible-md-inline-block {
+    display: inline-block !important; } }
+
+@media (min-width: 1200px) {
+  .visible-lg {
+    display: block !important; }
+  table.visible-lg {
+    display: table !important; }
+  tr.visible-lg {
+    display: table-row !important; }
+  th.visible-lg,
+  td.visible-lg {
+    display: table-cell !important; } }
+
+@media (min-width: 1200px) {
+  .visible-lg-block {
+    display: block !important; } }
+
+@media (min-width: 1200px) {
+  .visible-lg-inline {
+    display: inline !important; } }
+
+@media (min-width: 1200px) {
+  .visible-lg-inline-block {
+    display: inline-block !important; } }
+
+@media (max-width: 767px) {
+  .hidden-xs {
+    display: none !important; } }
+
+@media (min-width: 768px) and (max-width: 991px) {
+  .hidden-sm {
+    display: none !important; } }
+
+@media (min-width: 992px) and (max-width: 1199px) {
+  .hidden-md {
+    display: none !important; } }
+
+@media (min-width: 1200px) {
+  .hidden-lg {
+    display: none !important; } }
+
+.visible-print {
+  display: none !important; }
+
+@media print {
+  .visible-print {
+    display: block !important; }
+  table.visible-print {
+    display: table !important; }
+  tr.visible-print {
+    display: table-row !important; }
+  th.visible-print,
+  td.visible-print {
+    display: table-cell !important; } }
+
+.visible-print-block {
+  display: none !important; }
+
+@media print {
+  .visible-print-block {
+    display: block !important; } }
+
+.visible-print-inline {
+  display: none !important; }
+
+@media print {
+  .visible-print-inline {
+    display: inline !important; } }
+
+.visible-print-inline-block {
+  display: none !important; }
+
+@media print {
+  .visible-print-inline-block {
+    display: inline-block !important; } }
+
+@media print {
+  .hidden-print {
+    display: none !important; } }
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNzcyIsInNvdXJjZXMiOlsiYm9vdHN0cmFwLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsaUJBQWlCO0FBQ2pCLFlBQVk7QUFDWixtQkFBbUI7QUFDbkIsV0FBVztBQUNYLFlBQVk7QUFDWjs7OztHQUlHO0FBQ0gsNEVBQTRFO0FBQzVFLEFBQUEsSUFBSSxDQUFDO0VBQ0gsV0FBVyxFQUFFLFVBQVU7RUFDdkIsb0JBQW9CLEVBQUUsSUFBSTtFQUMxQix3QkFBd0IsRUFBRSxJQUFJLEdBQUc7O0FBRW5DLEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUMsR0FBRzs7QUFFZCxBQUFBLE9BQU87QUFDUCxLQUFLO0FBQ0wsT0FBTztBQUNQLFVBQVU7QUFDVixNQUFNO0FBQ04sTUFBTTtBQUNOLE1BQU07QUFDTixNQUFNO0FBQ04sSUFBSTtBQUNKLElBQUk7QUFDSixHQUFHO0FBQ0gsT0FBTztBQUNQLE9BQU8sQ0FBQztFQUNOLE9BQU8sRUFBRSxLQUFLLEdBQUc7O0FBRW5CLEFBQUEsS0FBSztBQUNMLE1BQU07QUFDTixRQUFRO0FBQ1IsS0FBSyxDQUFDO0VBQ0osT0FBTyxFQUFFLFlBQVk7RUFDckIsY0FBYyxFQUFFLFFBQVEsR0FBRzs7QUFFN0IsQUFBQSxLQUFLLEFBQUEsSUFBSyxFQUFBLEFBQUEsUUFBQyxBQUFBLEdBQVc7RUFDcEIsT0FBTyxFQUFFLElBQUk7RUFDYixNQUFNLEVBQUUsQ0FBQyxHQUFHOztDQUVkLEFBQUEsQUFBQSxNQUFDLEFBQUE7QUFDRCxRQUFRLENBQUM7RUFDUCxPQUFPLEVBQUUsSUFBSSxHQUFHOztBQUVsQixBQUFBLENBQUMsQ0FBQztFQUNBLGdCQUFnQixFQUFFLFdBQVcsR0FBRzs7QUFFbEMsQUFBQSxDQUFDLEFBQUEsT0FBTztBQUNSLENBQUMsQUFBQSxNQUFNLENBQUM7RUFDTixPQUFPLEVBQUUsQ0FBQyxHQUFHOztBQUVmLEFBQUEsSUFBSSxDQUFBLEFBQUEsS0FBQyxBQUFBLEVB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LEdBQUc7O0FBRXJCLEFBQUEsdUJBQXVCLEFBQUEsT0FBTyxDQUFDO0VBQzdCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsdUJBQXVCLEFBQUEsT0FBTyxDQUFDO0VBQzdCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsZ0JBQWdCLEFBQUEsT0FBTyxDQUFDO0VBQ3RCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsdUJBQXVCLEFBQUEsT0FBTyxDQUFDO0VBQzdCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsd0JBQXdCLEFBQUEsT0FBTyxDQUFDO0VBQzlCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEscUJBQXFCLEFBQUEsT0FBTyxDQUFDO0VBQzNCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsc0JBQXNCLEFBQUEsT0FBTyxDQUFDO0VBQzVCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsa0JBQWtCLEFBQUEsT0FBTyxDQUFDO0VBQ3hCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsd0JBQXdCLEFBQUEsT0FBTyxDQUFDO0VBQzlCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEscUJBQXFCLEFBQUEsT0FBTyxDQUFDO0VBQzNCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsd0JBQXdCLEFBQUEsT0FBTyxDQUFDO0VBQzlCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEscUJBQXFCLEFBQUEsT0FBTyxDQUFDO0VBQzNCLE9BQU8sRUFBRSxPQUFP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ckIsQUFBQSxzQkFBc0IsQUFBQSxPQUFPLENBQUM7RUFDNUIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxvQkFBb0IsQUFBQSxPQUFPLENBQUM7RUFDMUIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxzQkFBc0IsQUFBQSxPQUFPLENBQUM7RUFDNUIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxxQkFBcUIsQUFBQSxPQUFPLENBQUM7RUFDM0IsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxvQkFBb0IsQUFBQSxPQUFPLENBQUM7RUFDMUIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxrQkFBa0IsQUFBQSxPQUFPLENBQUM7RUFDeEIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxvQkFBb0IsQUFBQSxPQUFPLENBQUM7RUFDMUIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSw2QkFBNkIsQUFBQSxPQUFPLENBQUM7RUFDbkMsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSw0QkFBNEIsQUFBQSxPQUFPLENBQUM7RUFDbEMsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSwwQkFBMEIsQUFBQSxPQUFPLENBQUM7RUFDaEMsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSw0QkFBNEIsQUFBQSxPQUFPLENBQUM7RUFDbEMsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxnQkFBZ0IsQUFBQSxPQUFPLENBQUM7RUFDdEIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxpQkFBaUIsQUFBQSxPQUFPLENBQUM7RUFDdkIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxnQkFBZ0IsQUFBQSxPQUFPLENBQUM7RUFDdEIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFFckIsQUFBQSxpQkFBaUIsQUFBQSxPQUFPLENBQUM7RUFDdkIsT0FBTyxFQUFFLE9BQU8sR0FBRzs7QUFF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LEFBQUEsT0FBTyxDQUFDO0VBQ3RCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsbUJBQW1CLEFBQUEsT0FBTyxDQUFDO0VBQ3pCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsbUJBQW1CLEFBQUEsT0FBTyxDQUFDO0VBQ3pCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsdUJBQXVCLEFBQUEsT0FBTyxDQUFDO0VBQzdCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsc0JBQXNCLEFBQUEsT0FBTyxDQUFDO0VBQzVCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsb0JBQW9CLEFBQUEsT0FBTyxDQUFDO0VBQzFCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEseUJBQXlCLEFBQUEsT0FBTyxDQUFDO0VBQy9CLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsNEJBQTRCLEFBQUEsT0FBTyxDQUFDO0VBQ2xDLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEseUJBQXlCLEFBQUEsT0FBTyxDQUFDO0VBQy9CLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsdUJBQXVCLEFBQUEsT0FBTyxDQUFDO0VBQzdCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsdUJBQXVCLEFBQUEsT0FBTyxDQUFDO0VBQzdCLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEseUJBQXlCLEFBQUEsT0FBTyxDQUFDO0VBQy9CLE9BQU8sRUFBRSxPQUFPLEdBQUc7O0FBRXJCLEFBQUEsYUFBYSxB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L0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU87QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU87QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU87QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU87QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxHQUFHLEVBQUU7QUFDL0IsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxHQUFHLEVBQUUsQ0FBQztFQUM5QixnQkFBZ0IsRUFBRSxPQUFPLEdBQUc7O0FBRTlCLEFBQUEsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU8sQUFBQSxNQUFNO0FBQzNDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPLEFBQUEsTUFBTTtBQUMzQyxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxPQUFPLEFBQUEsTUFBTSxHQUFHLEVBQUU7QUFDM0MsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsTUFBTSxHQUFHLE9BQU87QUFDekMsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxBQUFBLE1BQU0sR0FBRyxFQUFFLENBQUM7RUFDMUMsZ0JBQWdCLEVBQUUsT0FBTyxHQUFHOztBQUU5QixBQUFBLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsR0FBRyxFQUFFO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsR0FBRyxFQUFFO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsR0FBRyxFQUFFO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsR0FBRyxFQUFFO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsR0FBRyxFQUFFO0FBQ2hDLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsR0FBRyxFQUFFLENBQUM7RUFDL0IsZ0JBQWdCLEVBQUUsT0FBTyxHQUFHOztBQUU5QixBQUFBLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRLEFBQUEsTUFBTTtBQUM1QyxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsUUFBUSxBQUFBLE1BQU07QUFDNUMsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxBQUFBLE1BQU0sR0FBRyxFQUFFO0FBQzVDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE1BQU0sR0FBRyxRQUFRO0FBQzFDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLFFBQVEsQUFBQSxNQUFNLEdBQUcsRUFBRSxDQUFDO0VBQzNDLGdCQUFnQixFQUFFLE9BQU8sR0FBRzs7QUFFOUIsQUFBQSxNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSztBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSztBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEdBQUcsRUFBRTtBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEdBQUcsRUFBRTtBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSztBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSztBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEdBQUcsRUFBRTtBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEdBQUcsRUFBRTtBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSztBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSztBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEdBQUcsRUFBRTtBQUM3QixNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEdBQUcsRUFBRSxDQUFDO0VBQzVCLGdCQUFnQixFQUFFLE9BQU8sR0FBRzs7QUFFOUIsQUFBQSxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsS0FBSyxBQUFBLE1BQU07QUFDekMsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLEtBQUssQUFBQSxNQUFNO0FBQ3pDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLEtBQUssQUFBQSxNQUFNLEdBQUcsRUFBRTtBQUN6QyxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxNQUFNLEdBQUcsS0FBSztBQUN2QyxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxLQUFLLEFBQUEsTUFBTSxHQUFHLEVBQUUsQ0FBQztFQUN4QyxnQkFBZ0IsRUFBRSxPQUFPLEdBQUc7O0FBRTlCLEFBQUEsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVE7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVE7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxHQUFHLEVBQUU7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxHQUFHLEVBQUU7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVE7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVE7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxHQUFHLEVBQUU7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxHQUFHLEVBQUU7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVE7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVE7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxHQUFHLEVBQUU7QUFDaEMsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxHQUFHLEVBQUUsQ0FBQztFQUMvQixnQkFBZ0IsRUFBRSxPQUFPLEdBQUc7O0FBRTlCLEFBQUEsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRSxBQUFBLFFBQVEsQUFBQSxNQUFNO0FBQzVDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxRQUFRLEFBQUEsTUFBTTtBQUM1QyxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsQUFBQSxRQUFRLEFBQUEsTUFBTSxHQUFHLEVBQUU7QUFDNUMsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsTUFBTSxHQUFHLFFBQVE7QUFDMUMsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsUUFBUSxBQUFBLE1BQU0sR0FBRyxFQUFFLENBQUM7RUFDM0MsZ0JBQWdCLEVBQUUsT0FBTyxHQUFHOztBQUU5QixBQUFBLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sR0FBRyxFQUFFO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sR0FBRyxFQUFFO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sR0FBRyxFQUFFO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sR0FBRyxFQUFFO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sR0FBRyxFQUFFO0FBQy9CLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sR0FBRyxFQUFFLENBQUM7RUFDOUIsZ0JBQWdCLEVBQUUsT0FBTyxHQUFHOztBQUU5QixBQUFBLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPLEFBQUEsTUFBTTtBQUMzQyxZQUFZLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLEFBQUEsT0FBTyxBQUFBLE1BQU07QUFDM0MsWUFBWSxHQUFHLEtBQUssR0FBRyxFQUFFLEFBQUEsT0FBTyxBQUFBLE1BQU0sR0FBRyxFQUFFO0FBQzNDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE1BQU0sR0FBRyxPQUFPO0FBQ3pDLFlBQVksR0FBRyxLQUFLLEdBQUcsRUFBRSxBQUFBLE9BQU8sQUFBQSxNQUFNLEdBQUcsRUFBRSxDQUFDO0VBQzFDLGdCQUFnQixFQUFFLE9BQU8sR0FBRzs7QUFFOUIsQUFBQSxpQkFBaUIsQ0FBQztFQUNoQixVQUFVLEVBQUUsSUFBSTtFQUNoQixVQUFVLEVBQUUsS0FBSyxHQUFHOztBQUNwQixNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxLQUFLO0VBQ2pDLEFBQUEsaUJBQWlCLENBQUM7SUFDaEIsS0FBSyxFQUFFLElBQUk7SUFDWCxhQUFhLEVBQUUsSUFBSTtJQUNuQixVQUFVLEVBQUUsTUFBTTtJQUNsQixrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsTUFBTSxFQUFFLGNBQWMsR0FBRztFQUN6QixBQUFBLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztJQUN6QixhQUFhLEVBQUUsQ0FBQyxHQUFHO0VBQ25CLEFBQUEsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRTtFQUM1QyxpQkFBaUIsR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFO0VBQzVDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUU7RUFDNUMsaUJBQWlCLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxFQUFFLEdBQUcsRUFBRTtFQUM1QyxpQkFBaUIsR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFO0VBQzVDLGlCQUFpQixHQUFHLE1BQU0sR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMzQyxXQUFXLEVBQUUsTUFBTSxHQUFHO0VBQzFCLEFBQUEsaUJBQWlCLEdBQUcsZUFBZSxDQUFDO0lBQ2xDLE1BQU0sRUFBRSxDQUFDLEdBQUc7RUFDWixBQUFBLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxZQUFZO0VBQ2pFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxZQUFZO0VBQ2pFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxZQUFZO0VBQ2pFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxZQUFZO0VBQ2pFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxZQUFZO0VBQ2pFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUM7SUFDaEUsV0FBVyxFQUFFLENBQUMsR0FBRztFQUNuQixBQUFBLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxXQUFXO0VBQ2hFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxXQUFXO0VBQ2hFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxXQUFXO0VBQ2hFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxXQUFXO0VBQ2hFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsQUFBQSxXQUFXO0VBQ2hFLGlCQUFpQixHQUFHLGVBQWUsR0FBRyxLQUFL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Q0FBQztFQUMvRixzQkFBc0IsRUFBRSxHQUFHO0VBQzNCLHVCQUF1QixFQUFFLEdBQUcsR0FBRzs7QUFDL0IsQUFBQSxNQUFNLEdBQUcsTUFBTSxBQUFBLFlBQVksR0FBRyxLQUFLLEFBQUEsWUFBWSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUMsRUFBRSxBQUFBLFlBQVk7QUFDL0UsTUFBTSxHQUFHLE1BQU0sQUFBQSxZQUFZLEdBQUcsS0FBSyxBQUFBLFlBQVksR0FBRyxFQUFFLEFBQUEsWUFBWSxDQUFDLEVBQUUsQUFBQSxZQUFZO0FBQy9FLE1BQU0sR0FBRyxNQUFNLEFBQUEsWUFBWSxHQUFHLEtBQUssQUFBQSxZQUFZLEdBQUcsRUFBRSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsWUFBWTtBQUMvRSxNQUFNLEdBQUcsTUFBTSxBQUFBLFlBQVksR0FBRyxLQUFLLEFBQUEsWUFBWSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUMsRUFBRSxBQUFBLFlBQVk7QUFDL0UsTUFBTSxHQUFHLGlCQUFpQixBQUFBLFlBQVksR0FBRyxNQUFNLEFBQUEsWUFBWSxHQUFHLEtBQUssQUFBQSxZQUFZLEdBQUcsRUFBRSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsWUFBWTtBQUMvRyxNQUFNLEdBQUcsaUJBQWlCLEFBQUEsWUFBWSxHQUFHLE1BQU0sQUFBQSxZQUFZLEdBQUcsS0FBSyxBQUFBLFlBQVksR0FBRyxFQUFFLEFBQUEsWUFBWSxDQUFDLEVBQUUsQUFBQSxZQUFZO0FBQy9HLE1BQU0sR0FBRyxpQkFBaUIsQUFBQSxZQUFZLEdBQUcsTUFBTSxBQUFBLFlBQVksR0FBRyxLQUFLLEFBQUEsWUFBWSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUMsRUFBRSxBQUFBLFlBQVk7QUFDL0csTUFBTSxHQUFHLGlCQUFpQixBQUFBLFlBQVksR0FBRyxNQUFNLEFBQUEsWUFBWSxHQUFHLEtBQUssQUFBQSxZQUFZLEdBQUcsRUFBRSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsWUFBWSxDQUFDO0VBQzlHLHNCQUFzQixFQUFFLEdBQUcsR0FBRzs7QUFDaEMsQUFBQSxNQUFNLEdBQUcsTUFBTSxBQUFBLFlBQVksR0FBRyxLQUFLLEFBQUEsWUFBWSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUMsRUFBRSxBQUFBLFdBQVc7QUFDOUUsTUFBTSxHQUFHLE1BQU0sQUFBQSxZQUFZLEdBQUcsS0FBSyxBQUFBLFlBQVksR0FBRyxFQUFFLEFBQUEsWUFBWSxDQUFDLEVBQUUsQUFBQSxXQUFXO0FBQzlFLE1BQU0sR0FBRyxNQUFNLEFBQUEsWUFBWSxHQUFHLEtBQUssQUFBQSxZQUFZLEdBQUcsRUFBRSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsV0FBVztBQUM5RSxNQUFNLEdBQUcsTUFBTSxBQUFBLFlBQVksR0FBRyxLQUFLLEFBQUEsWUFBWSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUMsRUFBRSxBQUFBLFdBQVc7QUFDOUUsTUFBTSxHQUFHLGlCQUFpQixBQUFBLFlBQVksR0FBRyxNQUFNLEFBQUEsWUFBWSxHQUFHLEtBQUssQUFBQSxZQUFZLEdBQUcsRUFBRSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsV0FBVztBQUM5RyxNQUFNLEdBQUcsaUJBQWlCLEFBQUEsWUFBWSxHQUFHLE1BQU0sQUFBQSxZQUFZLEdBQUcsS0FBSyxBQUFBLFlBQVksR0FBRyxFQUFFLEFBQUEsWUFBWSxDQUFDLEVBQUUsQUFBQSxXQUFXO0FBQzlHLE1BQU0sR0FBRyxpQkFBaUIsQUFBQSxZQUFZLEdBQUcsTUFBTSxBQUFBLFlBQVksR0FBRyxLQUFLLEFBQUEsWUFBWSxHQUFHLEVBQUUsQUFBQSxZQUFZLENBQUMsRUFBRSxBQUFBLFdBQVc7QUFDOUcsTUFBTSxHQUFHLGlCQUFpQixBQUFBLFlBQVksR0FBRyxNQUFNLEFBQUEsWUFBWSxHQUFHLEtBQUssQUFBQSxZQUFZLEdBQUcsRUFBRSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsV0FBVyxDQUFDO0VBQzdHLHVCQUF1QixFQUFFLEdBQUcsR0FBRzs7QUFFckMsQUFBQSxNQUFNLEdBQUcsTUFBTSxBQUFBLFdBQVc7QUFDMUIsTUFBTSxHQUFHLGlCQUFpQixBQUFBLFdBQVcsR0FBRyxNQUFNLEFBQUEsV0FBVyxDQUFDO0VBQ3hELDBCQUEwQixFQUFFLEdBQUc7RUFDL0IseUJBQXlCLEVBQUUsR0FBRyxHQUFHOztBQUNqQyxBQUFBLE1BQU0sR0FBRyxNQUFNLEFBQUEsV0FBVyxHQUFHLEtBQUssQUFBQSxXQUFXLEdBQUcsRUFBRSxBQUFBLFdBQVc7QUFDN0QsTUFBTSxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVztBQUM3RCxNQUFNLEdBQUcsaUJBQWlCLEFBQUEsV0FBVyxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVztBQUM1RixNQUFNLEdBQUcsaUJBQWlCLEFBQUEsV0FBVyxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVyxDQUFDO0VBQzNGLHlCQUF5QixFQUFFLEdBQUc7RUFDOUIsMEJBQTBCLEVBQUUsR0FBRyxHQUFHOztBQUNsQyxBQUFBLE1BQU0sR0FBRyxNQUFNLEFBQUEsV0FBVyxHQUFHLEtBQUssQUFBQSxXQUFXLEdBQUcsRUFBRSxBQUFBLFdBQVcsQ0FBQyxFQUFFLEFBQUEsWUFBWTtBQUM1RSxNQUFNLEdBQUcsTUFBTSxBQUFBLFdBQVcsR0FBRyxLQUFLLEFBQUEsV0FBVyxHQUFHLEVBQUUsQUFBQSxXQUFXLENBQUMsRUFBRSxBQUFBLFlBQVk7QUFDNUUsTUFBTSxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVyxDQUFDLEVBQUUsQUFBQSxZQUFZO0FBQzVFLE1BQU0sR0FBRyxNQUFNLEFBQUEsV0FBVyxHQUFHLEtBQUssQUFBQSxXQUFXLEdBQUcsRUFBRSxBQUFBLFdBQVcsQ0FBQyxFQUFFLEFBQUEsWUFBWTtBQUM1RSxNQUFNLEdBQUcsaUJBQWlCLEFBQUEsV0FBVyxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVyxDQUFDLEVBQUUsQUFBQSxZQUFZO0FBQzNHLE1BQU0sR0FBRyxpQkFBaUIsQUFBQSxXQUFXLEdBQUcsTUFBTSxBQUFBLFdBQVcsR0FBRyxLQUFLLEFBQUEsV0FBVyxHQUFHLEVBQUUsQUFBQSxXQUFXLENBQUMsRUFBRSxBQUFBLFlBQVk7QUFDM0csTUFBTSxHQUFHLGlCQUFpQixBQUFBLFdBQVcsR0FBRyxNQUFNLEFBQUEsV0FBVyxHQUFHLEtBQUssQUFBQSxXQUFXLEdBQUcsRUFBRSxBQUFBLFdBQVcsQ0FBQyxFQUFFLEFBQUEsWUFBWTtBQUMzRyxNQUFNLEdBQUcsaUJBQWlCLEFBQUEsV0FBVyxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVyxDQUFDLEVBQUUsQUFBQSxZQUFZLENBQUM7RUFDMUcseUJBQXlCLEVBQUUsR0FBRyxHQUFHOztBQUNuQyxBQUFBLE1BQU0sR0FBRyxNQUFNLEFBQUEsV0FBVyxHQUFHLEtBQUssQUFBQSxXQUFXLEdBQUcsRUFBRSxBQUFBLFdBQVcsQ0FBQyxFQUFFLEFBQUEsV0FBVztBQUMzRSxNQUFNLEdBQUcsTUFBTSxBQUFBLFdBQVcsR0FBRyxLQUFLLEFBQUEsV0FBVyxHQUFHLEVBQUUsQUFBQSxXQUFXLENBQUMsRUFBRSxBQUFBLFdBQVc7QUFDM0UsTUFBTSxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcsR0FBRyxFQUFFLEFBQUEsV0FBVyxDQUFDLEVBQUUsQUFBQSxXQUFXO0FBQzNFLE1BQU0sR0FBRyxNQUFNLEFBQUEsV0FBVyxHQUFHLEtBQUssQUFBQSxXQUFXLEdBQUcsRUFBRSxBQUFBLFdBQVcsQ0FBQyxFQUFFLEFBQUEsV0FBVztBQUMzRSxNQUFNLEdBQUcsaUJBQWlCLEFBQUEsV0FBVyxHQUFHLE1BQU0sQUFBQSxXQUFXLEdBQUcsS0FBSyxBQUFBLFdBQVcs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 */
+
+/*# sourceMappingURL=bootstrap.css.map */
diff --git a/app/css/bootstrap.css.map b/app/css/bootstrap.css.map
new file mode 100644
index 0000000..8019902
--- /dev/null
+++ b/app/css/bootstrap.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"bootstrap.css","sources":["bootstrap.css"],"names":[],"mappings":";AACA,iBAAiB;AACjB,YAAY;AACZ,mBAAmB;AACnB,WAAW;AACX,YAAY;AACZ;;;;GAIG;AACH,4EAA4E;AAC5E,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,UAAU;EACvB,oBAAoB,EAAE,IAAI;EAC1B,wBAAwB,EAAE,IAAI,GAAG;;AAEnC,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,OAAO;AACP,KAAK;AACL,OAAO;AACP,UAAU;AACV,MAAM;AACN,MAAM;AACN,MAAM;AACN,MAAM;AACN,IAAI;AACJ,IAAI;AACJ,GAAG;AACH,OAAO;AACP,OAAO,CAAC;EACN,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,KAAK;AACL,MAAM;AACN,QAAQ;AACR,KAAK,CAAC;EACJ,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,QAAQ,GAAG;;AAE7B,AAAA,KAAK,AAAA,IAAK,EAAA,AAAA,QAAC,AAAA,GAAW;EACpB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,CAAC,GAAG;;CAEd,AAAA,AAAA,MAAC,AAAA;AACD,QAAQ,CAAC;EACP,OAAO,EAAE,IAAI,GAAG;;AAElB,AAAA,CAAC,CAAC;EACA,gBAAgB,EAAE,WAAW,GAAG;;AAElC,AAAA,CAAC,AAAA,OAAO;AACR,CAAC,AAAA,MAAM,CAAC;EACN,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,EAAO;EACV,aAAa,EAAE,UAAU,GAAG;;AAE9B,AAAA,CAAC;AACD,MAAM,CAAC;EACL,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,GAAG,CAAC;EACF,UAAU,EAAE,MAAM,GAAG;;AAEvB,AAAA,EAAE,CAAC;EACD,SAAS,EAAE,GAAG;EACd,MAAM,EAAE,QAAQ,GAAG;;AAErB,AAAA,IAAI,CAAC;EACH,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,KAAK,CAAC;EACJ,SAAS,EAAE,GAAG,GAAG;;AAEnB,AAAA,GAAG;AACH,GAAG,CAAC;EACF,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,QAAQ,GAAG;;AAE7B,AAAA,GAAG,CAAC;EACF,GAAG,EAAE,MAAM,GAAG;;AAEhB,AAAA,GAAG,CAAC;EACF,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,GAAG,CAAC;EACF,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,GAAG,AAAA,IAAK,CAAA,KAAK,EAAE;EACb,QAAQ,EAAE,MAAM,GAAG;;AAErB,AAAA,MAAM,CAAC;EACL,MAAM,EAAE,QAAQ,GAAG;;AAErB,AAAA,EAAE,CAAC;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,GAAG,CAAC;EACF,QAAQ,EAAE,IAAI,GAAG;;AAEnB,AAAA,IAAI;AACJ,GAAG;AACH,GAAG;AACH,IAAI,CAAC;EACH,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,GAAG,GAAG;;AAEnB,AAAA,MAAM;AACN,KAAK;AACL,QAAQ;AACR,MAAM;AACN,QAAQ,CAAC;EACP,KAAK,EAAE,OAAO;EACd,IAAI,EAAE,OAAO;EACb,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,MAAM,CAAC;EACL,QAAQ,EAAE,OAAO,GAAG;;AAEtB,AAAA,MAAM;AACN,MAAM,CAAC;EACL,cAAc,EAAE,IAAI,GAAG;;AAEzB,AAAA,MAAM;AACN,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb;AACX,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACN,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACnB,kBAAkB,EAAE,MAAM;EAC1B,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,MAAM,CAAA,AAAA,QAAC,AAAA;AACP,IAAI,CAAC,KAAK,CAAA,AAAA,QAAC,AAAA,EAAU;EACnB,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,MAAM,AAAA,kBAAkB;AACxB,KAAK,AAAA,kBAAkB,CAAC;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,KAAK,CAAC;EACJ,WAAW,EAAE,MAAM,GAAG;;AAExB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf;AACN,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc;EAClB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B;AAC/C,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAAC;EAC9C,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACnB,kBAAkB,EAAE,SAAS;EAC7B,UAAU,EAAE,WAAW,GAAG;;AAE5B,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,8BAA8B;AAClD,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAAC;EAC9C,kBAAkB,EAAE,IAAI,GAAG;;AAE7B,AAAA,QAAQ,CAAC;EACP,MAAM,EAAE,iBAAiB;EACzB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,qBAAqB,GAAG;;AAEnC,AAAA,MAAM,CAAC;EACL,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,QAAQ,CAAC;EACP,QAAQ,EAAE,IAAI,GAAG;;AAEnB,AAAA,QAAQ,CAAC;EACP,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,KAAK,CAAC;EACJ,eAAe,EAAE,QAAQ;EACzB,cAAc,EAAE,CAAC,GAAG;;AAEtB,AAAA,EAAE;AACF,EAAE,CAAC;EACD,OAAO,EAAE,CAAC,GAAG;;AAEf,qFAAqF;AACrF,MAAM,CAAC,KAAK;EACV,AAAA,CAAC;EACD,CAAC,AAAA,OAAO;EACR,CAAC,AAAA,MAAM,CAAC;IACN,UAAU,EAAE,sBAAsB;IAClC,KAAK,EAAE,eAAe;IACtB,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,eAAe,GAAG;EACjC,AAAA,CAAC;EACD,CAAC,AAAA,QAAQ,CAAC;IACR,eAAe,EAAE,SAAS,GAAG;EAC/B,AAAA,CAAC,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;IACZ,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG;EACjC,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA,CAAM,MAAM,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG;EAClC,AAAA,CAAC,CAAA,AAAA,IAAC,EAAM,GAAG,AAAT,CAAU,MAAM;EAClB,CAAC,CAAA,AAAA,IAAC,EAAM,aAAa,AAAnB,CAAoB,MAAM,CAAC;IAC3B,OAAO,EAAE,EAAE,GAAG;EAChB,AAAA,GAAG;EACH,UAAU,CAAC;IACT,MAAM,EAAE,cAAc;IACtB,iBAAiB,EAAE,KAAK,GAAG;EAC7B,AAAA,KAAK,CAAC;IACJ,OAAO,EAAE,kBAAkB,GAAG;EAChC,AAAA,EAAE;EACF,GAAG,CAAC;IACF,iBAAiB,EAAE,KAAK,GAAG;EAC7B,AAAA,GAAG,CAAC;IACF,SAAS,EAAE,eAAe,GAAG;EAC/B,AAAA,CAAC;EACD,EAAE;EACF,EAAE,CAAC;IACD,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC,GAAG;EACd,AAAA,EAAE;EACF,EAAE,CAAC;IACD,gBAAgB,EAAE,KAAK,GAAG;EAC5B,AAAA,OAAO,CAAC;IACN,OAAO,EAAE,IAAI,GAAG;EAClB,AAAA,IAAI,GAAG,MAAM;EACb,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;IACtB,gBAAgB,EAAE,eAAe,GAAG;EACtC,AAAA,MAAM,CAAC;IACL,MAAM,EAAE,cAAc,GAAG;EAC3B,AAAA,MAAM,CAAC;IACL,eAAe,EAAE,mBAAmB,GAAG;EACvC,AAAA,MAAM,CAAC,EAAE;EACT,MAAM,CAAC,EAAE,CAAC;IACR,gBAAgB,EAAE,eAAe,GAAG;EACxC,AAAA,eAAe,CAAC,EAAE;EAClB,eAAe,CAAC,EAAE,CAAC;IACjB,MAAM,EAAE,yBAAyB,GAAG;;AAExC,UAAU;EACR,WAAW,EAAE,sBAAsB;EACnC,GAAG,EAAE,gDAAgD;EACrD,GAAG,EAAE,uDAAuD,CAAC,2BAA2B,EAAE,kDAAkD,CAAC,eAAe,EAAE,iDAAiD,CAAC,cAAc,EAAE,gDAAgD,CAAC,kBAAkB,EAAE,4EAA4E,CAAC,aAAa;;AAEjY,AAAA,UAAU,CAAC;EACT,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,OAAO,EAAE,YAAY;EACrB,WAAW,EAAE,sBAAsB;EACnC,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,CAAC;EACd,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS,GAAG;;AAEvC,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO;AACtB,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,aAAa,AAAA,OAAO,CAAC;EACnB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,aAAa,AAAA,OAAO,CAAC;EACnB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,yBAAyB,AAAA,OAAO,CAAC;EAC/B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,2BAA2B,AAAA,OAAO,CAAC;EACjC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,0BAA0B,AAAA,OAAO,CAAC;EAChC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,6BAA6B,AAAA,OAAO,CAAC;EACnC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,0BAA0B,AAAA,OAAO,CAAC;EAChC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,2BAA2B,AAAA,OAAO,CAAC;EACjC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,+BAA+B,AAAA,OAAO,CAAC;EACrC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,6BAA6B,AAAA,OAAO,CAAC;EACnC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iCAAiC,AAAA,OAAO,CAAC;EACvC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,yBAAyB,AAAA,OAAO,CAAC;EAC/B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,yBAAyB,AAAA,OAAO,CAAC;EAC/B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,yBAAyB,AAAA,OAAO,CAAC;EAC/B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,aAAa,AAAA,OAAO,CAAC;EACnB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,iBAAiB,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,eAAe,AAAA,OAAO,CAAC;EACrB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,mBAAmB,AAAA,OAAO,CAAC;EACzB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,2BAA2B,AAAA,OAAO,CAAC;EACjC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,0BAA0B,AAAA,OAAO,CAAC;EAChC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,yBAAyB,AAAA,OAAO,CAAC;EAC/B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,AAAA,OAAO,CAAC;EACpB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,CAAC;EACtB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,0BAA0B,AAAA,OAAO,CAAC;EAChC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,2BAA2B,AAAA,OAAO,CAAC;EACjC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,8BAA8B,AAAA,OAAO,CAAC;EACpC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kCAAkC,AAAA,OAAO,CAAC;EACxC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,4BAA4B,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,gCAAgC,AAAA,OAAO,CAAC;EACtC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,6BAA6B,AAAA,OAAO,CAAC;EACnC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,yBAAyB,AAAA,OAAO,CAAC;EAC/B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,AAAA,OAAO,CAAC;EAC9B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,0BAA0B,AAAA,OAAO,CAAC;EAChC,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,uBAAuB,AAAA,OAAO,CAAC;EAC7B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,sBAAsB,AAAA,OAAO,CAAC;EAC5B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,qBAAqB,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,oBAAoB,AAAA,OAAO,CAAC;EAC1B,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,kBAAkB,AAAA,OAAO,CAAC;EACxB,OAAO,EAAE,OAAO,GAAG;;AAErB,AAAA,CAAC,CAAC;EACA,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU,GAAG;;AAE3B,AAAA,CAAC,AAAA,OAAO;AACR,CAAC,AAAA,MAAM,CAAC;EACN,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU,GAAG;;AAE3B,AAAA,IAAI,CAAC;EACH,SAAS,EAAE,IAAI;EACf,2BAA2B,EAAE,gBAAgB,GAAG;;AAElD,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,8CAA8C;EAC3D,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAE3B,AAAA,KAAK;AACL,MAAM;AACN,MAAM;AACN,QAAQ,CAAC;EACP,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO;EAClB,WAAW,EAAE,OAAO,GAAG;;AAEzB,AAAA,CAAC,CAAC;EACA,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI,GAAG;;AACxB,AAAA,CAAC,AAAA,MAAM,EAAE,CAAC,AAAA,MAAM,CAAC;EACf,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,SAAS,GAAG;;AAC/B,AAAA,CAAC,AAAA,MAAM,CAAC;EACN,OAAO,EAAE,iCAAiC;EAC1C,cAAc,EAAE,IAAI,GAAG;;AAE3B,AAAA,MAAM,CAAC;EACL,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,GAAG,CAAC;EACF,cAAc,EAAE,MAAM,GAAG;;AAE3B,AAAA,eAAe,CAAC;EACd,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,YAAY,CAAC;EACX,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,OAAO;EACpB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,oBAAoB;EACxC,aAAa,EAAE,oBAAoB;EACnC,UAAU,EAAE,oBAAoB;EAChC,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,WAAW,CAAC;EACV,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,EAAE,CAAC;EACD,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI;EACnB,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,iBAAiB,GAAG;;AAElC,AAAA,QAAQ,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,MAAM;EAChB,IAAI,EAAE,gBAAgB;EACtB,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,kBAAkB,AAAA,OAAO,EAAE,kBAAkB,AAAA,MAAM,CAAC;EAClD,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,OAAO;EACjB,IAAI,EAAE,IAAI,GAAG;;CAEf,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACd,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACtB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EAC3B,WAAW,EAAE,OAAO;EACpB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,GAAG;EAChB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK;AACnB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK;AACnB,EAAE,CAAC,MAAM;AACT,GAAG,CAAC,KAAK;AACT,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACrB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACrB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACrB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACrB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACrB,GAAG,CAAC,MAAM,CAAC;EACT,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,CAAC;EACd,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,EAAE,EAAE,GAAG;AACP,EAAE,EAAE,GAAG;AACP,EAAE,EAAE,GAAG,CAAC;EACN,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACpB,GAAG,CAAC,MAAM;AACV,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACpB,GAAG,CAAC,MAAM;AACV,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACpB,GAAG,CAAC,MAAM,CAAC;EACT,SAAS,EAAE,GAAG,GAAG;;AAErB,AAAA,EAAE,EAAE,GAAG;AACP,EAAE,EAAE,GAAG;AACP,EAAE,EAAE,GAAG,CAAC;EACN,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACpB,GAAG,CAAC,MAAM;AACV,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACpB,GAAG,CAAC,MAAM;AACV,EAAE,CAAC,KAAK;AACR,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK;AACpB,GAAG,CAAC,MAAM,CAAC;EACT,SAAS,EAAE,GAAG,GAAG;;AAErB,AAAA,EAAE,EAAE,GAAG,CAAC;EACN,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,EAAE,EAAE,GAAG,CAAC;EACN,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,EAAE,EAAE,GAAG,CAAC;EACN,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,EAAE,EAAE,GAAG,CAAC;EACN,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,EAAE,EAAE,GAAG,CAAC;EACN,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,EAAE,EAAE,GAAG,CAAC;EACN,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,CAAC,CAAC;EACA,MAAM,EAAE,QAAQ,GAAG;;AAErB,AAAA,KAAK,CAAC;EACJ,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,GAAG,GAAG;;AACnB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,KAAK,CAAC;IACJ,SAAS,EAAE,IAAI,GAAG;;AAExB,AAAA,KAAK;AACL,MAAM,CAAC;EACL,SAAS,EAAE,GAAG,GAAG;;AAEnB,AAAA,IAAI;AACJ,KAAK,CAAC;EACJ,gBAAgB,EAAE,OAAO;EACzB,OAAO,EAAE,IAAI,GAAG;;AAElB,AAAA,UAAU,CAAC;EACT,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,WAAW,CAAC;EACV,UAAU,EAAE,KAAK,GAAG;;AAEtB,AAAA,YAAY,CAAC;EACX,UAAU,EAAE,MAAM,GAAG;;AAEvB,AAAA,aAAa,CAAC;EACZ,UAAU,EAAE,OAAO,GAAG;;AAExB,AAAA,YAAY,CAAC;EACX,WAAW,EAAE,MAAM,GAAG;;AAExB,AAAA,eAAe,CAAC;EACd,cAAc,EAAE,SAAS,GAAG;;AAE9B,AAAA,eAAe,EAAE,WAAW,CAAC;EAC3B,cAAc,EAAE,SAAS,GAAG;;AAE9B,AAAA,gBAAgB,CAAC;EACf,cAAc,EAAE,UAAU,GAAG;;AAE/B,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,CAAC,AAAA,aAAa,AAAA,MAAM;AACpB,CAAC,AAAA,aAAa,AAAA,MAAM,CAAC;EACnB,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,CAAC,AAAA,aAAa,AAAA,MAAM;AACpB,CAAC,AAAA,aAAa,AAAA,MAAM,CAAC;EACnB,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,UAAU,CAAC;EACT,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,CAAC,AAAA,UAAU,AAAA,MAAM;AACjB,CAAC,AAAA,UAAU,AAAA,MAAM,CAAC;EAChB,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,CAAC,AAAA,aAAa,AAAA,MAAM;AACpB,CAAC,AAAA,aAAa,AAAA,MAAM,CAAC;EACnB,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,YAAY,CAAC;EACX,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,CAAC,AAAA,YAAY,AAAA,MAAM;AACnB,CAAC,AAAA,YAAY,AAAA,MAAM,CAAC;EAClB,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,WAAW,CAAC;EACV,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,WAAW,AAAA,MAAM;AAClB,CAAC,AAAA,WAAW,AAAA,MAAM,CAAC;EACjB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,WAAW,CAAC;EACV,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,WAAW,AAAA,MAAM;AAClB,CAAC,AAAA,WAAW,AAAA,MAAM,CAAC;EACjB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,QAAQ,CAAC;EACP,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,QAAQ,AAAA,MAAM;AACf,CAAC,AAAA,QAAQ,AAAA,MAAM,CAAC;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,WAAW,CAAC;EACV,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,WAAW,AAAA,MAAM;AAClB,CAAC,AAAA,WAAW,AAAA,MAAM,CAAC;EACjB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,UAAU,CAAC;EACT,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,UAAU,AAAA,MAAM;AACjB,CAAC,AAAA,UAAU,AAAA,MAAM,CAAC;EAChB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,CAAC;EACX,cAAc,EAAE,GAAG;EACnB,MAAM,EAAE,WAAW;EACnB,aAAa,EAAE,iBAAiB,GAAG;;AAErC,AAAA,EAAE;AACF,EAAE,CAAC;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,EAAE,CAAC;EACJ,aAAa,EAAE,CAAC,GAAG;;AAEvB,AAAA,cAAc,CAAC;EACb,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,YAAY,CAAC;EACX,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,IAAI,GAAG;;AACpB,AAAA,YAAY,GAAG,EAAE,CAAC;EAChB,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,GAAG;EACjB,aAAa,EAAE,GAAG,GAAG;;AAEzB,AAAA,EAAE,CAAC;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI,GAAG;;AAExB,AAAA,EAAE;AACF,EAAE,CAAC;EACD,WAAW,EAAE,OAAO,GAAG;;AAEzB,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,CAAC,GAAG;;AAEnB,AAAA,cAAc,CAAC,EAAE,AAAA,OAAO,EAAE,cAAc,CAAC,EAAE,AAAA,MAAM,CAAC;EAChD,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,cAAc,CAAC,EAAE,AAAA,MAAM,CAAC;EACtB,KAAK,EAAE,IAAI,GAAG;;AAEhB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,cAAc,CAAC,EAAE,CAAC;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM,GAAG;EACxB,AAAA,cAAc,CAAC,EAAE,CAAC;IAChB,WAAW,EAAE,KAAK,GAAG;;AAEzB,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA;AACL,IAAI,CAAA,AAAA,mBAAC,AAAA,EAAqB;EACxB,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,kBAAkB,GAAG;;AAEtC,AAAA,WAAW,CAAC;EACV,SAAS,EAAE,GAAG,GAAG;;AAEnB,AAAA,UAAU,CAAC;EACT,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,QAAQ;EAChB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,iBAAiB,GAAG;;AACjC,AAAA,UAAU,CAAC,CAAC,AAAA,WAAW;AACvB,UAAU,CAAC,EAAE,AAAA,WAAW;AACxB,UAAU,CAAC,EAAE,AAAA,WAAW,CAAC;EACvB,aAAa,EAAE,CAAC,GAAG;;AACrB,AAAA,UAAU,CAAC,MAAM;AACjB,UAAU,CAAC,KAAK;AAChB,UAAU,CAAC,MAAM,CAAC;EAChB,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,UAAU,CAAC,MAAM,AAAA,OAAO;AACxB,UAAU,CAAC,KAAK,AAAA,OAAO;AACvB,UAAU,CAAC,MAAM,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,aAAa,GAAG;;AAE/B,AAAA,mBAAmB;AACnB,UAAU,AAAA,WAAW,CAAC;EACpB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,CAAC;EACf,YAAY,EAAE,iBAAiB;EAC/B,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,KAAK,GAAG;;AACpB,AAAA,mBAAmB,CAAC,MAAM,AAAA,OAAO;AACjC,mBAAmB,CAAC,KAAK,AAAA,OAAO;AAChC,mBAAmB,CAAC,MAAM,AAAA,OAAO;AACjC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,OAAO;AACnC,UAAU,AAAA,WAAW,CAAC,KAAK,AAAA,OAAO;AAClC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,EAAE,GAAG;;AAChB,AAAA,mBAAmB,CAAC,MAAM,AAAA,MAAM;AAChC,mBAAmB,CAAC,KAAK,AAAA,MAAM;AAC/B,mBAAmB,CAAC,MAAM,AAAA,MAAM;AAChC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,MAAM;AAClC,UAAU,AAAA,WAAW,CAAC,KAAK,AAAA,MAAM;AACjC,UAAU,AAAA,WAAW,CAAC,MAAM,AAAA,MAAM,CAAC;EACjC,OAAO,EAAE,aAAa,GAAG;;AAE7B,AAAA,OAAO,CAAC;EACN,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,OAAO,GAAG;;AAEzB,AAAA,IAAI;AACJ,GAAG;AACH,GAAG;AACH,IAAI,CAAC;EACH,WAAW,EAAE,iDAAiD,GAAG;;AAEnE,AAAA,IAAI,CAAC;EACH,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,GAAG;EACd,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,GAAG,CAAC;EACF,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,GAAG;EACd,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,mBAAmB,GAAG;;AACjD,AAAA,GAAG,CAAC,GAAG,CAAC;EACN,OAAO,EAAE,CAAC;EACV,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,IAAI,GAAG;;AAEvB,AAAA,GAAG,CAAC;EACF,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,QAAQ;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,UAAU,EAAE,SAAS;EACrB,SAAS,EAAE,UAAU;EACrB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,GAAG,CAAC,IAAI,CAAC;EACP,OAAO,EAAE,CAAC;EACV,SAAS,EAAE,OAAO;EAClB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,QAAQ;EACrB,gBAAgB,EAAE,WAAW;EAC7B,aAAa,EAAE,CAAC,GAAG;;AAEvB,AAAA,eAAe,CAAC;EACd,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,MAAM,GAAG;;AAEvB,AAAA,UAAU,CAAC;EACT,YAAY,EAAE,IAAI;EAClB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,UAAU,AAAA,OAAO,EAAE,UAAU,AAAA,MAAM,CAAC;EAClC,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,UAAU,AAAA,MAAM,CAAC;EACf,KAAK,EAAE,IAAI,GAAG;;AAChB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,KAAK,GAAG;;AACnB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,KAAK,GAAG;;AACnB,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,MAAM,GAAG;;AAEtB,AAAA,gBAAgB,CAAC;EACf,YAAY,EAAE,IAAI;EAClB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,gBAAgB,AAAA,OAAO,EAAE,gBAAgB,AAAA,MAAM,CAAC;EAC9C,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACrB,KAAK,EAAE,IAAI,GAAG;;AAElB,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,KAAK,GAAG;;AACtB,AAAA,IAAI,AAAA,OAAO,EAAE,IAAI,AAAA,MAAM,CAAC;EACtB,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,IAAI,AAAA,MAAM,CAAC;EACT,KAAK,EAAE,IAAI,GAAG;;AAElB,AAAA,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;EACzhB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,GAAG;EACf,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAAG;;AAExB,AAAA,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;EACpI,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,QAAQ,GAAG;;AAEpB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,GAAG,GAAG;;AAEf,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,GAAG,GAAG;;AAEf,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,GAAG,GAAG;;AAEf,AAAA,UAAU,CAAC;EACT,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,UAAU,CAAC;EACT,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,UAAU,CAAC;EACT,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,QAAQ,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,GAAG,GAAG;;AAEf,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,GAAG,GAAG;;AAEf,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,GAAG,GAAG;;AAEf,AAAA,eAAe,CAAC;EACd,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,eAAe,CAAC;EACd,KAAK,EAAE,SAAS,GAAG;;AAErB,AAAA,eAAe,CAAC;EACd,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,IAAI,GAAG;;AAEf,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,QAAQ,GAAG;;AAEnB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,GAAG,GAAG;;AAEd,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,GAAG,GAAG;;AAEd,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,IAAI,EAAE,GAAG,GAAG;;AAEd,AAAA,eAAe,CAAC;EACd,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,eAAe,CAAC;EACd,IAAI,EAAE,SAAS,GAAG;;AAEpB,AAAA,eAAe,CAAC;EACd,IAAI,EAAE,IAAI,GAAG;;AAEf,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,EAAE,GAAG;;AAEpB,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,QAAQ,GAAG;;AAE1B,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,gBAAgB,CAAC;EACf,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,iBAAiB,CAAC;EAChB,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,iBAAiB,CAAC;EAChB,WAAW,EAAE,SAAS,GAAG;;AAE3B,AAAA,iBAAiB,CAAC;EAChB,WAAW,EAAE,IAAI,GAAG;;AAEtB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACpI,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,QAAQ,GAAG;EACpB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,QAAQ,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG;EACnB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,EAAE,GAAG;EACpB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,QAAQ,GAAG;EAC1B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG;;AAExB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACpI,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,QAAQ,GAAG;EACpB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,QAAQ,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG;EACnB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,EAAE,GAAG;EACpB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,QAAQ,GAAG;EAC1B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG;;AAExB,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACpI,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,QAAQ,GAAG;EACpB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,UAAU,CAAC;IACT,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,QAAQ,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,GAAG,GAAG;EACf,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,SAAS,GAAG;EACrB,AAAA,eAAe,CAAC;IACd,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG;EACnB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,cAAc,CAAC;IACb,IAAI,EAAE,GAAG,GAAG;EACd,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,SAAS,GAAG;EACpB,AAAA,eAAe,CAAC;IACd,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,EAAE,GAAG;EACpB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,QAAQ,GAAG;EAC1B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,gBAAgB,CAAC;IACf,WAAW,EAAE,GAAG,GAAG;EACrB,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,SAAS,GAAG;EAC3B,AAAA,iBAAiB,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG;;AAExB,AAAA,KAAK,CAAC;EACJ,gBAAgB,EAAE,WAAW,GAAG;;AAElC,AAAA,OAAO,CAAC;EACN,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,GAAG;EACnB,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,EAAE,CAAC;EACD,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,MAAM,CAAC;EACL,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACxB,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACxB,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACxB,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACxB,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACxB,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EACvB,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,OAAO;EACpB,cAAc,EAAE,GAAG;EACnB,UAAU,EAAE,cAAc,GAAG;;AAC/B,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EACvB,cAAc,EAAE,MAAM;EACtB,aAAa,EAAE,cAAc,GAAG;;AAClC,AAAA,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC9C,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC9C,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC/C,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC/C,MAAM,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAChD,MAAM,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE,CAAC;EAC/C,UAAU,EAAE,CAAC,GAAG;;AAClB,AAAA,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;EACrB,UAAU,EAAE,cAAc,GAAG;;AAC/B,AAAA,MAAM,CAAC,MAAM,CAAC;EACZ,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,gBAAgB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AAClC,gBAAgB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AAClC,gBAAgB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AAClC,gBAAgB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AAClC,gBAAgB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AAClC,gBAAgB,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EACjC,OAAO,EAAE,GAAG,GAAG;;AAEjB,AAAA,eAAe,CAAC;EACd,MAAM,EAAE,cAAc,GAAG;;AACzB,AAAA,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACjC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACjC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACjC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACjC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACjC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EAChC,MAAM,EAAE,cAAc,GAAG;;AAC3B,AAAA,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;AACjC,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;EAChC,mBAAmB,EAAE,GAAG,GAAG;;AAE/B,AAAA,cAAc,GAAG,KAAK,GAAG,EAAE,AAAA,YAAa,CAAA,GAAG,EAAE;EAC3C,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,MAAM,CAAC;EAC9B,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,KAAK,CAAC,GAAG,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,EAAe;EACvB,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,YAAY,GAAG;;AAE1B,AAAA,KAAK,CAAC,EAAE,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb;AACT,KAAK,CAAC,EAAE,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,EAAe;EACtB,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,UAAU,GAAG;;AAExB,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE,CAAC;EAC9B,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM;AAC3C,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM;AAC3C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM,GAAG,EAAE;AAC3C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,MAAM,GAAG,OAAO;AACzC,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM,GAAG,EAAE,CAAC;EAC1C,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE,CAAC;EAC/B,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM;AAC5C,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM;AAC5C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,GAAG,EAAE;AAC5C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,MAAM,GAAG,QAAQ;AAC1C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,GAAG,EAAE,CAAC;EAC3C,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,GAAG,EAAE;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,GAAG,EAAE;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,GAAG,EAAE;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,GAAG,EAAE;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,GAAG,EAAE;AAC7B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,GAAG,EAAE,CAAC;EAC5B,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK,AAAA,MAAM;AACzC,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,KAAK,AAAA,MAAM;AACzC,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,AAAA,MAAM,GAAG,EAAE;AACzC,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,MAAM,GAAG,KAAK;AACvC,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,KAAK,AAAA,MAAM,GAAG,EAAE,CAAC;EACxC,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE;AAChC,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,GAAG,EAAE,CAAC;EAC/B,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM;AAC5C,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM;AAC5C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,GAAG,EAAE;AAC5C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,MAAM,GAAG,QAAQ;AAC1C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,QAAQ,AAAA,MAAM,GAAG,EAAE,CAAC;EAC3C,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE;AAC/B,MAAM,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,GAAG,EAAE,CAAC;EAC9B,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM;AAC3C,YAAY,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM;AAC3C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM,GAAG,EAAE;AAC3C,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,MAAM,GAAG,OAAO;AACzC,YAAY,GAAG,KAAK,GAAG,EAAE,AAAA,OAAO,AAAA,MAAM,GAAG,EAAE,CAAC;EAC1C,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,iBAAiB,CAAC;EAChB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,KAAK,GAAG;;AACpB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EACjC,AAAA,iBAAiB,CAAC;IAChB,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,MAAM;IAClB,kBAAkB,EAAE,wBAAwB;IAC5C,MAAM,EAAE,cAAc,GAAG;EACzB,AAAA,iBAAiB,GAAG,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,GAAG;EACnB,AAAA,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;EAC5C,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;EAC5C,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;EAC5C,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;EAC5C,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE;EAC5C,iBAAiB,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG;EAC1B,AAAA,iBAAiB,GAAG,eAAe,CAAC;IAClC,MAAM,EAAE,CAAC,GAAG;EACZ,AAAA,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;EACjE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;EACjE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;EACjE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;EACjE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;EACjE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY,CAAC;IAChE,WAAW,EAAE,CAAC,GAAG;EACnB,AAAA,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW,CAAC;IAC/D,YAAY,EAAE,CAAC,GAAG;EACpB,AAAA,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;EAChE,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE,CAAC;IAC/D,aAAa,EAAE,CAAC,GAAG;;AAE7B,AAAA,QAAQ,CAAC;EACP,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;EACT,SAAS,EAAE,CAAC,GAAG;;AAEjB,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,CAAC;EACV,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,iBAAiB,GAAG;;AAErC,AAAA,KAAK,CAAC;EACJ,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,GAAG;EAClB,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACnB,kBAAkB,EAAE,UAAU;EAC9B,eAAe,EAAE,UAAU;EAC3B,UAAU,EAAE,UAAU,GAAG;;AAE3B,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACN,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACrB,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM,GAAG;;AAExB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,EAAa;EACjB,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,MAAM,CAAA,AAAA,QAAC,AAAA;AACP,MAAM,CAAA,AAAA,IAAC,AAAA,EAAM;EACX,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,MAAM;AACxB,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,MAAM;AACzB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,MAAM,CAAC;EAC3B,OAAO,EAAE,iCAAiC;EAC1C,cAAc,EAAE,IAAI,GAAG;;AAEzB,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,GAAG;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI;EACtB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EAChD,kBAAkB,EAAE,4DAA4D;EAChF,aAAa,EAAE,4DAA4D;EAC3E,UAAU,EAAE,4DAA4D,GAAG;;AAC3E,AAAA,aAAa,AAAA,MAAM,CAAC;EAClB,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,CAAC;EACV,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB;EAC1F,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,wBAAwB,GAAG;;AACvF,AAAA,aAAa,AAAA,kBAAkB,CAAC;EAC9B,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,CAAC,GAAG;;AACf,AAAA,aAAa,AAAA,sBAAsB,CAAC;EAClC,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,aAAa,AAAA,2BAA2B,CAAC;EACvC,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,aAAa,AAAA,YAAY,CAAC;EACxB,MAAM,EAAE,CAAC;EACT,gBAAgB,EAAE,WAAW,GAAG;;AAClC,AAAA,aAAa,CAAA,AAAA,QAAC,AAAA,GAAW,aAAa,CAAA,AAAA,QAAC,AAAA;AACvC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,aAAa,CAAC;EAC/B,gBAAgB,EAAE,OAAO;EACzB,OAAO,EAAE,CAAC,GAAG;;AACf,AAAA,aAAa,CAAA,AAAA,QAAC,AAAA;AACd,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,aAAa,CAAC;EAC/B,MAAM,EAAE,WAAW,GAAG;;AAE1B,AAAA,QAAQ,AAAA,aAAa,CAAC;EACpB,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACnB,kBAAkB,EAAE,IAAI,GAAG;;AAE7B,MAAM,CAAC,MAAM,OAAO,6BAA6B,EAAE,CAAC;EAClD,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,aAAa;EAC/B,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,aAAa;EAC/B,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,CAAsB,aAAa;EACzC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,aAAa,CAAC;IAC/B,WAAW,EAAE,IAAI,GAAG;EACtB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,SAAS,EAAE,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAClE,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC/C,eAAe,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EACtB,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,SAAS;EAC3B,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EACrC,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC/C,eAAe;AACf,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EACN,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,CAAsB,SAAS;EACrC,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EACrC,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EAC/C,eAAe;AACf,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EACN,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,SAAS;EAC5B,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EACrC,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EAC/C,eAAe;AACf,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc;IAClB,WAAW,EAAE,IAAI,GAAG;EACtB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,SAAS,EAAE,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAClE,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC/C,eAAe,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EACtB,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CAAY,SAAS;EAC3B,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EACrC,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EAC/C,eAAe;AACf,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;EACN,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB,CAAsB,SAAS;EACrC,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EACrC,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EAC/C,eAAe;AACf,KAAK,CAAA,AAAA,IAAC,CAAK,gBAAgB,AAArB;EACN,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,SAAS;EAC5B,eAAe,GAAG,KAAK,AAAA,aAAa,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EACrC,eAAe,GAAG,KAAK,AAAA,kBAAkB,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EAC1C,eAAe,GAAG,gBAAgB,GAAG,KAAK,AAAA,IAAI,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EAC/C,eAAe;AACf,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAc;IAClB,WAAW,EAAE,IAAI,GAAG;;AAExB,AAAA,WAAW,CAAC;EACV,aAAa,EAAE,IAAI,GAAG;;AAExB,AAAA,MAAM;AACN,SAAS,CAAC;EACR,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,MAAM,CAAC,KAAK;AACZ,SAAS,CAAC,KAAK,CAAC;EACd,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,OAAO,GAAG;;AAEtB,AAAA,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACb,aAAa,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACpB,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf;AAChB,gBAAgB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACtC,QAAQ,EAAE,QAAQ;EAClB,WAAW,EAAE,KAAK;EAClB,UAAU,EAAE,MAAM,GAAG;;AAEvB,AAAA,MAAM,GAAG,MAAM;AACf,SAAS,GAAG,SAAS,CAAC;EACpB,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,aAAa;AACb,gBAAgB,CAAC;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,CAAC;EAChB,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,aAAa,GAAG,aAAa;AAC7B,gBAAgB,GAAG,gBAAgB,CAAC;EAClC,UAAU,EAAE,CAAC;EACb,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,EAAa,AAAA,QAAC,AAAA,GAAW,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,SAAS;AAC3D,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACzB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAgB,AAAA,QAAC,AAAA;AACvB,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,SAAS;AAC/B,QAAQ,CAAA,AAAA,QAAC,AAAA;AACT,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACrB,MAAM,EAAE,WAAW,GAAG;;AAExB,AAAA,aAAa,AAAA,SAAS;AACtB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,aAAa;AAChC,gBAAgB,AAAA,SAAS;AACzB,QAAQ,CAAA,AAAA,QAAC,AAAA;AACT,gBAAgB,CAAC;EACf,MAAM,EAAE,WAAW,GAAG;;AAExB,AAAA,MAAM,AAAA,SAAS,CAAC,KAAK;AACrB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,MAAM,CAAC,KAAK;AAC/B,SAAS,AAAA,SAAS,CAAC,KAAK;AACxB,QAAQ,CAAA,AAAA,QAAC,AAAA;AACT,SAAS,CAAC,KAAK,CAAC;EACd,MAAM,EAAE,WAAW,GAAG;;AAExB,AAAA,oBAAoB,CAAC;EACnB,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,GAAG;EACnB,aAAa,EAAE,CAAC;EAChB,UAAU,EAAE,IAAI,GAAG;;AACnB,AAAA,oBAAoB,AAAA,SAAS,EAAE,eAAe,GAAG,oBAAoB,AAAA,aAAa;AAClF,eAAe,GAAG,oBAAoB,AAAA,kBAAkB;AACxD,eAAe,GAAG,gBAAgB,GAAG,oBAAoB,AAAA,IAAI,EAAE,oBAAoB,AAAA,SAAS,EAAE,eAAe,GAAG,oBAAoB,AAAA,aAAa;AACjJ,eAAe,GAAG,oBAAoB,AAAA,kBAAkB;AACxD,eAAe,GAAG,gBAAgB,GAAG,oBAAoB,AAAA,IAAI,CAAC;EAC5D,YAAY,EAAE,CAAC;EACf,aAAa,EAAE,CAAC,GAAG;;AAEvB,AAAA,SAAS,EAAE,eAAe,GAAG,aAAa;AAC1C,eAAe,GAAG,kBAAkB;AACpC,eAAe,GAAG,gBAAgB,GAAG,IAAI,CAAC;EACxC,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,MAAM,AAAA,SAAS,EAAE,eAAe,GAAG,MAAM,AAAA,aAAa;AACtD,eAAe,GAAG,MAAM,AAAA,kBAAkB;AAC1C,eAAe,GAAG,gBAAgB,GAAG,MAAM,AAAA,IAAI,CAAC;EAC9C,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,QAAQ,AAAA,SAAS,EAAE,eAAe,GAAG,QAAQ,AAAA,aAAa;AAC1D,eAAe,GAAG,QAAQ,AAAA,kBAAkB;AAC5C,eAAe,GAAG,gBAAgB,GAAG,QAAQ,AAAA,IAAI;AACjD,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,SAAS;AACzB,eAAe,GAAG,MAAM,AAAA,aAAa,CAAA,AAAA,QAAC,AAAA;AACtC,eAAe,GAAG,MAAM,AAAA,kBAAkB,CAAA,AAAA,QAAC,AAAA;AAC3C,eAAe,GAAG,gBAAgB,GAAG,MAAM,AAAA,IAAI,CAAA,AAAA,QAAC,AAAA,EAAU;EACxD,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,cAAc,CAAC,aAAa,CAAC;EAC3B,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,cAAc,CAAC,MAAM,AAAA,aAAa,CAAC;EACjC,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,cAAc,CAAC,QAAQ,AAAA,aAAa;AACpC,cAAc,CAAC,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,aAAa,CAAC;EAC3C,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,cAAc,CAAC,oBAAoB,CAAC;EAClC,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,SAAS,EAAE,eAAe,GAAG,aAAa;AAC1C,eAAe,GAAG,kBAAkB;AACpC,eAAe,GAAG,gBAAgB,GAAG,IAAI,CAAC;EACxC,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,MAAM,AAAA,SAAS,EAAE,eAAe,GAAG,MAAM,AAAA,aAAa;AACtD,eAAe,GAAG,MAAM,AAAA,kBAAkB;AAC1C,eAAe,GAAG,gBAAgB,GAAG,MAAM,AAAA,IAAI,CAAC;EAC9C,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,QAAQ,AAAA,SAAS,EAAE,eAAe,GAAG,QAAQ,AAAA,aAAa;AAC1D,eAAe,GAAG,QAAQ,AAAA,kBAAkB;AAC5C,eAAe,GAAG,gBAAgB,GAAG,QAAQ,AAAA,IAAI;AACjD,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,SAAS;AACzB,eAAe,GAAG,MAAM,AAAA,aAAa,CAAA,AAAA,QAAC,AAAA;AACtC,eAAe,GAAG,MAAM,AAAA,kBAAkB,CAAA,AAAA,QAAC,AAAA;AAC3C,eAAe,GAAG,gBAAgB,GAAG,MAAM,AAAA,IAAI,CAAA,AAAA,QAAC,AAAA,EAAU;EACxD,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,cAAc,CAAC,aAAa,CAAC;EAC3B,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,cAAc,CAAC,MAAM,AAAA,aAAa,CAAC;EACjC,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,cAAc,CAAC,QAAQ,AAAA,aAAa;AACpC,cAAc,CAAC,MAAM,CAAA,AAAA,QAAC,AAAA,CAAS,aAAa,CAAC;EAC3C,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,cAAc,CAAC,oBAAoB,CAAC;EAClC,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO,GAAG;;AAEzB,AAAA,aAAa,CAAC;EACZ,QAAQ,EAAE,QAAQ,GAAG;;AACrB,AAAA,aAAa,CAAC,aAAa,CAAC;EAC1B,aAAa,EAAE,MAAM,GAAG;;AAE5B,AAAA,sBAAsB,CAAC;EACrB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,CAAC;EACR,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,cAAc,EAAE,IAAI,GAAG;;AAEzB,AAAA,SAAS,GAAG,sBAAsB,EAAE,eAAe,GAAG,aAAa,GAAG,sBAAsB,EAAE,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,GAAG,sBAAsB;AAC/N,eAAe,GAAG,sBAAsB;AACxC,cAAc,CAAC,aAAa,GAAG,sBAAsB,CAAC;EACpD,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,SAAS,GAAG,sBAAsB,EAAE,eAAe,GAAG,aAAa,GAAG,sBAAsB,EAAE,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,GAAG,sBAAsB;AAC/N,eAAe,GAAG,sBAAsB;AACxC,cAAc,CAAC,aAAa,GAAG,sBAAsB,CAAC;EACpD,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,YAAY,CAAC,WAAW;AACxB,YAAY,CAAC,cAAc;AAC3B,YAAY,CAAC,MAAM;AACnB,YAAY,CAAC,SAAS;AACtB,YAAY,CAAC,aAAa;AAC1B,YAAY,CAAC,gBAAgB;AAC7B,YAAY,AAAA,MAAM,CAAC,KAAK;AACxB,YAAY,AAAA,SAAS,CAAC,KAAK;AAC3B,YAAY,AAAA,aAAa,CAAC,KAAK;AAC/B,YAAY,AAAA,gBAAgB,CAAC,KAAK,CAAC;EACjC,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,YAAY,CAAC,aAAa,CAAC;EACzB,YAAY,EAAE,OAAO;EACrB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG;;AACnD,AAAA,YAAY,CAAC,aAAa,AAAA,MAAM,CAAC;EAC/B,YAAY,EAAE,OAAO;EACrB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;EACzE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG;;AAExE,AAAA,YAAY,CAAC,kBAAkB,CAAC;EAC9B,KAAK,EAAE,OAAO;EACd,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,CAAC,sBAAsB,CAAC;EAClC,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,YAAY,CAAC,WAAW;AACxB,YAAY,CAAC,cAAc;AAC3B,YAAY,CAAC,MAAM;AACnB,YAAY,CAAC,SAAS;AACtB,YAAY,CAAC,aAAa;AAC1B,YAAY,CAAC,gBAAgB;AAC7B,YAAY,AAAA,MAAM,CAAC,KAAK;AACxB,YAAY,AAAA,SAAS,CAAC,KAAK;AAC3B,YAAY,AAAA,aAAa,CAAC,KAAK;AAC/B,YAAY,AAAA,gBAAgB,CAAC,KAAK,CAAC;EACjC,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,YAAY,CAAC,aAAa,CAAC;EACzB,YAAY,EAAE,OAAO;EACrB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG;;AACnD,AAAA,YAAY,CAAC,aAAa,AAAA,MAAM,CAAC;EAC/B,YAAY,EAAE,OAAO;EACrB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;EACzE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG;;AAExE,AAAA,YAAY,CAAC,kBAAkB,CAAC;EAC9B,KAAK,EAAE,OAAO;EACd,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,YAAY,CAAC,sBAAsB,CAAC;EAClC,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,UAAU,CAAC,WAAW;AACtB,UAAU,CAAC,cAAc;AACzB,UAAU,CAAC,MAAM;AACjB,UAAU,CAAC,SAAS;AACpB,UAAU,CAAC,aAAa;AACxB,UAAU,CAAC,gBAAgB;AAC3B,UAAU,AAAA,MAAM,CAAC,KAAK;AACtB,UAAU,AAAA,SAAS,CAAC,KAAK;AACzB,UAAU,AAAA,aAAa,CAAC,KAAK;AAC7B,UAAU,AAAA,gBAAgB,CAAC,KAAK,CAAC;EAC/B,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,UAAU,CAAC,aAAa,CAAC;EACvB,YAAY,EAAE,OAAO;EACrB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG;;AACnD,AAAA,UAAU,CAAC,aAAa,AAAA,MAAM,CAAC;EAC7B,YAAY,EAAE,OAAO;EACrB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;EACzE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG;;AAExE,AAAA,UAAU,CAAC,kBAAkB,CAAC;EAC5B,KAAK,EAAE,OAAO;EACd,YAAY,EAAE,OAAO;EACrB,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,UAAU,CAAC,sBAAsB,CAAC;EAChC,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,aAAa,CAAC,KAAK,GAAG,sBAAsB,CAAC;EAC3C,GAAG,EAAE,IAAI,GAAG;;AAEd,AAAA,aAAa,CAAC,KAAK,AAAA,QAAQ,GAAG,sBAAsB,CAAC;EACnD,GAAG,EAAE,CAAC,GAAG;;AAEX,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO,GAAG;;AAEnB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,YAAY,CAAC,WAAW,CAAC;IACvB,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG;EAC3B,AAAA,YAAY,CAAC,aAAa,CAAC;IACzB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;IACX,cAAc,EAAE,MAAM,GAAG;EAC3B,AAAA,YAAY,CAAC,oBAAoB,CAAC;IAChC,OAAO,EAAE,YAAY,GAAG;EAC1B,AAAA,YAAY,CAAC,YAAY,CAAC;IACxB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM,GAAG;EACzB,AAAA,YAAY,CAAC,YAAY,CAAC,kBAAkB;EAC5C,YAAY,CAAC,YAAY,CAAC,gBAAgB;EAC1C,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC;IACtC,KAAK,EAAE,IAAI,GAAG;EAClB,AAAA,YAAY,CAAC,YAAY,GAAG,aAAa,CAAC;IACxC,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,YAAY,CAAC,cAAc,CAAC;IAC1B,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG;EAC3B,AAAA,YAAY,CAAC,MAAM;EACnB,YAAY,CAAC,SAAS,CAAC;IACrB,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG;EACzB,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK;EACzB,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3B,YAAY,EAAE,CAAC,GAAG;EACtB,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EAC1B,YAAY,CAAC,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;IAC5C,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,CAAC,GAAG;EACnB,AAAA,YAAY,CAAC,aAAa,CAAC,sBAAsB,CAAC;IAChD,GAAG,EAAE,CAAC,GAAG;;AAEb,AAAA,gBAAgB,CAAC,MAAM;AACvB,gBAAgB,CAAC,SAAS;AAC1B,gBAAgB,CAAC,aAAa;AAC9B,gBAAgB,CAAC,gBAAgB,CAAC;EAChC,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,gBAAgB,CAAC,MAAM;AACvB,gBAAgB,CAAC,SAAS,CAAC;EACzB,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,gBAAgB,CAAC,WAAW,CAAC;EAC3B,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,KAAK,GAAG;;AACtB,AAAA,gBAAgB,CAAC,WAAW,AAAA,OAAO,EAAE,gBAAgB,CAAC,WAAW,AAAA,MAAM,CAAC;EACtE,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,gBAAgB,CAAC,WAAW,AAAA,MAAM,CAAC;EACjC,KAAK,EAAE,IAAI,GAAG;;AAElB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,gBAAgB,CAAC,cAAc,CAAC;IAC9B,UAAU,EAAE,KAAK;IACjB,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,GAAG,GAAG;;AAEvB,AAAA,gBAAgB,CAAC,aAAa,CAAC,sBAAsB,CAAC;EACpD,KAAK,EAAE,IAAI,GAAG;;AAEhB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC;IAC7C,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI,GAAG;;AAEtB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC;IAC7C,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI,GAAG;;AAEtB,AAAA,IAAI,CAAC;EACH,OAAO,EAAE,YAAY;EACrB,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,cAAc,EAAE,MAAM;EACtB,YAAY,EAAE,YAAY;EAC1B,MAAM,EAAE,OAAO;EACf,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,qBAAqB;EAC7B,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,aAAa,EAAE,GAAG;EAClB,mBAAmB,EAAE,IAAI;EACzB,gBAAgB,EAAE,IAAI;EACtB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI,GAAG;;AACpB,AAAA,IAAI,AAAA,MAAM,EAAE,IAAI,AAAA,MAAM,EAAE,IAAI,AAAA,OAAO,AAAA,MAAM,EAAE,IAAI,AAAA,OAAO,AAAA,MAAM,EAAE,IAAI,AAAA,OAAO,AAAA,MAAM,EAAE,IAAI,AAAA,OAAO,AAAA,MAAM,CAAC;EACjG,OAAO,EAAE,iCAAiC;EAC1C,cAAc,EAAE,IAAI,GAAG;;AACzB,AAAA,IAAI,AAAA,MAAM,EAAE,IAAI,AAAA,MAAM,EAAE,IAAI,AAAA,MAAM,CAAC;EACjC,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,IAAI,GAAG;;AAC1B,AAAA,IAAI,AAAA,OAAO,EAAE,IAAI,AAAA,OAAO,CAAC;EACvB,OAAO,EAAE,CAAC;EACV,gBAAgB,EAAE,IAAI;EACtB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG;;AACrD,AAAA,IAAI,AAAA,SAAS,EAAE,IAAI,CAAA,AAAA,QAAC,AAAA;AACpB,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,IAAI,CAAC;EACtB,MAAM,EAAE,WAAW;EACnB,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,iBAAiB;EACzB,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI,GAAG;;AAEvB,AAAA,CAAC,AAAA,IAAI,AAAA,SAAS;AACd,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,CAAC,AAAA,IAAI,CAAC;EACvB,cAAc,EAAE,IAAI,GAAG;;AAEzB,AAAA,YAAY,CAAC;EACX,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,IAAI;EACtB,YAAY,EAAE,IAAI,GAAG;;AACrB,AAAA,YAAY,AAAA,MAAM,EAAE,YAAY,AAAA,MAAM,CAAC;EACrC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,MAAM,CAAC;EACjB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM;AAChK,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACzC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC5B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AAC/K,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAAC;EACpC,gBAAgB,EAAE,IAAI;EACtB,YAAY,EAAE,IAAI,GAAG;;AACvB,AAAA,YAAY,CAAC,MAAM,CAAC;EAClB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,YAAY,CAAC;EACX,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,MAAM,EAAE,YAAY,AAAA,MAAM,CAAC;EACrC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,MAAM,CAAC;EACjB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM;AAChK,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACzC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC5B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AAC/K,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAAC;EACpC,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,CAAC,MAAM,CAAC;EAClB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,YAAY,CAAC;EACX,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,MAAM,EAAE,YAAY,AAAA,MAAM,CAAC;EACrC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,MAAM,CAAC;EACjB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM;AAChK,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACzC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC5B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AAC/K,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAAC;EACpC,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,CAAC,MAAM,CAAC;EAClB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,SAAS,AAAA,MAAM,EAAE,SAAS,AAAA,MAAM,CAAC;EAC/B,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,SAAS,AAAA,MAAM,CAAC;EACd,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,SAAS,AAAA,OAAO,EAAE,SAAS,AAAA,OAAO;AAClC,KAAK,GAAG,SAAS,AAAA,gBAAgB,CAAC;EAChC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,SAAS,AAAA,OAAO,AAAA,MAAM,EAAE,SAAS,AAAA,OAAO,AAAA,MAAM,EAAE,SAAS,AAAA,OAAO,AAAA,MAAM,EAAE,SAAS,AAAA,OAAO,AAAA,MAAM,EAAE,SAAS,AAAA,OAAO,AAAA,MAAM,EAAE,SAAS,AAAA,OAAO,AAAA,MAAM;AAC9I,KAAK,GAAG,SAAS,AAAA,gBAAgB,AAAA,MAAM;AACvC,KAAK,GAAG,SAAS,AAAA,gBAAgB,AAAA,MAAM;AACvC,KAAK,GAAG,SAAS,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACtC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC5B,AAAA,SAAS,AAAA,OAAO,EAAE,SAAS,AAAA,OAAO;AAClC,KAAK,GAAG,SAAS,AAAA,gBAAgB,CAAC;EAChC,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,SAAS,AAAA,SAAS,AAAA,MAAM,EAAE,SAAS,AAAA,SAAS,AAAA,MAAM,EAAE,SAAS,AAAA,SAAS,AAAA,MAAM,EAAE,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AAC7J,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM;AAClC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM;AAClC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,CAAC;EACjC,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,SAAS,CAAC,MAAM,CAAC;EACf,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,YAAY,CAAC;EACX,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,MAAM,EAAE,YAAY,AAAA,MAAM,CAAC;EACrC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,MAAM,CAAC;EACjB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM,EAAE,YAAY,AAAA,OAAO,AAAA,MAAM;AAChK,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM;AAC1C,KAAK,GAAG,YAAY,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACzC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC5B,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,OAAO;AACxC,KAAK,GAAG,YAAY,AAAA,gBAAgB,CAAC;EACnC,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,AAAA,SAAS,AAAA,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,YAAY,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AAC/K,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM;AACrC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,YAAY,AAAA,MAAM,CAAC;EACpC,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,YAAY,CAAC,MAAM,CAAC;EAClB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,WAAW,AAAA,MAAM,EAAE,WAAW,AAAA,MAAM,CAAC;EACnC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,WAAW,AAAA,MAAM,CAAC;EAChB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,WAAW,AAAA,OAAO,EAAE,WAAW,AAAA,OAAO;AACtC,KAAK,GAAG,WAAW,AAAA,gBAAgB,CAAC;EAClC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,WAAW,AAAA,OAAO,AAAA,MAAM,EAAE,WAAW,AAAA,OAAO,AAAA,MAAM,EAAE,WAAW,AAAA,OAAO,AAAA,MAAM,EAAE,WAAW,AAAA,OAAO,AAAA,MAAM,EAAE,WAAW,AAAA,OAAO,AAAA,MAAM,EAAE,WAAW,AAAA,OAAO,AAAA,MAAM;AAC1J,KAAK,GAAG,WAAW,AAAA,gBAAgB,AAAA,MAAM;AACzC,KAAK,GAAG,WAAW,AAAA,gBAAgB,AAAA,MAAM;AACzC,KAAK,GAAG,WAAW,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACxC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC5B,AAAA,WAAW,AAAA,OAAO,EAAE,WAAW,AAAA,OAAO;AACtC,KAAK,GAAG,WAAW,AAAA,gBAAgB,CAAC;EAClC,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,WAAW,AAAA,SAAS,AAAA,MAAM,EAAE,WAAW,AAAA,SAAS,AAAA,MAAM,EAAE,WAAW,AAAA,SAAS,AAAA,MAAM,EAAE,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,WAAW,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AACzK,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,MAAM;AACpC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,MAAM;AACpC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,WAAW,AAAA,MAAM,CAAC;EACnC,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,WAAW,CAAC,MAAM,CAAC;EACjB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,SAAS,CAAC;EACR,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,CAAC,GAAG;;AACnB,AAAA,SAAS,EAAE,SAAS,AAAA,OAAO,EAAE,SAAS,AAAA,OAAO,EAAE,SAAS,CAAA,AAAA,QAAC,AAAA;AACzD,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,CAAC;EAC3B,gBAAgB,EAAE,WAAW;EAC7B,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI,GAAG;;AACrB,AAAA,SAAS,EAAE,SAAS,AAAA,MAAM,EAAE,SAAS,AAAA,MAAM,EAAE,SAAS,AAAA,OAAO,CAAC;EAC5D,YAAY,EAAE,WAAW,GAAG;;AAC9B,AAAA,SAAS,AAAA,MAAM,EAAE,SAAS,AAAA,MAAM,CAAC;EAC/B,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,SAAS;EAC1B,gBAAgB,EAAE,WAAW,GAAG;;AAClC,AAAA,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AACpD,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM;AAClC,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,SAAS,AAAA,MAAM,CAAC;EACjC,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI,GAAG;;AAE5B,AAAA,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;EAC5B,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;EAC5B,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;EAC5B,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,UAAU,CAAC;EACT,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,UAAU,GAAG,UAAU,CAAC;EACtB,UAAU,EAAE,GAAG,GAAG;;AAEpB,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,UAAU;AAC9B,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,UAAU;AAC7B,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,UAAU,CAAC;EAC7B,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,KAAK,CAAC;EACJ,OAAO,EAAE,CAAC;EACV,kBAAkB,EAAE,oBAAoB;EACxC,aAAa,EAAE,oBAAoB;EACnC,UAAU,EAAE,oBAAoB,GAAG;;AACnC,AAAA,KAAK,AAAA,GAAG,CAAC;EACP,OAAO,EAAE,CAAC,GAAG;;AAEjB,AAAA,SAAS,CAAC;EACR,OAAO,EAAE,IAAI,GAAG;;AAChB,AAAA,SAAS,AAAA,GAAG,CAAC;EACX,OAAO,EAAE,KAAK,GAAG;;AAErB,AAAA,EAAE,AAAA,SAAS,AAAA,GAAG,CAAC;EACb,OAAO,EAAE,SAAS,GAAG;;AAEvB,AAAA,KAAK,AAAA,SAAS,AAAA,GAAG,CAAC;EAChB,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,WAAW,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,MAAM;EAChB,2BAA2B,EAAE,kBAAkB;EAC/C,mBAAmB,EAAE,kBAAkB;EACvC,2BAA2B,EAAE,KAAK;EAClC,mBAAmB,EAAE,KAAK;EAC1B,kCAAkC,EAAE,IAAI;EACxC,0BAA0B,EAAE,IAAI,GAAG;;AAErC,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;EACtB,UAAU,EAAE,UAAU;EACtB,UAAU,EAAE,YAAY;EACxB,YAAY,EAAE,qBAAqB;EACnC,WAAW,EAAE,qBAAqB,GAAG;;AAEvC,AAAA,OAAO;AACP,SAAS,CAAC;EACR,QAAQ,EAAE,QAAQ,GAAG;;AAEvB,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACrB,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,cAAc,CAAC;EACb,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI;EACb,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,mBAAmB;EACrC,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB;EACnD,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB;EAC3C,eAAe,EAAE,WAAW,GAAG;;AAC/B,AAAA,cAAc,AAAA,WAAW,CAAC;EACxB,KAAK,EAAE,CAAC;EACR,IAAI,EAAE,IAAI,GAAG;;AACf,AAAA,cAAc,CAAC,QAAQ,CAAC;EACtB,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;EACtB,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,QAAQ;EACjB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM,GAAG;;AAE1B,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;EAC3D,eAAe,EAAE,IAAI;EACrB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;EACnG,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,IAAI;EACrB,OAAO,EAAE,CAAC;EACV,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,cAAc,GAAG,SAAS,GAAG,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;EACzG,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;EACzE,eAAe,EAAE,IAAI;EACrB,gBAAgB,EAAE,WAAW;EAC7B,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,2DAA2D;EACnE,MAAM,EAAE,WAAW,GAAG;;AAExB,AAAA,KAAK,GAAG,cAAc,CAAC;EACrB,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,KAAK,GAAG,CAAC,CAAC;EACR,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,oBAAoB,CAAC;EACnB,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,CAAC,GAAG;;AAEb,AAAA,mBAAmB,CAAC;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,gBAAgB,CAAC;EACf,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM,GAAG;;AAExB,AAAA,kBAAkB,CAAC;EACjB,QAAQ,EAAE,KAAK;EACf,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,GAAG,GAAG;;AAEjB,AAAA,WAAW,GAAG,cAAc,CAAC;EAC3B,KAAK,EAAE,CAAC;EACR,IAAI,EAAE,IAAI,GAAG;;AAEf,AAAA,OAAO,CAAC,MAAM;AACd,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC;EACpC,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,UAAU;EACzB,aAAa,EAAE,YAAY;EAC3B,OAAO,EAAE,EAAE,GAAG;;AAEhB,AAAA,OAAO,CAAC,cAAc;AACtB,oBAAoB,CAAC,SAAS,CAAC,cAAc,CAAC;EAC5C,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,GAAG,GAAG;;AAEvB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,aAAa,CAAC,cAAc,CAAC;IAC3B,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,IAAI,GAAG;EACf,AAAA,aAAa,CAAC,mBAAmB,CAAC;IAChC,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,IAAI,GAAG;;AAElB,AAAA,UAAU;AACV,mBAAmB,CAAC;EAClB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,MAAM,GAAG;;AACzB,AAAA,UAAU,GAAG,IAAI;AACjB,mBAAmB,GAAG,IAAI,CAAC;EACzB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,UAAU,GAAG,IAAI,AAAA,MAAM,EAAE,UAAU,GAAG,IAAI,AAAA,MAAM,EAAE,UAAU,GAAG,IAAI,AAAA,OAAO,EAAE,UAAU,GAAG,IAAI,AAAA,OAAO;AACpG,mBAAmB,GAAG,IAAI,AAAA,MAAM;AAChC,mBAAmB,GAAG,IAAI,AAAA,MAAM;AAChC,mBAAmB,GAAG,IAAI,AAAA,OAAO;AACjC,mBAAmB,GAAG,IAAI,AAAA,OAAO,CAAC;EAChC,OAAO,EAAE,CAAC,GAAG;;AAEnB,AAAA,UAAU,CAAC,IAAI,GAAG,IAAI;AACtB,UAAU,CAAC,IAAI,GAAG,UAAU;AAC5B,UAAU,CAAC,UAAU,GAAG,IAAI;AAC5B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;EACjC,WAAW,EAAE,IAAI,GAAG;;AAEtB,AAAA,YAAY,CAAC;EACX,WAAW,EAAE,IAAI,GAAG;;AACpB,AAAA,YAAY,AAAA,OAAO,EAAE,YAAY,AAAA,MAAM,CAAC;EACtC,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,YAAY,AAAA,MAAM,CAAC;EACjB,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,YAAY,CAAC,IAAI;AACjB,YAAY,CAAC,UAAU;AACvB,YAAY,CAAC,YAAY,CAAC;EACxB,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,YAAY,GAAG,IAAI;AACnB,YAAY,GAAG,UAAU;AACzB,YAAY,GAAG,YAAY,CAAC;EAC1B,WAAW,EAAE,GAAG,GAAG;;AAEvB,AAAA,UAAU,GAAG,IAAI,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW,CAAC,IAAK,CAAA,gBAAgB,EAAE;EACzE,aAAa,EAAE,CAAC,GAAG;;AAErB,AAAA,UAAU,GAAG,IAAI,AAAA,YAAY,CAAC;EAC5B,WAAW,EAAE,CAAC,GAAG;;AACjB,AAAA,UAAU,GAAG,IAAI,AAAA,YAAY,AAAA,IAAK,CAAA,WAAW,CAAC,IAAK,CAAA,gBAAgB,EAAE;EACnE,0BAA0B,EAAE,CAAC;EAC7B,uBAAuB,EAAE,CAAC,GAAG;;AAEjC,AAAA,UAAU,GAAG,IAAI,AAAA,WAAW,AAAA,IAAK,CAAA,YAAY;AAC7C,UAAU,GAAG,gBAAgB,AAAA,IAAK,CAAA,YAAY,EAAE;EAC9C,yBAAyB,EAAE,CAAC;EAC5B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,UAAU,GAAG,UAAU,CAAC;EACtB,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,UAAU,GAAG,UAAU,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW,IAAI,IAAI,CAAC;EAChE,aAAa,EAAE,CAAC,GAAG;;AAErB,AAAA,UAAU,GAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,WAAW,IAAI,IAAI,AAAA,WAAW;AACtE,UAAU,GAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,WAAW,IAAI,gBAAgB,CAAC;EACtE,0BAA0B,EAAE,CAAC;EAC7B,uBAAuB,EAAE,CAAC,GAAG;;AAE/B,AAAA,UAAU,GAAG,UAAU,AAAA,WAAW,AAAA,IAAK,CAAA,YAAY,IAAI,IAAI,AAAA,YAAY,CAAC;EACtE,yBAAyB,EAAE,CAAC;EAC5B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,UAAU,CAAC,gBAAgB,AAAA,OAAO;AAClC,UAAU,AAAA,KAAK,CAAC,gBAAgB,CAAC;EAC/B,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,UAAU,GAAG,IAAI,GAAG,gBAAgB,CAAC;EACnC,YAAY,EAAE,GAAG;EACjB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,UAAU,GAAG,OAAO,GAAG,gBAAgB,EAAE,aAAa,AAAA,UAAU,GAAG,IAAI,GAAG,gBAAgB,CAAC;EACzF,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAAG;;AAExB,AAAA,UAAU,AAAA,KAAK,CAAC,gBAAgB,CAAC;EAC/B,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB;EACxD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG;;AACnD,AAAA,UAAU,AAAA,KAAK,CAAC,gBAAgB,AAAA,SAAS,CAAC;EACxC,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI,GAAG;;AAEvB,AAAA,IAAI,CAAC,MAAM,CAAC;EACV,WAAW,EAAE,CAAC,GAAG;;AAEnB,AAAA,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1C,YAAY,EAAE,SAAS;EACvB,mBAAmB,EAAE,CAAC,GAAG;;AAE3B,AAAA,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1D,YAAY,EAAE,SAAS,GAAG;;AAE5B,AAAA,mBAAmB,GAAG,IAAI;AAC1B,mBAAmB,GAAG,UAAU;AAChC,mBAAmB,GAAG,UAAU,GAAG,IAAI,CAAC;EACtC,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI,GAAG;;AAEpB,AAAA,mBAAmB,GAAG,UAAU,AAAA,OAAO,EAAE,mBAAmB,GAAG,UAAU,AAAA,MAAM,CAAC;EAC9E,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,mBAAmB,GAAG,UAAU,AAAA,MAAM,CAAC;EACrC,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,mBAAmB,GAAG,UAAU,GAAG,IAAI,CAAC;EACtC,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,mBAAmB,GAAG,IAAI,GAAG,IAAI;AACjC,mBAAmB,GAAG,IAAI,GAAG,UAAU;AACvC,mBAAmB,GAAG,UAAU,GAAG,IAAI;AACvC,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC;EAC5C,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,CAAC,GAAG;;AAEnB,AAAA,mBAAmB,GAAG,IAAI,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW,EAAE;EAC5D,aAAa,EAAE,CAAC,GAAG;;AAErB,AAAA,mBAAmB,GAAG,IAAI,AAAA,YAAY,AAAA,IAAK,CAAA,WAAW,EAAE;EACtD,uBAAuB,EAAE,GAAG;EAC5B,sBAAsB,EAAE,GAAG;EAC3B,0BAA0B,EAAE,CAAC;EAC7B,yBAAyB,EAAE,CAAC,GAAG;;AAEjC,AAAA,mBAAmB,GAAG,IAAI,AAAA,WAAW,AAAA,IAAK,CAAA,YAAY,EAAE;EACtD,uBAAuB,EAAE,CAAC;EAC1B,sBAAsB,EAAE,CAAC;EACzB,0BAA0B,EAAE,GAAG;EAC/B,yBAAyB,EAAE,GAAG,GAAG;;AAEnC,AAAA,mBAAmB,GAAG,UAAU,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW,IAAI,IAAI,CAAC;EACzE,aAAa,EAAE,CAAC,GAAG;;AAErB,AAAA,mBAAmB,GAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,WAAW,IAAI,IAAI,AAAA,WAAW;AAC/E,mBAAmB,GAAG,UAAU,AAAA,YAAY,AAAA,IAAK,CAAA,WAAW,IAAI,gBAAgB,CAAC;EAC/E,0BAA0B,EAAE,CAAC;EAC7B,yBAAyB,EAAE,CAAC,GAAG;;AAEjC,AAAA,mBAAmB,GAAG,UAAU,AAAA,WAAW,AAAA,IAAK,CAAA,YAAY,IAAI,IAAI,AAAA,YAAY,CAAC;EAC/E,uBAAuB,EAAE,CAAC;EAC1B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,oBAAoB,CAAC;EACnB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,KAAK;EACnB,eAAe,EAAE,QAAQ,GAAG;;AAC5B,AAAA,oBAAoB,GAAG,IAAI;AAC3B,oBAAoB,GAAG,UAAU,CAAC;EAChC,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,UAAU;EACnB,KAAK,EAAE,EAAE,GAAG;;AACd,AAAA,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC;EACrC,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,oBAAoB,GAAG,UAAU,CAAC,cAAc,CAAC;EAC/C,IAAI,EAAE,IAAI,GAAG;;CAEjB,AAAA,AAAA,WAAC,CAAY,SAAS,AAArB,IAAyB,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;CACrC,AAAA,WAAC,CAAY,SAAS,AAArB,IAAyB,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf;CACrC,AAAA,WAAC,CAAY,SAAS,AAArB,IAAyB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;CAClD,AAAA,WAAC,CAAY,SAAS,AAArB,IAAyB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACjE,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,gBAAgB;EACtB,cAAc,EAAE,IAAI,GAAG;;AAEzB,AAAA,YAAY,CAAC;EACX,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,eAAe,EAAE,QAAQ,GAAG;;AAC5B,AAAA,YAAY,CAAA,AAAA,KAAC,EAAO,MAAM,AAAb,EAAe;EAC1B,KAAK,EAAE,IAAI;EACX,YAAY,EAAE,CAAC;EACf,aAAa,EAAE,CAAC,GAAG;;AACrB,AAAA,YAAY,CAAC,aAAa,CAAC;EACzB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,CAAC,GAAG;;AACnB,AAAA,YAAY,CAAC,aAAa,AAAA,MAAM,CAAC;EAC/B,OAAO,EAAE,CAAC,GAAG;;AAEnB,AAAA,kBAAkB;AAClB,gBAAgB;AAChB,YAAY,CAAC,aAAa,CAAC;EACzB,OAAO,EAAE,UAAU,GAAG;;AACtB,AAAA,kBAAkB,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW;AACpD,gBAAgB,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW;AAClD,YAAY,CAAC,aAAa,AAAA,IAAK,CAAA,YAAY,CAAC,IAAK,CAAA,WAAW,EAAE;EAC5D,aAAa,EAAE,CAAC,GAAG;;AAEvB,AAAA,kBAAkB;AAClB,gBAAgB,CAAC;EACf,KAAK,EAAE,EAAE;EACT,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,MAAM,GAAG;;AAE3B,AAAA,kBAAkB,CAAC;EACjB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,CAAC;EACd,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,MAAM;EAClB,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,kBAAkB,AAAA,SAAS;AAC3B,eAAe,GAAG,kBAAkB;AACpC,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,AAAA,IAAI,CAAC;EAC1D,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,GAAG,GAAG;;AACvB,AAAA,kBAAkB,AAAA,SAAS;AAC3B,eAAe,GAAG,kBAAkB;AACpC,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,AAAA,IAAI,CAAC;EAC1D,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,aAAa,EAAE,GAAG,GAAG;;AACvB,AAAA,kBAAkB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACzB,kBAAkB,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACxC,UAAU,EAAE,CAAC,GAAG;;AAEpB,AAAA,YAAY,CAAC,aAAa,AAAA,YAAY;AACtC,kBAAkB,AAAA,YAAY;AAC9B,gBAAgB,AAAA,YAAY,GAAG,IAAI;AACnC,gBAAgB,AAAA,YAAY,GAAG,UAAU,GAAG,IAAI;AAChD,gBAAgB,AAAA,YAAY,GAAG,gBAAgB;AAC/C,gBAAgB,AAAA,WAAW,GAAG,IAAI,AAAA,IAAK,CAAA,WAAW,CAAC,IAAK,CAAA,gBAAgB;AACxE,gBAAgB,AAAA,WAAW,GAAG,UAAU,AAAA,IAAK,CAAA,WAAW,IAAI,IAAI,CAAC;EAC/D,0BAA0B,EAAE,CAAC;EAC7B,uBAAuB,EAAE,CAAC,GAAG;;AAE/B,AAAA,kBAAkB,AAAA,YAAY,CAAC;EAC7B,YAAY,EAAE,CAAC,GAAG;;AAEpB,AAAA,YAAY,CAAC,aAAa,AAAA,WAAW;AACrC,kBAAkB,AAAA,WAAW;AAC7B,gBAAgB,AAAA,WAAW,GAAG,IAAI;AAClC,gBAAgB,AAAA,WAAW,GAAG,UAAU,GAAG,IAAI;AAC/C,gBAAgB,AAAA,WAAW,GAAG,gBAAgB;AAC9C,gBAAgB,AAAA,YAAY,GAAG,IAAI,AAAA,IAAK,CAAA,YAAY;AACpD,gBAAgB,AAAA,YAAY,GAAG,UAAU,AAAA,IAAK,CAAA,YAAY,IAAI,IAAI,CAAC;EACjE,yBAAyB,EAAE,CAAC;EAC5B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,kBAAkB,AAAA,WAAW,CAAC;EAC5B,WAAW,EAAE,CAAC,GAAG;;AAEnB,AAAA,gBAAgB,CAAC;EACf,QAAQ,EAAE,QAAQ;EAClB,SAAS,EAAE,CAAC;EACZ,WAAW,EAAE,MAAM,GAAG;;AACtB,AAAA,gBAAgB,GAAG,IAAI,CAAC;EACtB,QAAQ,EAAE,QAAQ,GAAG;;AACrB,AAAA,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;EAC7B,WAAW,EAAE,IAAI,GAAG;;AACtB,AAAA,gBAAgB,GAAG,IAAI,AAAA,MAAM,EAAE,gBAAgB,GAAG,IAAI,AAAA,MAAM,EAAE,gBAAgB,GAAG,IAAI,AAAA,OAAO,CAAC;EAC3F,OAAO,EAAE,CAAC,GAAG;;AACjB,AAAA,gBAAgB,AAAA,YAAY,GAAG,IAAI;AACnC,gBAAgB,AAAA,YAAY,GAAG,UAAU,CAAC;EACxC,YAAY,EAAE,IAAI,GAAG;;AACvB,AAAA,gBAAgB,AAAA,WAAW,GAAG,IAAI;AAClC,gBAAgB,AAAA,WAAW,GAAG,UAAU,CAAC;EACvC,OAAO,EAAE,CAAC;EACV,WAAW,EAAE,IAAI,GAAG;;AAExB,AAAA,IAAI,CAAC;EACH,aAAa,EAAE,CAAC;EAChB,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI,GAAG;;AACnB,AAAA,IAAI,AAAA,OAAO,EAAE,IAAI,AAAA,MAAM,CAAC;EACtB,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,IAAI,AAAA,MAAM,CAAC;EACT,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,IAAI,GAAG,EAAE,CAAC;EACR,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK,GAAG;;AACjB,AAAA,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,SAAS,GAAG;;AACrB,AAAA,IAAI,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;EACvC,eAAe,EAAE,IAAI;EACrB,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,IAAI,GAAG,EAAE,AAAA,SAAS,GAAG,CAAC,CAAC;EACrB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,IAAI,GAAG,EAAE,AAAA,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,IAAI,GAAG,EAAE,AAAA,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;EACzD,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;EACrB,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,WAAW,GAAG;;AAC5B,AAAA,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,AAAA,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,AAAA,MAAM,CAAC;EACzD,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,IAAI,CAAC,YAAY,CAAC;EAChB,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;EAClB,SAAS,EAAE,IAAI,GAAG;;AAEtB,AAAA,SAAS,CAAC;EACR,aAAa,EAAE,cAAc,GAAG;;AAChC,AAAA,SAAS,GAAG,EAAE,CAAC;EACb,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,SAAS,GAAG,EAAE,GAAG,CAAC,CAAC;EACjB,YAAY,EAAE,GAAG;EACjB,WAAW,EAAE,OAAO;EACpB,MAAM,EAAE,qBAAqB;EAC7B,aAAa,EAAE,WAAW,GAAG;;AAC7B,AAAA,SAAS,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;EACvB,YAAY,EAAE,oBAAoB,GAAG;;AACzC,AAAA,SAAS,GAAG,EAAE,AAAA,OAAO,GAAG,CAAC,EAAE,SAAS,GAAG,EAAE,AAAA,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,SAAS,GAAG,EAAE,AAAA,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;EAC1F,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,mBAAmB,EAAE,WAAW;EAChC,MAAM,EAAE,OAAO,GAAG;;AAExB,AAAA,UAAU,GAAG,EAAE,CAAC;EACd,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;EAClB,aAAa,EAAE,GAAG,GAAG;;AACvB,AAAA,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;EACnB,WAAW,EAAE,GAAG,GAAG;;AACrB,AAAA,UAAU,GAAG,EAAE,AAAA,OAAO,GAAG,CAAC,EAAE,UAAU,GAAG,EAAE,AAAA,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,UAAU,GAAG,EAAE,AAAA,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;EAC7F,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,YAAY,GAAG,EAAE,CAAC;EAChB,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC;EACrB,UAAU,EAAE,GAAG;EACf,WAAW,EAAE,CAAC,GAAG;;AAErB,AAAA,cAAc,EAAE,SAAS,AAAA,cAAc,CAAC;EACtC,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,cAAc,GAAG,EAAE,EAAE,SAAS,AAAA,cAAc,GAAG,EAAE,CAAC;EAChD,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;EACxD,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,GAAG,GAAG;;AACzB,AAAA,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;EACxC,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,IAAI,GAAG;;AACf,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,cAAc,GAAG,EAAE,EAAE,SAAS,AAAA,cAAc,GAAG,EAAE,CAAC;IAChD,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,EAAE,GAAG;EACZ,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,aAAa,EAAE,CAAC,GAAG;;AAE3B,AAAA,mBAAmB,EAAE,SAAS,AAAA,cAAc,CAAC;EAC3C,aAAa,EAAE,CAAC,GAAG;;AACnB,AAAA,mBAAmB,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;EAC7D,YAAY,EAAE,CAAC;EACf,aAAa,EAAE,GAAG,GAAG;;AACvB,AAAA,mBAAmB,GAAG,OAAO,GAAG,CAAC,EAAE,SAAS,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC;AACxE,mBAAmB,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;AACvC,SAAS,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;AAC3C,mBAAmB,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;AACvC,SAAS,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;EAC1C,MAAM,EAAE,cAAc,GAAG;;AAC3B,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,mBAAmB,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7D,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,WAAW,GAAG;EAC/B,AAAA,mBAAmB,GAAG,OAAO,GAAG,CAAC,EAAE,SAAS,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC;EACxE,mBAAmB,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;EACvC,SAAS,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;EAC3C,mBAAmB,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;EACvC,SAAS,AAAA,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;IAC1C,mBAAmB,EAAE,IAAI,GAAG;;AAElC,AAAA,YAAY,GAAG,SAAS,CAAC;EACvB,OAAO,EAAE,IAAI,GAAG;;AAElB,AAAA,YAAY,GAAG,OAAO,CAAC;EACrB,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,SAAS,CAAC,cAAc,CAAC;EACvB,UAAU,EAAE,IAAI;EAChB,uBAAuB,EAAE,CAAC;EAC1B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,OAAO,CAAC;EACN,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI;EACnB,MAAM,EAAE,qBAAqB,GAAG;;AAChC,AAAA,OAAO,AAAA,OAAO,EAAE,OAAO,AAAA,MAAM,CAAC;EAC5B,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,OAAO,AAAA,MAAM,CAAC;EACZ,KAAK,EAAE,IAAI,GAAG;;AAChB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,OAAO,CAAC;IACN,aAAa,EAAE,GAAG,GAAG;;AAE3B,AAAA,cAAc,AAAA,OAAO,EAAE,cAAc,AAAA,MAAM,CAAC;EAC1C,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,cAAc,AAAA,MAAM,CAAC;EACnB,KAAK,EAAE,IAAI,GAAG;;AAEhB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,cAAc,CAAC;IACb,KAAK,EAAE,IAAI,GAAG;;AAElB,AAAA,gBAAgB,CAAC;EACf,UAAU,EAAE,OAAO;EACnB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,IAAI;EAClB,UAAU,EAAE,qBAAqB;EACjC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;EAClD,0BAA0B,EAAE,KAAK,GAAG;;AACpC,AAAA,gBAAgB,AAAA,OAAO,EAAE,gBAAgB,AAAA,MAAM,CAAC;EAC9C,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,gBAAgB,AAAA,MAAM,CAAC;EACrB,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,gBAAgB,AAAA,GAAG,CAAC;EAClB,UAAU,EAAE,IAAI,GAAG;;AACrB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,gBAAgB,CAAC;IACf,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,IAAI,GAAG;EACnB,AAAA,gBAAgB,AAAA,SAAS,CAAC;IACxB,OAAO,EAAE,gBAAgB;IACzB,MAAM,EAAE,eAAe;IACvB,cAAc,EAAE,CAAC;IACjB,QAAQ,EAAE,kBAAkB,GAAG;EACjC,AAAA,gBAAgB,AAAA,GAAG,CAAC;IAClB,UAAU,EAAE,OAAO,GAAG;EACxB,AAAA,iBAAiB,CAAC,gBAAgB;EAClC,kBAAkB,CAAC,gBAAgB;EACnC,oBAAoB,CAAC,gBAAgB,CAAC;IACpC,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC,GAAG;;AAE3B,AAAA,iBAAiB,CAAC,gBAAgB;AAClC,oBAAoB,CAAC,gBAAgB,CAAC;EACpC,UAAU,EAAE,KAAK,GAAG;;AACpB,MAAM,EAAE,gBAAgB,EAAE,KAAK,OAAO,WAAW,EAAE,SAAS;EAC1D,AAAA,iBAAiB,CAAC,gBAAgB;EAClC,oBAAoB,CAAC,gBAAgB,CAAC;IACpC,UAAU,EAAE,KAAK,GAAG;;AAE1B,AAAA,UAAU,GAAG,cAAc;AAC3B,UAAU,GAAG,gBAAgB;AAC7B,gBAAgB,GAAG,cAAc;AACjC,gBAAgB,GAAG,gBAAgB,CAAC;EAClC,YAAY,EAAE,KAAK;EACnB,WAAW,EAAE,KAAK,GAAG;;AACrB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,UAAU,GAAG,cAAc;EAC3B,UAAU,GAAG,gBAAgB;EAC7B,gBAAgB,GAAG,cAAc;EACjC,gBAAgB,GAAG,gBAAgB,CAAC;IAClC,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC,GAAG;;AAEvB,AAAA,kBAAkB,CAAC;EACjB,OAAO,EAAE,IAAI;EACb,YAAY,EAAE,OAAO,GAAG;;AACxB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,kBAAkB,CAAC;IACjB,aAAa,EAAE,CAAC,GAAG;;AAEzB,AAAA,iBAAiB;AACjB,oBAAoB,CAAC;EACnB,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,CAAC;EACR,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,IAAI,GAAG;;AAChB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,iBAAiB;EACjB,oBAAoB,CAAC;IACnB,aAAa,EAAE,CAAC,GAAG;;AAEzB,AAAA,iBAAiB,CAAC;EAChB,GAAG,EAAE,CAAC;EACN,YAAY,EAAE,OAAO,GAAG;;AAE1B,AAAA,oBAAoB,CAAC;EACnB,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,CAAC;EAChB,YAAY,EAAE,OAAO,GAAG;;AAE1B,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,IAAI,GAAG;;AACf,AAAA,aAAa,AAAA,MAAM,EAAE,aAAa,AAAA,MAAM,CAAC;EACvC,eAAe,EAAE,IAAI,GAAG;;AAC1B,AAAA,aAAa,GAAG,GAAG,CAAC;EAClB,OAAO,EAAE,KAAK,GAAG;;AACnB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,OAAO,GAAG,UAAU,CAAC,aAAa;EAClC,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC;IACvC,WAAW,EAAE,KAAK,GAAG;;AAE3B,AAAA,cAAc,CAAC;EACb,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,IAAI;EAClB,OAAO,EAAE,QAAQ;EACjB,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,GAAG;EAClB,gBAAgB,EAAE,WAAW;EAC7B,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,qBAAqB;EAC7B,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,cAAc,AAAA,MAAM,CAAC;EACnB,OAAO,EAAE,CAAC,GAAG;;AACf,AAAA,cAAc,CAAC,SAAS,CAAC;EACvB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,GAAG;EACX,aAAa,EAAE,GAAG,GAAG;;AACvB,AAAA,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;EACnC,UAAU,EAAE,GAAG,GAAG;;AACpB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,cAAc,CAAC;IACb,OAAO,EAAE,IAAI,GAAG;;AAEtB,AAAA,WAAW,CAAC;EACV,MAAM,EAAE,WAAW,GAAG;;AACtB,AAAA,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;EACnB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,IAAI,GAAG;;AACtB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;IAC/B,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,CAAC;IACb,gBAAgB,EAAE,WAAW;IAC7B,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,IAAI,GAAG;EACnB,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC;EACzC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAChD,OAAO,EAAE,iBAAiB,GAAG;EAC/B,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,WAAW,EAAE,IAAI,GAAG;EACpB,AAAA,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;IAC/F,gBAAgB,EAAE,IAAI,GAAG;;AACjC,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,WAAW,CAAC;IACV,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,CAAC,GAAG;EACZ,AAAA,WAAW,GAAG,EAAE,CAAC;IACf,KAAK,EAAE,IAAI,GAAG;EACd,AAAA,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;IACnB,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI,GAAG;;AAEjC,AAAA,YAAY,CAAC;EACX,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,KAAK;EACnB,OAAO,EAAE,SAAS;EAClB,UAAU,EAAE,qBAAqB;EACjC,aAAa,EAAE,qBAAqB;EACpC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;EAC5F,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;EACpF,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,GAAG,GAAG;;AACrB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,YAAY,CAAC,WAAW,CAAC;IACvB,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG;EAC3B,AAAA,YAAY,CAAC,aAAa,CAAC;IACzB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,IAAI;IACX,cAAc,EAAE,MAAM,GAAG;EAC3B,AAAA,YAAY,CAAC,oBAAoB,CAAC;IAChC,OAAO,EAAE,YAAY,GAAG;EAC1B,AAAA,YAAY,CAAC,YAAY,CAAC;IACxB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM,GAAG;EACzB,AAAA,YAAY,CAAC,YAAY,CAAC,kBAAkB;EAC5C,YAAY,CAAC,YAAY,CAAC,gBAAgB;EAC1C,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC;IACtC,KAAK,EAAE,IAAI,GAAG;EAClB,AAAA,YAAY,CAAC,YAAY,GAAG,aAAa,CAAC;IACxC,KAAK,EAAE,IAAI,GAAG;EAChB,AAAA,YAAY,CAAC,cAAc,CAAC;IAC1B,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG;EAC3B,AAAA,YAAY,CAAC,MAAM;EACnB,YAAY,CAAC,SAAS,CAAC;IACrB,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG;EACzB,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK;EACzB,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;IAC3B,YAAY,EAAE,CAAC,GAAG;EACtB,AAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;EAC1B,YAAY,CAAC,SAAS,CAAC,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;IAC5C,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,CAAC,GAAG;EACnB,AAAA,YAAY,CAAC,aAAa,CAAC,sBAAsB,CAAC;IAChD,GAAG,EAAE,CAAC,GAAG;;AACb,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,YAAY,CAAC,WAAW,CAAC;IACvB,aAAa,EAAE,GAAG,GAAG;EACrB,AAAA,YAAY,CAAC,WAAW,AAAA,WAAW,CAAC;IAClC,aAAa,EAAE,CAAC,GAAG;;AACzB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,YAAY,CAAC;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;IACd,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE,IAAI,GAAG;;AAEzB,AAAA,WAAW,GAAG,EAAE,GAAG,cAAc,CAAC;EAChC,UAAU,EAAE,CAAC;EACb,uBAAuB,EAAE,CAAC;EAC1B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,oBAAoB,CAAC,WAAW,GAAG,EAAE,GAAG,cAAc,CAAC;EACrD,aAAa,EAAE,CAAC;EAChB,uBAAuB,EAAE,GAAG;EAC5B,sBAAsB,EAAE,GAAG;EAC3B,0BAA0B,EAAE,CAAC;EAC7B,yBAAyB,EAAE,CAAC,GAAG;;AAEjC,AAAA,WAAW,CAAC;EACV,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,WAAW,AAAA,OAAO,EAAE,aAAa,GAAG,WAAW,AAAA,IAAI,CAAC;EAClD,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI,GAAG;;AACxB,AAAA,WAAW,AAAA,OAAO,EAAE,aAAa,GAAG,WAAW,AAAA,IAAI,CAAC;EAClD,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI,GAAG;;AAE1B,AAAA,YAAY,CAAC;EACX,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,IAAI,GAAG;;AACtB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,YAAY,CAAC;IACX,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI,GAAG;;AAE3B,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,YAAY,CAAC;IACX,KAAK,EAAE,eAAe,GAAG;EAC3B,AAAA,aAAa,CAAC;IACZ,KAAK,EAAE,gBAAgB;IACvB,YAAY,EAAE,KAAK,GAAG;EACtB,AAAA,aAAa,GAAG,aAAa,CAAC;IAC5B,YAAY,EAAE,CAAC,GAAG;;AAExB,AAAA,eAAe,CAAC;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,eAAe,CAAC,aAAa,CAAC;EAC5B,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,eAAe,CAAC,aAAa,AAAA,MAAM,EAAE,eAAe,CAAC,aAAa,AAAA,MAAM,CAAC;EACvE,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,WAAW,GAAG;;AACpC,AAAA,eAAe,CAAC,YAAY,CAAC;EAC3B,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,eAAe,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;EACnC,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,eAAe,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;EACrF,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW,GAAG;;AACpC,AAAA,eAAe,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;EAC1I,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,eAAe,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;EAChJ,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW,GAAG;;AAClC,AAAA,eAAe,CAAC,cAAc,CAAC;EAC7B,YAAY,EAAE,IAAI,GAAG;;AACrB,AAAA,eAAe,CAAC,cAAc,AAAA,MAAM,EAAE,eAAe,CAAC,cAAc,AAAA,MAAM,CAAC;EACzE,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC;EACvC,gBAAgB,EAAE,IAAI,GAAG;;AAC7B,AAAA,eAAe,CAAC,gBAAgB;AAChC,eAAe,CAAC,YAAY,CAAC;EAC3B,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,eAAe,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,AAAA,MAAM,CAAC;EACpI,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,IAAI,GAAG;;AAChB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,KAAK,EAAE,IAAI,GAAG;EACd,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;IAC/H,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,WAAW,GAAG;EACpC,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;IACzM,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,OAAO,GAAG;EAC9B,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;IAC/M,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,WAAW,GAAG;;AACpC,AAAA,eAAe,CAAC,YAAY,CAAC;EAC3B,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,eAAe,CAAC,YAAY,AAAA,MAAM,CAAC;EACjC,KAAK,EAAE,IAAI,GAAG;;AAClB,AAAA,eAAe,CAAC,SAAS,CAAC;EACxB,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,eAAe,CAAC,SAAS,AAAA,MAAM,EAAE,eAAe,CAAC,SAAS,AAAA,MAAM,CAAC;EAC/D,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AACpF,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM;AAClD,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM,CAAC;EACjD,KAAK,EAAE,IAAI,GAAG;;AAEpB,AAAA,eAAe,CAAC;EACd,gBAAgB,EAAE,IAAI;EACtB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,eAAe,CAAC,aAAa,CAAC;EAC5B,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,eAAe,CAAC,aAAa,AAAA,MAAM,EAAE,eAAe,CAAC,aAAa,AAAA,MAAM,CAAC;EACvE,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW,GAAG;;AACpC,AAAA,eAAe,CAAC,YAAY,CAAC;EAC3B,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,eAAe,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;EACnC,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,eAAe,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;EACrF,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW,GAAG;;AACpC,AAAA,eAAe,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;EAC1I,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,eAAe,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;EAChJ,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW,GAAG;;AAClC,AAAA,eAAe,CAAC,cAAc,CAAC;EAC7B,YAAY,EAAE,IAAI,GAAG;;AACrB,AAAA,eAAe,CAAC,cAAc,AAAA,MAAM,EAAE,eAAe,CAAC,cAAc,AAAA,MAAM,CAAC;EACzE,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC;EACvC,gBAAgB,EAAE,IAAI,GAAG;;AAC7B,AAAA,eAAe,CAAC,gBAAgB;AAChC,eAAe,CAAC,YAAY,CAAC;EAC3B,YAAY,EAAE,OAAO,GAAG;;AAC1B,AAAA,eAAe,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,AAAA,MAAM,CAAC;EACpI,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,IAAI,GAAG;;AAChB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,gBAAgB,CAAC;IAClE,YAAY,EAAE,OAAO,GAAG;EAC1B,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;IACxD,gBAAgB,EAAE,OAAO,GAAG;EAC9B,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;IACxD,KAAK,EAAE,OAAO,GAAG;EACjB,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;IAC/H,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,WAAW,GAAG;EACpC,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,CAAC;IACzM,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,OAAO,GAAG;EAC9B,AAAA,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;IAC/M,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,WAAW,GAAG;;AACpC,AAAA,eAAe,CAAC,YAAY,CAAC;EAC3B,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,eAAe,CAAC,YAAY,AAAA,MAAM,CAAC;EACjC,KAAK,EAAE,IAAI,GAAG;;AAClB,AAAA,eAAe,CAAC,SAAS,CAAC;EACxB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,eAAe,CAAC,SAAS,AAAA,MAAM,EAAE,eAAe,CAAC,SAAS,AAAA,MAAM,CAAC;EAC/D,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM,EAAE,eAAe,CAAC,SAAS,CAAA,AAAA,QAAC,AAAA,CAAS,MAAM;AACpF,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM;AAClD,QAAQ,CAAA,AAAA,QAAC,AAAA,EAAU,eAAe,CAAC,SAAS,AAAA,MAAM,CAAC;EACjD,KAAK,EAAE,IAAI,GAAG;;AAEpB,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,QAAQ;EACjB,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,IAAI;EAChB,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,WAAW,GAAG,EAAE,CAAC;EACf,OAAO,EAAE,YAAY,GAAG;;AACxB,AAAA,WAAW,GAAG,EAAE,GAAG,EAAE,AAAA,OAAO,CAAC;EAC3B,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI,GAAG;;AAClB,AAAA,WAAW,GAAG,OAAO,CAAC;EACpB,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,YAAY;EACrB,YAAY,EAAE,CAAC;EACf,MAAM,EAAE,MAAM;EACd,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,WAAW,GAAG,EAAE,CAAC;EACf,OAAO,EAAE,MAAM,GAAG;;AAClB,AAAA,WAAW,GAAG,EAAE,GAAG,CAAC;AACpB,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;EACtB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,QAAQ;EACjB,WAAW,EAAE,OAAO;EACpB,eAAe,EAAE,IAAI;EACrB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,WAAW,EAAE,IAAI,GAAG;;AACtB,AAAA,WAAW,GAAG,EAAE,AAAA,YAAY,GAAG,CAAC;AAChC,WAAW,GAAG,EAAE,AAAA,YAAY,GAAG,IAAI,CAAC;EAClC,WAAW,EAAE,CAAC;EACd,yBAAyB,EAAE,GAAG;EAC9B,sBAAsB,EAAE,GAAG,GAAG;;AAChC,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,GAAG,CAAC;AAC/B,WAAW,GAAG,EAAE,AAAA,WAAW,GAAG,IAAI,CAAC;EACjC,0BAA0B,EAAE,GAAG;EAC/B,uBAAuB,EAAE,GAAG,GAAG;;AACnC,AAAA,WAAW,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM,EAAE,WAAW,GAAG,EAAE,GAAG,CAAC,AAAA,MAAM;AACtD,WAAW,GAAG,EAAE,GAAG,IAAI,AAAA,MAAM;AAC7B,WAAW,GAAG,EAAE,GAAG,IAAI,AAAA,MAAM,CAAC;EAC5B,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,IAAI,GAAG;;AACvB,AAAA,WAAW,GAAG,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,CAAC,AAAA,MAAM;AAC3F,WAAW,GAAG,OAAO,GAAG,IAAI;AAC5B,WAAW,GAAG,OAAO,GAAG,IAAI,AAAA,MAAM;AAClC,WAAW,GAAG,OAAO,GAAG,IAAI,AAAA,MAAM,CAAC;EACjC,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,MAAM,EAAE,OAAO,GAAG;;AACpB,AAAA,WAAW,GAAG,SAAS,GAAG,IAAI;AAC9B,WAAW,GAAG,SAAS,GAAG,IAAI,AAAA,MAAM;AACpC,WAAW,GAAG,SAAS,GAAG,IAAI,AAAA,MAAM;AACpC,WAAW,GAAG,SAAS,GAAG,CAAC;AAC3B,WAAW,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM;AACjC,WAAW,GAAG,SAAS,GAAG,CAAC,AAAA,MAAM,CAAC;EAChC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI;EACtB,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,WAAW,GAAG;;AAE1B,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC;AACvB,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;EACzB,OAAO,EAAE,SAAS;EAClB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,OAAO,GAAG;;AAEzB,AAAA,cAAc,GAAG,EAAE,AAAA,YAAY,GAAG,CAAC;AACnC,cAAc,GAAG,EAAE,AAAA,YAAY,GAAG,IAAI,CAAC;EACrC,yBAAyB,EAAE,GAAG;EAC9B,sBAAsB,EAAE,GAAG,GAAG;;AAEhC,AAAA,cAAc,GAAG,EAAE,AAAA,WAAW,GAAG,CAAC;AAClC,cAAc,GAAG,EAAE,AAAA,WAAW,GAAG,IAAI,CAAC;EACpC,0BAA0B,EAAE,GAAG;EAC/B,uBAAuB,EAAE,GAAG,GAAG;;AAEjC,AAAA,cAAc,GAAG,EAAE,GAAG,CAAC;AACvB,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;EACzB,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,cAAc,GAAG,EAAE,AAAA,YAAY,GAAG,CAAC;AACnC,cAAc,GAAG,EAAE,AAAA,YAAY,GAAG,IAAI,CAAC;EACrC,yBAAyB,EAAE,GAAG;EAC9B,sBAAsB,EAAE,GAAG,GAAG;;AAEhC,AAAA,cAAc,GAAG,EAAE,AAAA,WAAW,GAAG,CAAC;AAClC,cAAc,GAAG,EAAE,AAAA,WAAW,GAAG,IAAI,CAAC;EACpC,0BAA0B,EAAE,GAAG;EAC/B,uBAAuB,EAAE,GAAG,GAAG;;AAEjC,AAAA,MAAM,CAAC;EACL,YAAY,EAAE,CAAC;EACf,MAAM,EAAE,MAAM;EACd,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM,GAAG;;AACrB,AAAA,MAAM,AAAA,OAAO,EAAE,MAAM,AAAA,MAAM,CAAC;EAC1B,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,MAAM,AAAA,MAAM,CAAC;EACX,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,MAAM,CAAC,EAAE,CAAC;EACR,OAAO,EAAE,MAAM,GAAG;;AAClB,AAAA,MAAM,CAAC,EAAE,GAAG,CAAC;AACb,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;EACf,OAAO,EAAE,YAAY;EACrB,OAAO,EAAE,QAAQ;EACjB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,IAAI,GAAG;;AACxB,AAAA,MAAM,CAAC,EAAE,GAAG,CAAC,AAAA,MAAM;AACnB,MAAM,CAAC,EAAE,GAAG,CAAC,AAAA,MAAM,CAAC;EAClB,eAAe,EAAE,IAAI;EACrB,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,MAAM,CAAC,KAAK,GAAG,CAAC;AAChB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,KAAK,EAAE,KAAK,GAAG;;AACjB,AAAA,MAAM,CAAC,SAAS,GAAG,CAAC;AACpB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;EACtB,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,MAAM,CAAC,SAAS,GAAG,CAAC;AACpB,MAAM,CAAC,SAAS,GAAG,CAAC,AAAA,MAAM;AAC1B,MAAM,CAAC,SAAS,GAAG,CAAC,AAAA,MAAM;AAC1B,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;EACtB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,WAAW,GAAG;;AAE1B,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,MAAM;EACf,OAAO,EAAE,cAAc;EACvB,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,CAAC;EACd,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,QAAQ;EACxB,aAAa,EAAE,KAAK,GAAG;;AACvB,AAAA,MAAM,AAAA,MAAM,CAAC;EACX,OAAO,EAAE,IAAI,GAAG;;AAClB,AAAA,IAAI,CAAC,MAAM,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI,GAAG;;AAEhB,AAAA,CAAC,AAAA,MAAM,AAAA,MAAM,EAAE,CAAC,AAAA,MAAM,AAAA,MAAM,CAAC;EAC3B,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,cAAc,CAAC;EACb,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,EAAE,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;EACrD,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,cAAc,CAAC;EACb,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,EAAE,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;EACrD,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,cAAc,CAAC;EACb,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,EAAE,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;EACrD,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,WAAW,CAAC;EACV,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,WAAW,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,EAAE,WAAW,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;EAC/C,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,cAAc,CAAC;EACb,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,EAAE,cAAc,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;EACrD,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,aAAa,CAAC;EACZ,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,aAAa,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,EAAE,aAAa,CAAA,AAAA,IAAC,AAAA,CAAK,MAAM,CAAC;EACnD,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,YAAY;EACrB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,OAAO;EAChB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,MAAM,AAAA,MAAM,CAAC;EACX,OAAO,EAAE,IAAI,GAAG;;AAClB,AAAA,IAAI,CAAC,MAAM,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI,GAAG;;AACd,AAAA,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,MAAM;AAC3C,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1B,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,OAAO,GAAG;;AACrB,AAAA,gBAAgB,AAAA,OAAO,GAAG,MAAM;AAChC,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC;EAChC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,gBAAgB,GAAG,MAAM,CAAC;EACxB,KAAK,EAAE,KAAK,GAAG;;AACjB,AAAA,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;EACjC,YAAY,EAAE,GAAG,GAAG;;AACtB,AAAA,UAAU,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC;EAC3B,WAAW,EAAE,GAAG,GAAG;;AAEvB,AAAA,CAAC,AAAA,MAAM,AAAA,MAAM,EAAE,CAAC,AAAA,MAAM,AAAA,MAAM,CAAC;EAC3B,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,OAAO,GAAG;;AAEpB,AAAA,UAAU,CAAC;EACT,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,UAAU,CAAC,EAAE;AACb,UAAU,CAAC,GAAG,CAAC;EACb,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,UAAU,CAAC,CAAC,CAAC;EACX,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG,GAAG;;AACrB,AAAA,UAAU,GAAG,EAAE,CAAC;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,UAAU,CAAC,UAAU;AACrB,gBAAgB,CAAC,UAAU,CAAC;EAC1B,aAAa,EAAE,GAAG;EAClB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAAG;;AACxB,AAAA,UAAU,CAAC,UAAU,CAAC;EACpB,SAAS,EAAE,IAAI,GAAG;;AACpB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EACjC,AAAA,UAAU,CAAC;IACT,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI,GAAG;EACvB,AAAA,UAAU,CAAC,UAAU;EACrB,gBAAgB,CAAC,UAAU,CAAC;IAC1B,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI,GAAG;EACxB,AAAA,UAAU,CAAC,EAAE;EACb,UAAU,CAAC,GAAG,CAAC;IACb,SAAS,EAAE,IAAI,GAAG;;AAE1B,AAAA,UAAU,CAAC;EACT,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,IAAI;EACnB,WAAW,EAAE,OAAO;EACpB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,uBAAuB;EAC3C,aAAa,EAAE,uBAAuB;EACtC,UAAU,EAAE,uBAAuB,GAAG;;AACtC,AAAA,UAAU,GAAG,GAAG;AAChB,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC;EACjB,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI,GAAG;;AACvB,AAAA,UAAU,CAAC,QAAQ,CAAC;EAClB,OAAO,EAAE,GAAG;EACZ,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,CAAC,AAAA,UAAU,AAAA,MAAM;AACjB,CAAC,AAAA,UAAU,AAAA,MAAM;AACjB,CAAC,AAAA,UAAU,AAAA,OAAO,CAAC;EACjB,YAAY,EAAE,OAAO,GAAG;;AAE1B,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EACnB,MAAM,EAAE,qBAAqB;EAC7B,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,MAAM,CAAC,EAAE,CAAC;EACR,UAAU,EAAE,CAAC;EACb,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,MAAM,CAAC,WAAW,CAAC;EACjB,WAAW,EAAE,IAAI,GAAG;;AACtB,AAAA,MAAM,GAAG,CAAC;AACV,MAAM,GAAG,EAAE,CAAC;EACV,aAAa,EAAE,CAAC,GAAG;;AACrB,AAAA,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;EACb,UAAU,EAAE,GAAG,GAAG;;AAEtB,AAAA,kBAAkB;AAClB,kBAAkB,CAAC;EACjB,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,kBAAkB,CAAC,MAAM;AACzB,kBAAkB,CAAC,MAAM,CAAC;EACxB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;EACT,KAAK,EAAE,KAAK;EACZ,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,cAAc,CAAC,EAAE,CAAC;EAChB,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,cAAc,CAAC,WAAW,CAAC;EACzB,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,WAAW,CAAC;EACV,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,WAAW,CAAC,EAAE,CAAC;EACb,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,WAAW,CAAC,WAAW,CAAC;EACtB,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,cAAc,CAAC,EAAE,CAAC;EAChB,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,cAAc,CAAC,WAAW,CAAC;EACzB,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,aAAa,CAAC;EACZ,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,aAAa,CAAC,EAAE,CAAC;EACf,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,aAAa,CAAC,WAAW,CAAC;EACxB,KAAK,EAAE,OAAO,GAAG;;AAErB,kBAAkB,CAAlB,oBAAkB;EAChB,IAAI;IACF,mBAAmB,EAAE,MAAM;EAC7B,EAAE;IACA,mBAAmB,EAAE,GAAG;;AAE5B,UAAU,CAAV,oBAAU;EACR,IAAI;IACF,mBAAmB,EAAE,MAAM;EAC7B,EAAE;IACA,mBAAmB,EAAE,GAAG;;AAE5B,AAAA,SAAS,CAAC;EACR,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB;EACtD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG;;AAEnD,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,EAAE;EACT,MAAM,EAAE,IAAI;EACZ,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,gBAAgB,EAAE,OAAO;EACzB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,mBAAmB;EACtD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAE,IAAG,CAAC,CAAC,CAAC,mBAAmB;EAC9C,kBAAkB,EAAE,eAAe;EACnC,aAAa,EAAE,eAAe;EAC9B,UAAU,EAAE,eAAe,GAAG;;AAEhC,AAAA,iBAAiB,CAAC,aAAa;AAC/B,qBAAqB,CAAC;EACpB,gBAAgB,EAAE,2LAA2L;EAC7M,gBAAgB,EAAE,sLAAsL;EACxM,gBAAgB,EAAE,mLAAmL;EACrM,eAAe,EAAE,SAAS,GAAG;;AAE/B,AAAA,SAAS,AAAA,OAAO,CAAC,aAAa;AAC9B,aAAa,AAAA,OAAO,CAAC;EACnB,iBAAiB,EAAE,uCAAuC;EAC1D,YAAY,EAAE,uCAAuC;EACrD,SAAS,EAAE,uCAAuC,GAAG;;AAEvD,AAAA,qBAAqB,CAAC;EACpB,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,iBAAiB,CAAC,qBAAqB,CAAC;EACtC,gBAAgB,EAAE,2LAA2L;EAC7M,gBAAgB,EAAE,sLAAsL;EACxM,gBAAgB,EAAE,mLAAmL,GAAG;;AAE5M,AAAA,kBAAkB,CAAC;EACjB,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,iBAAiB,CAAC,kBAAkB,CAAC;EACnC,gBAAgB,EAAE,2LAA2L;EAC7M,gBAAgB,EAAE,sLAAsL;EACxM,gBAAgB,EAAE,mLAAmL,GAAG;;AAE5M,AAAA,qBAAqB,CAAC;EACpB,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,iBAAiB,CAAC,qBAAqB,CAAC;EACtC,gBAAgB,EAAE,2LAA2L;EAC7M,gBAAgB,EAAE,sLAAsL;EACxM,gBAAgB,EAAE,mLAAmL,GAAG;;AAE5M,AAAA,oBAAoB,CAAC;EACnB,gBAAgB,EAAE,OAAO,GAAG;;AAC5B,AAAA,iBAAiB,CAAC,oBAAoB,CAAC;EACrC,gBAAgB,EAAE,2LAA2L;EAC7M,gBAAgB,EAAE,sLAAsL;EACxM,gBAAgB,EAAE,mLAAmL,GAAG;;AAE5M,AAAA,MAAM,CAAC;EACL,UAAU,EAAE,IAAI,GAAG;;AACnB,AAAA,MAAM,AAAA,YAAY,CAAC;EACjB,UAAU,EAAE,CAAC,GAAG;;AAEpB,AAAA,MAAM;AACN,WAAW,CAAC;EACV,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,MAAM,GAAG;;AAErB,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,OAAO,GAAG;;AAEnB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,KAAK,GAAG;;AACjB,AAAA,aAAa,AAAA,cAAc,CAAC;EAC1B,SAAS,EAAE,IAAI,GAAG;;AAEtB,AAAA,YAAY;AACZ,MAAM,GAAG,WAAW,CAAC;EACnB,YAAY,EAAE,IAAI,GAAG;;AAEvB,AAAA,WAAW;AACX,MAAM,GAAG,UAAU,CAAC;EAClB,aAAa,EAAE,IAAI,GAAG;;AAExB,AAAA,WAAW;AACX,YAAY;AACZ,WAAW,CAAC;EACV,OAAO,EAAE,UAAU;EACnB,cAAc,EAAE,GAAG,GAAG;;AAExB,AAAA,aAAa,CAAC;EACZ,cAAc,EAAE,MAAM,GAAG;;AAE3B,AAAA,aAAa,CAAC;EACZ,cAAc,EAAE,MAAM,GAAG;;AAE3B,AAAA,cAAc,CAAC;EACb,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,WAAW,CAAC;EACV,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,WAAW,CAAC;EACV,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,CAAC,GAAG;;AAEpB,AAAA,gBAAgB,CAAC;EACf,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc,GAAG;;AACzB,AAAA,gBAAgB,AAAA,YAAY,CAAC;EAC3B,uBAAuB,EAAE,GAAG;EAC5B,sBAAsB,EAAE,GAAG,GAAG;;AAChC,AAAA,gBAAgB,AAAA,WAAW,CAAC;EAC1B,aAAa,EAAE,CAAC;EAChB,0BAA0B,EAAE,GAAG;EAC/B,yBAAyB,EAAE,GAAG,GAAG;;AAErC,AAAA,CAAC,AAAA,gBAAgB;AACjB,MAAM,AAAA,gBAAgB,CAAC;EACrB,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,CAAC,AAAA,gBAAgB,CAAC,wBAAwB;AAC1C,MAAM,AAAA,gBAAgB,CAAC,wBAAwB,CAAC;EAC9C,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,CAAC,AAAA,gBAAgB,AAAA,MAAM,EAAE,CAAC,AAAA,gBAAgB,AAAA,MAAM;AAChD,MAAM,AAAA,gBAAgB,AAAA,MAAM;AAC5B,MAAM,AAAA,gBAAgB,AAAA,MAAM,CAAC;EAC3B,eAAe,EAAE,IAAI;EACrB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO,GAAG;;AAEhC,AAAA,MAAM,AAAA,gBAAgB,CAAC;EACrB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,gBAAgB,AAAA,SAAS,EAAE,gBAAgB,AAAA,SAAS,AAAA,MAAM,EAAE,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC;EAC1F,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,WAAW,GAAG;;AACtB,AAAA,gBAAgB,AAAA,SAAS,CAAC,wBAAwB,EAAE,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,wBAAwB,EAAE,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,wBAAwB,CAAC;EACrK,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,gBAAgB,AAAA,SAAS,CAAC,qBAAqB,EAAE,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,AAAA,SAAS,AAAA,MAAM,CAAC,qBAAqB,CAAC;EAC5J,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,gBAAgB,AAAA,OAAO,EAAE,gBAAgB,AAAA,OAAO,AAAA,MAAM,EAAE,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC;EACpF,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,gBAAgB,AAAA,OAAO,CAAC,wBAAwB;AAChD,gBAAgB,AAAA,OAAO,CAAC,wBAAwB,GAAG,KAAK;AACxD,gBAAgB,AAAA,OAAO,CAAC,wBAAwB,GAAG,MAAM,EAAE,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB;AACjH,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,GAAG,KAAK;AAC9D,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,GAAG,MAAM,EAAE,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB;AACvH,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,GAAG,KAAK;AAC9D,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,wBAAwB,GAAG,MAAM,CAAC;EAC9D,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,gBAAgB,AAAA,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,AAAA,OAAO,AAAA,MAAM,CAAC,qBAAqB,CAAC;EACtJ,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,wBAAwB,CAAC;EACvB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,wBAAwB;AACzB,MAAM,AAAA,wBAAwB,CAAC;EAC7B,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,CAAC,AAAA,wBAAwB,CAAC,wBAAwB;AAClD,MAAM,AAAA,wBAAwB,CAAC,wBAAwB,CAAC;EACtD,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,CAAC,AAAA,wBAAwB,AAAA,MAAM,EAAE,CAAC,AAAA,wBAAwB,AAAA,MAAM;AAChE,MAAM,AAAA,wBAAwB,AAAA,MAAM;AACpC,MAAM,AAAA,wBAAwB,AAAA,MAAM,CAAC;EACnC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,CAAC,AAAA,wBAAwB,AAAA,OAAO,EAAE,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,EAAE,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM;AAChH,MAAM,AAAA,wBAAwB,AAAA,OAAO;AACrC,MAAM,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM;AAC3C,MAAM,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,CAAC;EAC1C,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAE5B,AAAA,qBAAqB,CAAC;EACpB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,qBAAqB;AACtB,MAAM,AAAA,qBAAqB,CAAC;EAC1B,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,CAAC,AAAA,qBAAqB,CAAC,wBAAwB;AAC/C,MAAM,AAAA,qBAAqB,CAAC,wBAAwB,CAAC;EACnD,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,CAAC,AAAA,qBAAqB,AAAA,MAAM,EAAE,CAAC,AAAA,qBAAqB,AAAA,MAAM;AAC1D,MAAM,AAAA,qBAAqB,AAAA,MAAM;AACjC,MAAM,AAAA,qBAAqB,AAAA,MAAM,CAAC;EAChC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,CAAC,AAAA,qBAAqB,AAAA,OAAO,EAAE,CAAC,AAAA,qBAAqB,AAAA,OAAO,AAAA,MAAM,EAAE,CAAC,AAAA,qBAAqB,AAAA,OAAO,AAAA,MAAM;AACvG,MAAM,AAAA,qBAAqB,AAAA,OAAO;AAClC,MAAM,AAAA,qBAAqB,AAAA,OAAO,AAAA,MAAM;AACxC,MAAM,AAAA,qBAAqB,AAAA,OAAO,AAAA,MAAM,CAAC;EACvC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAE5B,AAAA,wBAAwB,CAAC;EACvB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,wBAAwB;AACzB,MAAM,AAAA,wBAAwB,CAAC;EAC7B,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,CAAC,AAAA,wBAAwB,CAAC,wBAAwB;AAClD,MAAM,AAAA,wBAAwB,CAAC,wBAAwB,CAAC;EACtD,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,CAAC,AAAA,wBAAwB,AAAA,MAAM,EAAE,CAAC,AAAA,wBAAwB,AAAA,MAAM;AAChE,MAAM,AAAA,wBAAwB,AAAA,MAAM;AACpC,MAAM,AAAA,wBAAwB,AAAA,MAAM,CAAC;EACnC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,CAAC,AAAA,wBAAwB,AAAA,OAAO,EAAE,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,EAAE,CAAC,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM;AAChH,MAAM,AAAA,wBAAwB,AAAA,OAAO;AACrC,MAAM,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM;AAC3C,MAAM,AAAA,wBAAwB,AAAA,OAAO,AAAA,MAAM,CAAC;EAC1C,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAE5B,AAAA,uBAAuB,CAAC;EACtB,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAE9B,AAAA,CAAC,AAAA,uBAAuB;AACxB,MAAM,AAAA,uBAAuB,CAAC;EAC5B,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,CAAC,AAAA,uBAAuB,CAAC,wBAAwB;AACjD,MAAM,AAAA,uBAAuB,CAAC,wBAAwB,CAAC;EACrD,KAAK,EAAE,OAAO,GAAG;;AACnB,AAAA,CAAC,AAAA,uBAAuB,AAAA,MAAM,EAAE,CAAC,AAAA,uBAAuB,AAAA,MAAM;AAC9D,MAAM,AAAA,uBAAuB,AAAA,MAAM;AACnC,MAAM,AAAA,uBAAuB,AAAA,MAAM,CAAC;EAClC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,CAAC,AAAA,uBAAuB,AAAA,OAAO,EAAE,CAAC,AAAA,uBAAuB,AAAA,OAAO,AAAA,MAAM,EAAE,CAAC,AAAA,uBAAuB,AAAA,OAAO,AAAA,MAAM;AAC7G,MAAM,AAAA,uBAAuB,AAAA,OAAO;AACpC,MAAM,AAAA,uBAAuB,AAAA,OAAO,AAAA,MAAM;AAC1C,MAAM,AAAA,uBAAuB,AAAA,OAAO,AAAA,MAAM,CAAC;EACzC,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AAE5B,AAAA,wBAAwB,CAAC;EACvB,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,qBAAqB,CAAC;EACpB,aAAa,EAAE,CAAC;EAChB,WAAW,EAAE,GAAG,GAAG;;AAErB,AAAA,MAAM,CAAC;EACL,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,qBAAqB;EAC7B,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB;EACjD,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG;;AAE9C,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,IAAI,GAAG;;AAChB,AAAA,WAAW,AAAA,OAAO,EAAE,WAAW,AAAA,MAAM,CAAC;EACpC,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,WAAW,AAAA,MAAM,CAAC;EAChB,KAAK,EAAE,IAAI,GAAG;;AAElB,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,SAAS;EAClB,aAAa,EAAE,qBAAqB;EACpC,uBAAuB,EAAE,GAAG;EAC5B,sBAAsB,EAAE,GAAG,GAAG;;AAC9B,AAAA,cAAc,GAAG,SAAS,CAAC,gBAAgB,CAAC;EAC1C,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,YAAY,CAAC;EACX,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,CAAC;EAChB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,OAAO,GAAG;;AACjB,AAAA,YAAY,GAAG,CAAC;AAChB,YAAY,GAAG,KAAK;AACpB,YAAY,GAAG,MAAM;AACrB,YAAY,GAAG,KAAK,GAAG,CAAC;AACxB,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;EACxB,KAAK,EAAE,OAAO,GAAG;;AAErB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,SAAS;EAClB,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,cAAc;EAC1B,0BAA0B,EAAE,GAAG;EAC/B,yBAAyB,EAAE,GAAG,GAAG;;AAEnC,AAAA,MAAM,GAAG,WAAW;AACpB,MAAM,GAAG,eAAe,GAAG,WAAW,CAAC;EACrC,aAAa,EAAE,CAAC,GAAG;;AACnB,AAAA,MAAM,GAAG,WAAW,CAAC,gBAAgB;AACrC,MAAM,GAAG,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;EACtD,YAAY,EAAE,KAAK;EACnB,aAAa,EAAE,CAAC,GAAG;;AACrB,AAAA,MAAM,GAAG,WAAW,AAAA,YAAY,CAAC,gBAAgB,AAAA,YAAY;AAC7D,MAAM,GAAG,eAAe,GAAG,WAAW,AAAA,YAAY,CAAC,gBAAgB,AAAA,YAAY,CAAC;EAC9E,UAAU,EAAE,CAAC;EACb,uBAAuB,EAAE,GAAG;EAC5B,sBAAsB,EAAE,GAAG,GAAG;;AAChC,AAAA,MAAM,GAAG,WAAW,AAAA,WAAW,CAAC,gBAAgB,AAAA,WAAW;AAC3D,MAAM,GAAG,eAAe,GAAG,WAAW,AAAA,WAAW,CAAC,gBAAgB,AAAA,WAAW,CAAC;EAC5E,aAAa,EAAE,CAAC;EAChB,0BAA0B,EAAE,GAAG;EAC/B,yBAAyB,EAAE,GAAG,GAAG;;AAErC,AAAA,MAAM,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC,gBAAgB,AAAA,YAAY,CAAC;EACnF,uBAAuB,EAAE,CAAC;EAC1B,sBAAsB,EAAE,CAAC,GAAG;;AAE9B,AAAA,cAAc,GAAG,WAAW,CAAC,gBAAgB,AAAA,YAAY,CAAC;EACxD,gBAAgB,EAAE,CAAC,GAAG;;AAExB,AAAA,WAAW,GAAG,aAAa,CAAC;EAC1B,gBAAgB,EAAE,CAAC,GAAG;;AAExB,AAAA,MAAM,GAAG,MAAM;AACf,MAAM,GAAG,iBAAiB,GAAG,MAAM;AACnC,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC;EAChC,aAAa,EAAE,CAAC,GAAG;;AACnB,AAAA,MAAM,GAAG,MAAM,CAAC,OAAO;AACvB,MAAM,GAAG,iBAAiB,GAAG,MAAM,CAAC,OAAO;AAC3C,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC;EACxC,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GAAG;;AAE1B,AAAA,MAAM,GAAG,MAAM,AAAA,YAAY;AAC3B,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,CAAC;EAC1D,uBAAuB,EAAE,GAAG;EAC5B,sBAAsB,EAAE,GAAG,GAAG;;AAC9B,AAAA,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY;AAChE,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY;AAChE,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY;AAChG,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC;EAC/F,sBAAsB,EAAE,GAAG;EAC3B,uBAAuB,EAAE,GAAG,GAAG;;AAC/B,AAAA,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/E,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/E,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/E,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/E,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/G,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/G,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY;AAC/G,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,YAAY,CAAC;EAC9G,sBAAsB,EAAE,GAAG,GAAG;;AAChC,AAAA,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9E,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9E,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9E,MAAM,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9E,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9G,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9G,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW;AAC9G,MAAM,GAAG,iBAAiB,AAAA,YAAY,GAAG,MAAM,AAAA,YAAY,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,AAAA,WAAW,CAAC;EAC7G,uBAAuB,EAAE,GAAG,GAAG;;AAErC,AAAA,MAAM,GAAG,MAAM,AAAA,WAAW;AAC1B,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,CAAC;EACxD,0BAA0B,EAAE,GAAG;EAC/B,yBAAyB,EAAE,GAAG,GAAG;;AACjC,AAAA,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW;AAC7D,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW;AAC7D,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW;AAC5F,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC;EAC3F,yBAAyB,EAAE,GAAG;EAC9B,0BAA0B,EAAE,GAAG,GAAG;;AAClC,AAAA,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC5E,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC5E,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC5E,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC5E,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC3G,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC3G,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY;AAC3G,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,YAAY,CAAC;EAC1G,yBAAyB,EAAE,GAAG,GAAG;;AACnC,AAAA,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC3E,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC3E,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC3E,MAAM,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC3E,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC1G,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC1G,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW;AAC1G,MAAM,GAAG,iBAAiB,AAAA,WAAW,GAAG,MAAM,AAAA,WAAW,GAAG,KAAK,AAAA,WAAW,GAAG,EAAE,AAAA,WAAW,CAAC,EAAE,AAAA,WAAW,CAAC;EACzG,0BAA0B,EAAE,GAAG,GAAG;;AAExC,AAAA,MAAM,GAAG,WAAW,GAAG,MAAM;AAC7B,MAAM,GAAG,WAAW,GAAG,iBAAiB;AACxC,MAAM,GAAG,MAAM,GAAG,WAAW;AAC7B,MAAM,GAAG,iBAAiB,GAAG,WAAW,CAAC;EACvC,UAAU,EAAE,cAAc,GAAG;;AAE/B,AAAA,MAAM,GAAG,MAAM,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE;AACvD,MAAM,GAAG,MAAM,GAAG,KAAK,AAAA,YAAY,GAAG,EAAE,AAAA,YAAY,CAAC,EAAE,CAAC;EACtD,UAAU,EAAE,CAAC,GAAG;;AAElB,AAAA,MAAM,GAAG,eAAe;AACxB,MAAM,GAAG,iBAAiB,GAAG,eAAe,CAAC;EAC3C,MAAM,EAAE,CAAC,GAAG;;AACZ,AAAA,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AACtD,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,YAAY,CAAC;EACzE,WAAW,EAAE,CAAC,GAAG;;AACnB,AAAA,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACrD,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,AAAA,WAAW,CAAC;EACxE,YAAY,EAAE,CAAC,GAAG;;AACpB,AAAA,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AACtD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AACtD,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE;AAC1E,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,YAAY,GAAG,EAAE,CAAC;EACzE,aAAa,EAAE,CAAC,GAAG;;AACrB,AAAA,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACrD,MAAM,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACrD,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE;AACzE,MAAM,GAAG,iBAAiB,GAAG,eAAe,GAAG,KAAK,GAAG,EAAE,AAAA,WAAW,GAAG,EAAE,CAAC;EACxE,aAAa,EAAE,CAAC,GAAG;;AAEvB,AAAA,MAAM,GAAG,iBAAiB,CAAC;EACzB,MAAM,EAAE,CAAC;EACT,aAAa,EAAE,CAAC,GAAG;;AAErB,AAAA,YAAY,CAAC;EACX,aAAa,EAAE,IAAI,GAAG;;AACtB,AAAA,YAAY,CAAC,MAAM,CAAC;EAClB,aAAa,EAAE,CAAC;EAChB,aAAa,EAAE,GAAG,GAAG;;AACrB,AAAA,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC;EAC3B,UAAU,EAAE,GAAG,GAAG;;AACtB,AAAA,YAAY,CAAC,cAAc,CAAC;EAC1B,aAAa,EAAE,CAAC,GAAG;;AACnB,AAAA,YAAY,CAAC,cAAc,GAAG,eAAe,GAAG,WAAW;AAC3D,YAAY,CAAC,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC1D,UAAU,EAAE,cAAc,GAAG;;AACjC,AAAA,YAAY,CAAC,aAAa,CAAC;EACzB,UAAU,EAAE,CAAC,GAAG;;AAChB,AAAA,YAAY,CAAC,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC;EACvD,aAAa,EAAE,cAAc,GAAG;;AAEtC,AAAA,cAAc,CAAC;EACb,YAAY,EAAE,IAAI,GAAG;;AACrB,AAAA,cAAc,GAAG,cAAc,CAAC;EAC9B,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,IAAI,GAAG;;AACrB,AAAA,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC9D,gBAAgB,EAAE,IAAI,GAAG;;AAC3B,AAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;EACrC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;EAC7D,mBAAmB,EAAE,IAAI,GAAG;;AAEhC,AAAA,cAAc,CAAC;EACb,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,cAAc,GAAG,cAAc,CAAC;EAC9B,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC9D,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;EACrC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI,GAAG;;AAC7B,AAAA,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;EAC7D,mBAAmB,EAAE,OAAO,GAAG;;AAEnC,AAAA,cAAc,CAAC;EACb,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,cAAc,GAAG,cAAc,CAAC;EAC9B,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC9D,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;EACrC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;EAC7D,mBAAmB,EAAE,OAAO,GAAG;;AAEnC,AAAA,WAAW,CAAC;EACV,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,WAAW,GAAG,cAAc,CAAC;EAC3B,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,WAAW,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC3D,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;EAClC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,WAAW,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;EAC1D,mBAAmB,EAAE,OAAO,GAAG;;AAEnC,AAAA,cAAc,CAAC;EACb,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,cAAc,GAAG,cAAc,CAAC;EAC9B,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC9D,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;EACrC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;EAC7D,mBAAmB,EAAE,OAAO,GAAG;;AAEnC,AAAA,aAAa,CAAC;EACZ,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,aAAa,GAAG,cAAc,CAAC;EAC7B,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO,GAAG;;AACxB,AAAA,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC;EAC7D,gBAAgB,EAAE,OAAO,GAAG;;AAC9B,AAAA,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;EACpC,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,OAAO,GAAG;;AAChC,AAAA,aAAa,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;EAC5D,mBAAmB,EAAE,OAAO,GAAG;;AAEnC,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,MAAM,GAAG;;AACnB,AAAA,iBAAiB,CAAC,sBAAsB;AACxC,iBAAiB,CAAC,MAAM;AACxB,iBAAiB,CAAC,KAAK;AACvB,iBAAiB,CAAC,MAAM;AACxB,iBAAiB,CAAC,KAAK,CAAC;EACtB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,CAAC,GAAG;;AAEhB,AAAA,uBAAuB,CAAC;EACtB,cAAc,EAAE,MAAM,GAAG;;AAE3B,AAAA,sBAAsB,CAAC;EACrB,cAAc,EAAE,GAAG,GAAG;;AAExB,AAAA,KAAK,CAAC;EACJ,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,IAAI;EACnB,gBAAgB,EAAE,OAAO;EACzB,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB;EACvD,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG;;AAClD,AAAA,KAAK,CAAC,UAAU,CAAC;EACf,YAAY,EAAE,IAAI;EAClB,YAAY,EAAE,mBAAmB,GAAG;;AAExC,AAAA,QAAQ,CAAC;EACP,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,QAAQ,CAAC;EACP,OAAO,EAAE,GAAG;EACZ,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,MAAM,CAAC;EACL,KAAK,EAAE,KAAK;EACZ,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,CAAC;EACd,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,YAAY;EACzB,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,iBAAiB,GAAG;;AAC5B,AAAA,MAAM,AAAA,MAAM,EAAE,MAAM,AAAA,MAAM,CAAC;EACzB,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,iBAAiB,GAAG;;AAEhC,AAAA,MAAM,AAAA,MAAM,CAAC;EACX,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,OAAO;EACf,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,kBAAkB,EAAE,IAAI,GAAG;;AAE7B,AAAA,WAAW,CAAC;EACV,QAAQ,EAAE,MAAM,GAAG;;AAErB,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,MAAM;EAChB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,IAAI;EACb,0BAA0B,EAAE,KAAK;EACjC,OAAO,EAAE,CAAC,GAAG;;AACb,AAAA,MAAM,AAAA,KAAK,CAAC,aAAa,CAAC;EACxB,iBAAiB,EAAE,kBAAkB;EACrC,aAAa,EAAE,kBAAkB;EACjC,YAAY,EAAE,kBAAkB;EAChC,SAAS,EAAE,kBAAkB;EAC7B,kBAAkB,EAAE,+BAA+B;EACnD,eAAe,EAAE,4BAA4B;EAC7C,aAAa,EAAE,0BAA0B;EACzC,UAAU,EAAE,uBAAuB,GAAG;;AACxC,AAAA,MAAM,AAAA,GAAG,CAAC,aAAa,CAAC;EACtB,iBAAiB,EAAE,eAAe;EAClC,aAAa,EAAE,eAAe;EAC9B,YAAY,EAAE,eAAe;EAC7B,SAAS,EAAE,eAAe,GAAG;;AAEjC,AAAA,WAAW,CAAC,MAAM,CAAC;EACjB,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,aAAa,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,cAAc,CAAC;EACb,QAAQ,EAAE,QAAQ;EAClB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,cAAc;EACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB;EACpC,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB;EAChD,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB;EACxC,eAAe,EAAE,WAAW;EAC5B,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,eAAe,CAAC;EACd,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,IAAI;EACb,gBAAgB,EAAE,IAAI,GAAG;;AACzB,AAAA,eAAe,AAAA,KAAK,CAAC;EACnB,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,gBAAgB,GAAG;;AAC7B,AAAA,eAAe,AAAA,GAAG,CAAC;EACjB,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,iBAAiB,GAAG;;AAEhC,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,iBAAiB,GAAG;;AACnC,AAAA,aAAa,AAAA,OAAO,EAAE,aAAa,AAAA,MAAM,CAAC;EACxC,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,aAAa,AAAA,MAAM,CAAC;EAClB,KAAK,EAAE,IAAI,GAAG;;AAElB,AAAA,aAAa,CAAC,MAAM,CAAC;EACnB,UAAU,EAAE,IAAI,GAAG;;AAErB,AAAA,YAAY,CAAC;EACX,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,OAAO,GAAG;;AAEzB,AAAA,WAAW,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI,GAAG;;AAElB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,UAAU,EAAE,KAAK;EACjB,UAAU,EAAE,iBAAiB,GAAG;;AAChC,AAAA,aAAa,AAAA,OAAO,EAAE,aAAa,AAAA,MAAM,CAAC;EACxC,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,aAAa,AAAA,MAAM,CAAC;EAClB,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;EACxB,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,CAAC,GAAG;;AACrB,AAAA,aAAa,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;EACnC,WAAW,EAAE,IAAI,GAAG;;AACtB,AAAA,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC;EACpC,WAAW,EAAE,CAAC,GAAG;;AAErB,AAAA,wBAAwB,CAAC;EACvB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,OAAO;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM,GAAG;;AAErB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,aAAa,CAAC;IACZ,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,SAAS,GAAG;EACtB,AAAA,cAAc,CAAC;IACb,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB;IACjD,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG;EAC9C,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,KAAK,GAAG;;AAEnB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,SAAS,CAAC;IACR,KAAK,EAAE,KAAK,GAAG;;AAEnB,AAAA,QAAQ,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,8CAA8C;EAC3D,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,MAAM;EACtB,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,OAAO;EACpB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,KAAK;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,YAAY,EAAE,MAAM;EACpB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,gBAAgB,GAAG;;AAC3B,AAAA,QAAQ,AAAA,GAAG,CAAC;EACV,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,iBAAiB,GAAG;;AAC9B,AAAA,QAAQ,AAAA,IAAI,CAAC;EACX,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,QAAQ,AAAA,MAAM,CAAC;EACb,WAAW,EAAE,GAAG;EAChB,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,QAAQ,AAAA,OAAO,CAAC;EACd,UAAU,EAAE,GAAG;EACf,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,QAAQ,AAAA,KAAK,CAAC;EACZ,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,KAAK,GAAG;;AAErB,AAAA,cAAc,CAAC;EACb,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,OAAO;EAChB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,gBAAgB,EAAE,IAAI;EACtB,aAAa,EAAE,GAAG,GAAG;;AAEvB,AAAA,cAAc,CAAC;EACb,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,YAAY,EAAE,WAAW;EACzB,YAAY,EAAE,KAAK,GAAG;;AAExB,AAAA,QAAQ,AAAA,IAAI,CAAC,cAAc,CAAC;EAC1B,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE,IAAI,GAAG;;AAE3B,AAAA,QAAQ,AAAA,SAAS,CAAC,cAAc,CAAC;EAC/B,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,GAAG;EACV,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE,IAAI,GAAG;;AAE3B,AAAA,QAAQ,AAAA,UAAU,CAAC,cAAc,CAAC;EAChC,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,GAAG;EACT,aAAa,EAAE,IAAI;EACnB,YAAY,EAAE,SAAS;EACvB,gBAAgB,EAAE,IAAI,GAAG;;AAE3B,AAAA,QAAQ,AAAA,MAAM,CAAC,cAAc,CAAC;EAC5B,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,CAAC;EACP,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,aAAa;EAC3B,kBAAkB,EAAE,IAAI,GAAG;;AAE7B,AAAA,QAAQ,AAAA,KAAK,CAAC,cAAc,CAAC;EAC3B,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,CAAC;EACR,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,aAAa;EAC3B,iBAAiB,EAAE,IAAI,GAAG;;AAE5B,AAAA,QAAQ,AAAA,OAAO,CAAC,cAAc,CAAC;EAC7B,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,SAAS;EACvB,mBAAmB,EAAE,IAAI,GAAG;;AAE9B,AAAA,QAAQ,AAAA,YAAY,CAAC,cAAc,CAAC;EAClC,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,SAAS;EACvB,mBAAmB,EAAE,IAAI,GAAG;;AAE9B,AAAA,QAAQ,AAAA,aAAa,CAAC,cAAc,CAAC;EACnC,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,GAAG;EACT,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,SAAS;EACvB,mBAAmB,EAAE,IAAI,GAAG;;AAE9B,AAAA,QAAQ,CAAC;EACP,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,8CAA8C;EAC3D,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,MAAM;EACnB,cAAc,EAAE,MAAM;EACtB,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,OAAO;EACpB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,KAAK;EACjB,eAAe,EAAE,IAAI;EACrB,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,YAAY,EAAE,MAAM;EACpB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,IAAI;EACf,gBAAgB,EAAE,IAAI;EACtB,eAAe,EAAE,WAAW;EAC5B,MAAM,EAAE,cAAc;EACtB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB;EACpC,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB;EACjD,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG;;AAC5C,AAAA,QAAQ,AAAA,IAAI,CAAC;EACX,UAAU,EAAE,KAAK,GAAG;;AACtB,AAAA,QAAQ,AAAA,MAAM,CAAC;EACb,WAAW,EAAE,IAAI,GAAG;;AACtB,AAAA,QAAQ,AAAA,OAAO,CAAC;EACd,UAAU,EAAE,IAAI,GAAG;;AACrB,AAAA,QAAQ,AAAA,KAAK,CAAC;EACZ,WAAW,EAAE,KAAK,GAAG;;AAEzB,AAAA,cAAc,CAAC;EACb,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,IAAI;EACf,gBAAgB,EAAE,OAAO;EACzB,aAAa,EAAE,iBAAiB;EAChC,aAAa,EAAE,WAAW,GAAG;;AAE/B,AAAA,gBAAgB,CAAC;EACf,OAAO,EAAE,QAAQ,GAAG;;AAEtB,AAAA,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,AAAA,MAAM,CAAC;EACzC,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,CAAC;EACR,MAAM,EAAE,CAAC;EACT,YAAY,EAAE,WAAW;EACzB,YAAY,EAAE,KAAK,GAAG;;AAExB,AAAA,QAAQ,GAAG,MAAM,CAAC;EAChB,YAAY,EAAE,IAAI,GAAG;;AAEvB,AAAA,QAAQ,GAAG,MAAM,AAAA,MAAM,CAAC;EACtB,YAAY,EAAE,IAAI;EAClB,OAAO,EAAE,EAAE,GAAG;;AAEhB,AAAA,QAAQ,AAAA,IAAI,GAAG,MAAM,CAAC;EACpB,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,KAAK;EAClB,mBAAmB,EAAE,CAAC;EACtB,gBAAgB,EAAE,OAAO;EACzB,gBAAgB,EAAE,mBAAmB;EACrC,MAAM,EAAE,KAAK,GAAG;;AAChB,AAAA,QAAQ,AAAA,IAAI,GAAG,MAAM,AAAA,MAAM,CAAC;EAC1B,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,KAAK;EAClB,mBAAmB,EAAE,CAAC;EACtB,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,QAAQ,AAAA,MAAM,GAAG,MAAM,CAAC;EACtB,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,KAAK;EACX,UAAU,EAAE,KAAK;EACjB,iBAAiB,EAAE,CAAC;EACpB,kBAAkB,EAAE,OAAO;EAC3B,kBAAkB,EAAE,mBAAmB,GAAG;;AAC1C,AAAA,QAAQ,AAAA,MAAM,GAAG,MAAM,AAAA,MAAM,CAAC;EAC5B,OAAO,EAAE,GAAG;EACZ,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,KAAK;EACb,iBAAiB,EAAE,CAAC;EACpB,kBAAkB,EAAE,IAAI,GAAG;;AAE/B,AAAA,QAAQ,AAAA,OAAO,GAAG,MAAM,CAAC;EACvB,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,KAAK;EAClB,gBAAgB,EAAE,CAAC;EACnB,mBAAmB,EAAE,OAAO;EAC5B,mBAAmB,EAAE,mBAAmB;EACxC,GAAG,EAAE,KAAK,GAAG;;AACb,AAAA,QAAQ,AAAA,OAAO,GAAG,MAAM,AAAA,MAAM,CAAC;EAC7B,OAAO,EAAE,GAAG;EACZ,GAAG,EAAE,GAAG;EACR,WAAW,EAAE,KAAK;EAClB,gBAAgB,EAAE,CAAC;EACnB,mBAAmB,EAAE,IAAI,GAAG;;AAEhC,AAAA,QAAQ,AAAA,KAAK,GAAG,MAAM,CAAC;EACrB,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,KAAK;EACjB,kBAAkB,EAAE,CAAC;EACrB,iBAAiB,EAAE,OAAO;EAC1B,iBAAiB,EAAE,mBAAmB,GAAG;;AACzC,AAAA,QAAQ,AAAA,KAAK,GAAG,MAAM,AAAA,MAAM,CAAC;EAC3B,OAAO,EAAE,GAAG;EACZ,KAAK,EAAE,GAAG;EACV,kBAAkB,EAAE,CAAC;EACrB,iBAAiB,EAAE,IAAI;EACvB,MAAM,EAAE,KAAK,GAAG;;AAEpB,AAAA,SAAS,CAAC;EACR,QAAQ,EAAE,QAAQ,GAAG;;AAEvB,AAAA,eAAe,CAAC;EACd,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;EAChB,KAAK,EAAE,IAAI,GAAG;;AACd,AAAA,eAAe,GAAG,KAAK,CAAC;EACtB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,QAAQ;EAClB,kBAAkB,EAAE,qBAAqB;EACzC,aAAa,EAAE,qBAAqB;EACpC,UAAU,EAAE,qBAAqB,GAAG;;AACpC,AAAA,eAAe,GAAG,KAAK,GAAG,GAAG;AAC7B,eAAe,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC;EAChC,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,CAAC,GAAG;;AACnB,MAAM,CAAC,GAAG,MAAM,YAAY,KAAK,mBAAmB;EAClD,AAAA,eAAe,GAAG,KAAK,CAAC;IACtB,kBAAkB,EAAE,kCAAkC;IACtD,eAAe,EAAE,+BAA+B;IAChD,aAAa,EAAE,6BAA6B;IAC5C,UAAU,EAAE,0BAA0B;IACtC,2BAA2B,EAAE,MAAM;IACnC,wBAAwB,EAAE,MAAM;IAChC,mBAAmB,EAAE,MAAM;IAC3B,mBAAmB,EAAE,MAAM;IAC3B,gBAAgB,EAAE,MAAM;IACxB,WAAW,EAAE,MAAM,GAAG;EACtB,AAAA,eAAe,GAAG,KAAK,AAAA,KAAK,EAAE,eAAe,GAAG,KAAK,AAAA,OAAO,AAAA,MAAM,CAAC;IACjE,iBAAiB,EAAE,uBAAuB;IAC1C,SAAS,EAAE,uBAAuB;IAClC,IAAI,EAAE,CAAC,GAAG;EACZ,AAAA,eAAe,GAAG,KAAK,AAAA,KAAK,EAAE,eAAe,GAAG,KAAK,AAAA,OAAO,AAAA,KAAK,CAAC;IAChE,iBAAiB,EAAE,wBAAwB;IAC3C,SAAS,EAAE,wBAAwB;IACnC,IAAI,EAAE,CAAC,GAAG;EACZ,AAAA,eAAe,GAAG,KAAK,AAAA,KAAK,AAAA,KAAK,EAAE,eAAe,GAAG,KAAK,AAAA,KAAK,AAAA,MAAM,EAAE,eAAe,GAAG,KAAK,AAAA,OAAO,CAAC;IACpG,iBAAiB,EAAE,oBAAoB;IACvC,SAAS,EAAE,oBAAoB;IAC/B,IAAI,EAAE,CAAC,GAAG;;AAClB,AAAA,eAAe,GAAG,OAAO;AACzB,eAAe,GAAG,KAAK;AACvB,eAAe,GAAG,KAAK,CAAC;EACtB,OAAO,EAAE,KAAK,GAAG;;AACnB,AAAA,eAAe,GAAG,OAAO,CAAC;EACxB,IAAI,EAAE,CAAC,GAAG;;AACZ,AAAA,eAAe,GAAG,KAAK;AACvB,eAAe,GAAG,KAAK,CAAC;EACtB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,eAAe,GAAG,KAAK,CAAC;EACtB,IAAI,EAAE,IAAI,GAAG;;AACf,AAAA,eAAe,GAAG,KAAK,CAAC;EACtB,IAAI,EAAE,KAAK,GAAG;;AAChB,AAAA,eAAe,GAAG,KAAK,AAAA,KAAK;AAC5B,eAAe,GAAG,KAAK,AAAA,MAAM,CAAC;EAC5B,IAAI,EAAE,CAAC,GAAG;;AACZ,AAAA,eAAe,GAAG,OAAO,AAAA,KAAK,CAAC;EAC7B,IAAI,EAAE,KAAK,GAAG;;AAChB,AAAA,eAAe,GAAG,OAAO,AAAA,MAAM,CAAC;EAC9B,IAAI,EAAE,IAAI,GAAG;;AAEjB,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,iBAAiB;EACzB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB;EACzC,gBAAgB,EAAE,gBAAgB,GAAG;;AACrC,AAAA,iBAAiB,AAAA,KAAK,CAAC;EACrB,gBAAgB,EAAE,gFAAgF;EAClG,gBAAgB,EAAE,2EAA2E;EAC7F,gBAAgB,EAAE,4EAA4E;EAC9F,iBAAiB,EAAE,QAAQ;EAC3B,MAAM,EAAE,8GAA8G,GAAG;;AAC3H,AAAA,iBAAiB,AAAA,MAAM,CAAC;EACtB,IAAI,EAAE,IAAI;EACV,KAAK,EAAE,CAAC;EACR,gBAAgB,EAAE,gFAAgF;EAClG,gBAAgB,EAAE,2EAA2E;EAC7F,gBAAgB,EAAE,4EAA4E;EAC9F,iBAAiB,EAAE,QAAQ;EAC3B,MAAM,EAAE,8GAA8G,GAAG;;AAC3H,AAAA,iBAAiB,AAAA,MAAM,EAAE,iBAAiB,AAAA,MAAM,CAAC;EAC/C,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,IAAI;EACX,eAAe,EAAE,IAAI;EACrB,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,iBAAiB,GAAG;;AAC9B,AAAA,iBAAiB,CAAC,UAAU;AAC5B,iBAAiB,CAAC,UAAU;AAC5B,iBAAiB,CAAC,uBAAuB;AACzC,iBAAiB,CAAC,wBAAwB,CAAC;EACzC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,CAAC;EACV,OAAO,EAAE,YAAY,GAAG;;AAC1B,AAAA,iBAAiB,CAAC,UAAU;AAC5B,iBAAiB,CAAC,uBAAuB,CAAC;EACxC,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,KAAK,GAAG;;AACvB,AAAA,iBAAiB,CAAC,UAAU;AAC5B,iBAAiB,CAAC,wBAAwB,CAAC;EACzC,KAAK,EAAE,GAAG;EACV,YAAY,EAAE,KAAK,GAAG;;AACxB,AAAA,iBAAiB,CAAC,UAAU;AAC5B,iBAAiB,CAAC,UAAU,CAAC;EAC3B,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,WAAW,EAAE,CAAC;EACd,WAAW,EAAE,KAAK,GAAG;;AACvB,AAAA,iBAAiB,CAAC,UAAU,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AACrB,AAAA,iBAAiB,CAAC,UAAU,AAAA,OAAO,CAAC;EAClC,OAAO,EAAE,OAAO,GAAG;;AAEvB,AAAA,oBAAoB,CAAC;EACnB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,GAAG;EACT,OAAO,EAAE,EAAE;EACX,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,CAAC;EACf,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM,GAAG;;AACrB,AAAA,oBAAoB,CAAC,EAAE,CAAC;EACtB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,MAAM;EACnB,MAAM,EAAE,cAAc;EACtB,aAAa,EAAE,IAAI;EACnB,MAAM,EAAE,OAAO;EACf,gBAAgB,EAAE,OAAO;EACzB,gBAAgB,EAAE,gBAAgB,GAAG;;AACvC,AAAA,oBAAoB,CAAC,OAAO,CAAC;EAC3B,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,gBAAgB,EAAE,IAAI,GAAG;;AAE7B,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,EAAE;EACX,WAAW,EAAE,IAAI;EACjB,cAAc,EAAE,IAAI;EACpB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG;;AAC5C,AAAA,iBAAiB,CAAC,IAAI,CAAC;EACrB,WAAW,EAAE,IAAI,GAAG;;AAExB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EACjC,AAAA,iBAAiB,CAAC,uBAAuB;EACzC,iBAAiB,CAAC,wBAAwB;EAC1C,iBAAiB,CAAC,UAAU;EAC5B,iBAAiB,CAAC,UAAU,CAAC;IAC3B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,IAAI,GAAG;EACpB,AAAA,iBAAiB,CAAC,uBAAuB;EACzC,iBAAiB,CAAC,UAAU,CAAC;IAC3B,WAAW,EAAE,KAAK,GAAG;EACvB,AAAA,iBAAiB,CAAC,wBAAwB;EAC1C,iBAAiB,CAAC,UAAU,CAAC;IAC3B,YAAY,EAAE,KAAK,GAAG;EACxB,AAAA,iBAAiB,CAAC;IAChB,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;IACV,cAAc,EAAE,IAAI,GAAG;EACzB,AAAA,oBAAoB,CAAC;IACnB,MAAM,EAAE,IAAI,GAAG;;AAEnB,AAAA,SAAS,AAAA,OAAO,EAAE,SAAS,AAAA,MAAM,CAAC;EAChC,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK,GAAG;;AAEnB,AAAA,SAAS,AAAA,MAAM,CAAC;EACd,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI,GAAG;;AAEvB,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,gBAAgB,GAAG;;AAE5B,AAAA,UAAU,CAAC;EACT,KAAK,EAAE,eAAe,GAAG;;AAE3B,AAAA,KAAK,CAAC;EACJ,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,KAAK,CAAC;EACJ,OAAO,EAAE,gBAAgB,GAAG;;AAE9B,AAAA,UAAU,CAAC;EACT,UAAU,EAAE,MAAM,GAAG;;AAEvB,AAAA,UAAU,CAAC;EACT,IAAI,EAAE,KAAK;EACX,KAAK,EAAE,WAAW;EAClB,WAAW,EAAE,IAAI;EACjB,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,CAAC,GAAG;;AAEd,AAAA,OAAO,CAAC;EACN,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,MAAM,CAAC;EACL,QAAQ,EAAE,KAAK,GAAG;;AAEpB,aAAa;EACX,KAAK,EAAE,YAAY;;AAErB,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,WAAW,CAAC;EACV,OAAO,EAAE,eAAe,GAAG;;AAE7B,AAAA,iBAAiB;AACjB,kBAAkB;AAClB,wBAAwB;AACxB,iBAAiB;AACjB,kBAAkB;AAClB,wBAAwB;AACxB,iBAAiB;AACjB,kBAAkB;AAClB,wBAAwB;AACxB,iBAAiB;AACjB,kBAAkB;AAClB,wBAAwB,CAAC;EACvB,OAAO,EAAE,eAAe,GAAG;;AAE7B,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,WAAW,CAAC;IACV,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,KAAK,AAAA,WAAW,CAAC;IACf,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,oBAAoB,GAAG;EAClC,AAAA,EAAE,AAAA,WAAW;EACb,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,qBAAqB,GAAG;;AAErC,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,iBAAiB,CAAC;IAChB,OAAO,EAAE,gBAAgB,GAAG;;AAEhC,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,kBAAkB,CAAC;IACjB,OAAO,EAAE,iBAAiB,GAAG;;AAEjC,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,wBAAwB,CAAC;IACvB,OAAO,EAAE,uBAAuB,GAAG;;AAEvC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;EAC7C,AAAA,WAAW,CAAC;IACV,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,KAAK,AAAA,WAAW,CAAC;IACf,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,oBAAoB,GAAG;EAClC,AAAA,EAAE,AAAA,WAAW;EACb,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,qBAAqB,GAAG;;AAErC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;EAC7C,AAAA,iBAAiB,CAAC;IAChB,OAAO,EAAE,gBAAgB,GAAG;;AAEhC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;EAC7C,AAAA,kBAAkB,CAAC;IACjB,OAAO,EAAE,iBAAiB,GAAG;;AAEjC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;EAC7C,AAAA,wBAAwB,CAAC;IACvB,OAAO,EAAE,uBAAuB,GAAG;;AAEvC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;EAC9C,AAAA,WAAW,CAAC;IACV,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,KAAK,AAAA,WAAW,CAAC;IACf,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,oBAAoB,GAAG;EAClC,AAAA,EAAE,AAAA,WAAW;EACb,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,qBAAqB,GAAG;;AAErC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;EAC9C,AAAA,iBAAiB,CAAC;IAChB,OAAO,EAAE,gBAAgB,GAAG;;AAEhC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;EAC9C,AAAA,kBAAkB,CAAC;IACjB,OAAO,EAAE,iBAAiB,GAAG;;AAEjC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;EAC9C,AAAA,wBAAwB,CAAC;IACvB,OAAO,EAAE,uBAAuB,GAAG;;AAEvC,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,WAAW,CAAC;IACV,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,KAAK,AAAA,WAAW,CAAC;IACf,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,oBAAoB,GAAG;EAClC,AAAA,EAAE,AAAA,WAAW;EACb,EAAE,AAAA,WAAW,CAAC;IACZ,OAAO,EAAE,qBAAqB,GAAG;;AAErC,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,iBAAiB,CAAC;IAChB,OAAO,EAAE,gBAAgB,GAAG;;AAEhC,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,kBAAkB,CAAC;IACjB,OAAO,EAAE,iBAAiB,GAAG;;AAEjC,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,wBAAwB,CAAC;IACvB,OAAO,EAAE,uBAAuB,GAAG;;AAEvC,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,UAAU,CAAC;IACT,OAAO,EAAE,eAAe,GAAG;;AAE/B,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;EAC7C,AAAA,UAAU,CAAC;IACT,OAAO,EAAE,eAAe,GAAG;;AAE/B,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;EAC9C,AAAA,UAAU,CAAC;IACT,OAAO,EAAE,eAAe,GAAG;;AAE/B,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAAA,UAAU,CAAC;IACT,OAAO,EAAE,eAAe,GAAG;;AAE/B,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,eAAe,GAAG;;AAE7B,MAAM,CAAC,KAAK;EACV,AAAA,cAAc,CAAC;IACb,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,KAAK,AAAA,cAAc,CAAC;IAClB,OAAO,EAAE,gBAAgB,GAAG;EAC9B,AAAA,EAAE,AAAA,cAAc,CAAC;IACf,OAAO,EAAE,oBAAoB,GAAG;EAClC,AAAA,EAAE,AAAA,cAAc;EAChB,EAAE,AAAA,cAAc,CAAC;IACf,OAAO,EAAE,qBAAqB,GAAG;;AAErC,AAAA,oBAAoB,CAAC;EACnB,OAAO,EAAE,eAAe,GAAG;;AAC3B,MAAM,CAAC,KAAK;EACV,AAAA,oBAAoB,CAAC;IACnB,OAAO,EAAE,gBAAgB,GAAG;;AAElC,AAAA,qBAAqB,CAAC;EACpB,OAAO,EAAE,eAAe,GAAG;;AAC3B,MAAM,CAAC,KAAK;EACV,AAAA,qBAAqB,CAAC;IACpB,OAAO,EAAE,iBAAiB,GAAG;;AAEnC,AAAA,2BAA2B,CAAC;EAC1B,OAAO,EAAE,eAAe,GAAG;;AAC3B,MAAM,CAAC,KAAK;EACV,AAAA,2BAA2B,CAAC;IAC1B,OAAO,EAAE,uBAAuB,GAAG;;AAEzC,MAAM,CAAC,KAAK;EACV,AAAA,aAAa,CAAC;IACZ,OAAO,EAAE,eAAe,GAAG","sourcesContent":[]}
\ No newline at end of file
diff --git a/app/css/homepage-wide.css b/app/css/homepage-wide.css
new file mode 100755
index 0000000..9c167b7
--- /dev/null
+++ b/app/css/homepage-wide.css
@@ -0,0 +1,138 @@
+/********************* VARIABLES & MIXINS */
+/* BREAKPOINTS */
+/* COLORS */
+/* LAYOUT VALUES */
+/* FONTS */
+/* MIXINS */
+@import url(https://fonts.googleapis.com/css?family=Roboto:300);
+.layout-container {
+  overflow: visible; }
+
+.main-section-container {
+  position: relative;
+  background: #fff;
+  overflow: hidden;
+  padding-bottom: 20px;
+  margin-top: -20px;
+  z-index: 5;
+  -webkit-box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.4);
+  box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.4); }
+
+@media screen and (max-width: 1200px) {
+  .main-section-container {
+    margin: 0;
+    padding-top: 20px; } }
+
+.main-section {
+  position: relative;
+  background: #fff;
+  overflow: hidden;
+  padding: 0 15px;
+  z-index: 2; }
+
+.main-section-header {
+  padding: 0 0 10px;
+  margin-bottom: 10px; }
+
+@media screen and (max-width: 1200px) {
+  .main-section-header {
+    margin: 10px 0 0; } }
+
+.main-section-header h2 {
+  color: #333;
+  font-family: Roboto,sans-serif;
+  font-size: 30px;
+  font-weight: 400;
+  margin-top: 30px; }
+
+@media screen and (max-width: 500px) {
+  .main-section-header h2 {
+    margin: 0;
+    font-size: 20px; } }
+
+.main-section-content h2 {
+  padding-bottom: 5px; }
+
+.sidebar {
+  background: #f0f0f0;
+  border: 1px solid #e4e1d8;
+  border-right: 0;
+  padding: 12px 20px; }
+
+.sidebar img {
+  margin-right: 15px;
+  margin-top: 5px;
+  max-width: 125px;
+  max-height: 125px;
+  float: right;
+  padding: 0 0 1em 1em;
+  width: auto; }
+
+.sidebar .side {
+  font-size: 18px;
+  font-weight: 400; }
+
+.sidebar h2 {
+  font-size: 18px; }
+
+.sidebar h2 a {
+  color: #0b638b;
+  text-decoration: none;
+  font: normal normal normal 16px/1.2 Helvetica,Arial,sans-serif; }
+
+.sidebar article {
+  border-top: 1px solid #0a7aad;
+  overflow: auto;
+  padding: 20px 0 0;
+  margin: 5px 0 10px; }
+
+.side-header h2 {
+  margin-bottom: 25px;
+  clear: both; }
+
+.flexslider {
+  margin: 0 -40px;
+  width: 1280px;
+  overflow: hidden;
+  height: 400px;
+  z-index: 1; }
+
+@media screen and (max-width: 500px) {
+  .flexslider {
+    margin: 0 0 25px;
+    overflow: visible; }
+  .flexslider .flex-caption {
+    font-size: 14px; } }
+
+@media screen and (max-width: 1200px) {
+  .flexslider {
+    margin: 0;
+    width: 100%;
+    overflow: hidden;
+    height: auto; } }
+
+.flexslider .flex-controls {
+  position: relative;
+  top: -400px; }
+
+@media screen and (max-width: 500px) {
+  .flexslider .flex-controls {
+    height: 0 !important;
+    position: relative;
+    top: 130px; } }
+
+@media screen and (max-width: 1200px) {
+  .flexslider .flex-controls {
+    position: relative;
+    top: 0; } }
+
+.flex-caption {
+  bottom: 30px; }
+
+@media screen and (max-width: 1200px) {
+  .flex-caption {
+    bottom: 0; } }
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZXBhZ2Utd2lkZS5jc3MiLCJzb3VyY2VzIjpbImhvbWVwYWdlLXdpZGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0QztBQUM1QyxpQkFBaUI7QUFDakIsWUFBWTtBQUNaLG1CQUFtQjtBQUNuQixXQUFXO0FBQ1gsWUFBWTtBQUNaLE9BQU8sQ0FBQyx1REFBSTtBQUNaLEFBQUEsaUJBQWlCLENBQUM7RUFDaEIsUUFBUSxFQUFFLE9BQU8sR0FBRzs7QUFFdEIsQUFBQSx1QkFBdUIsQ0FBQztFQUN0QixRQUFRLEVBQUUsUUFBUTtFQUNsQixVQUFVLEVBQUUsSUFBSTtFQUNoQixRQUFRLEVBQUUsTUFBTTtFQUNoQixjQUFjLEVBQUUsSUFBSTtFQUNwQixVQUFVLEVBQUUsS0FBSztFQUNqQixPQUFPLEVBQUUsQ0FBQztFQUNWLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7RUFDaEQsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsR0FBRzs7QUFDM0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsTUFBTTtFQUNsQyxBQUFBLHVCQUF1QixDQUFDO0lBQ3RCLE1BQU0sRUFBRSxDQUFDO0lBQ1QsV0FBVyxFQUFFLElBQUksR0FBRzs7QUFFMUIsQUFBQSxhQUFhLENBQUM7RUFDWixRQUFRLEVBQUUsUUFBUTtFQUNsQixVQUFVLEVBQUUsSUFBSTtFQUNoQixRQUFRLEVBQUUsTUFBTTtFQUNoQixPQUFPLEVBQUUsTUFBTTtFQUNmLE9BQU8sRUFBRSxDQUFDLEdBQUc7O0FBRWYsQUFBQSxvQkFBb0IsQ0FBQztFQUNuQixPQUFPLEVBQUUsUUFBUTtFQUNqQixhQUFhLEVBQUUsSUFBSSxHQUFHOztBQUN0QixNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxNQUFNO0VBQ2xDLEFBQUEsb0JBQW9CLENBQUM7SUFDbkIsTUFB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 */
+
+/*# sourceMappingURL=homepage-wide.css.map */
diff --git a/app/css/homepage-wide.css.map b/app/css/homepage-wide.css.map
new file mode 100644
index 0000000..989f7e0
--- /dev/null
+++ b/app/css/homepage-wide.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"homepage-wide.css","sources":["homepage-wide.css"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,iBAAiB;AACjB,YAAY;AACZ,mBAAmB;AACnB,WAAW;AACX,YAAY;AACZ,OAAO,CAAC,uDAAI;AACZ,AAAA,iBAAiB,CAAC;EAChB,QAAQ,EAAE,OAAO,GAAG;;AAEtB,AAAA,uBAAuB,CAAC;EACtB,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,MAAM;EAChB,cAAc,EAAE,IAAI;EACpB,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,CAAC;EACV,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB;EAChD,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,GAAG;;AAC3C,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,MAAM;EAClC,AAAA,uBAAuB,CAAC;IACtB,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI,GAAG;;AAE1B,AAAA,aAAa,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,MAAM;EACf,OAAO,EAAE,CAAC,GAAG;;AAEf,AAAA,oBAAoB,CAAC;EACnB,OAAO,EAAE,QAAQ;EACjB,aAAa,EAAE,IAAI,GAAG;;AACtB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,MAAM;EAClC,AAAA,oBAAoB,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG;;AACvB,AAAA,oBAAoB,CAAC,EAAE,CAAC;EACtB,KAAK,EAAE,IAAI;EACX,WAAW,EAAE,iBAAiB;EAC9B,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,IAAI,GAAG;;AACnB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EACjC,AAAA,oBAAoB,CAAC,EAAE,CAAC;IACtB,MAAM,EAAE,CAAC;IACT,SAAS,EAAE,IAAI,GAAG;;AAE1B,AAAA,qBAAqB,CAAC,EAAE,CAAC;EACvB,cAAc,EAAE,GAAG,GAAG;;AAExB,AAAA,QAAQ,CAAC;EACP,UAAU,EAAE,OAAO;EACnB,MAAM,EAAE,iBAAiB;EACzB,YAAY,EAAE,CAAC;EACf,OAAO,EAAE,SAAS,GAAG;;AACrB,AAAA,QAAQ,CAAC,GAAG,CAAC;EACX,YAAY,EAAE,IAAI;EAClB,UAAU,EAAE,GAAG;EACf,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,KAAK;EACjB,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,WAAW;EACpB,KAAK,EAAE,IAAI,GAAG;;AAChB,AAAA,QAAQ,CAAC,KAAK,CAAC;EACb,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG,GAAG;;AACrB,AAAA,QAAQ,CAAC,EAAE,CAAC;EACV,SAAS,EAAE,IAAI,GAAG;;AAClB,AAAA,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;EACZ,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;EACrB,IAAI,EAAE,wDAAwD,GAAG;;AACrE,AAAA,QAAQ,CAAC,OAAO,CAAC;EACf,UAAU,EAAE,iBAAiB;EAC7B,QAAQ,EAAE,IAAI;EACd,OAAO,EAAE,QAAQ;EACjB,MAAM,EAAE,UAAU,GAAG;;AAEzB,AAAA,YAAY,CAAC,EAAE,CAAC;EACd,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI,GAAG;;AAEhB,AAAA,WAAW,CAAC;EACV,MAAM,EAAE,OAAO;EACf,KAAK,EAAE,MAAM;EACb,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,CAAC,GAAG;;AACb,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EACjC,AAAA,WAAW,CAAC;IACV,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,OAAO,GAAG;EACpB,AAAA,WAAW,CAAC,aAAa,CAAC;IACxB,SAAS,EAAE,IAAI,GAAG;;AACxB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,MAAM;EAClC,AAAA,WAAW,CAAC;IACV,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,IAAI,GAAG;;AACnB,AAAA,WAAW,CAAC,cAAc,CAAC;EACzB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,MAAM,GAAG;;AACd,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EACjC,AAAA,WAAW,CAAC,cAAc,CAAC;IACzB,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,KAAK,GAAG;;AACjB,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,MAAM;EAClC,AAAA,WAAW,CAAC,cAAc,CAAC;IACzB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC,GAAG;;AAEjB,AAAA,aAAa,CAAC;EACZ,MAAM,EAAE,IAAI,GAAG;;AACf,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,MAAM;EAClC,AAAA,aAAa,CAAC;IACZ,MAAM,EAAE,CAAC,GAAG","sourcesContent":[]}
\ No newline at end of file
diff --git a/app/css/homepage.css b/app/css/homepage.css
new file mode 100755
index 0000000..55ea960
--- /dev/null
+++ b/app/css/homepage.css
@@ -0,0 +1,97 @@
+h2, h3 {
+  color: #484949; }
+
+.main-section-module h2 {
+  font-weight: normal;
+  border-bottom: 1px solid #0b638b;
+  margin-bottom: 12px;
+  padding-bottom: 5px; }
+
+.main-section-module > .content-module {
+  margin-bottom: 1em; }
+
+@media screen and (max-width: 500px) {
+  .main-section-module {
+    width: 100%;
+    padding: 0; } }
+
+/*Give Button*/
+#give-button {
+  margin: 10px 0;
+  width: 115px; }
+
+a.give-button {
+  -moz-transition: background 0.1s ease-in 0s, -moz-box-shadow 0.1s ease-in 0s;
+  background-color: #DB7B0F;
+  background-image: -moz-linear-gradient(90deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.4));
+  border-bottom: 1px solid #D9740B;
+  border-radius: 3px 3px 3px 3px;
+  border-top: 1px solid #FFDCB4;
+  box-shadow: 0 1px 1px rgba(255, 255, 255, 0.5), 0 -1px 2px rgba(0, 0, 0, 0.5);
+  display: block;
+  height: 30px;
+  position: relative;
+  text-align: center;
+  text-decoration: none;
+  width: 115px;
+  z-index: 1000; }
+
+a.give-button:hover {
+  background-color: #C7700E;
+  border-bottom: 1px solid #C86408;
+  text-decoration: none; }
+
+a.give-button span {
+  color: #FFFFFF;
+  font-family: Georgia,Times,serif;
+  font-size: 20px;
+  font-style: italic;
+  font-weight: bold;
+  line-height: 15px;
+  position: relative;
+  text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.5), 0 1px 1px rgba(255, 255, 255, 0.5);
+  top: 5px; }
+
+/* flexslider homepage specific styles */
+.flexslider {
+  margin-bottom: 0; }
+
+.slides li {
+  margin-top: 0; }
+
+.slides img {
+  width: 100% !important;
+  max-height: 305px !important; }
+
+.controls {
+  margin: -7px;
+  position: relative; }
+
+.spot-caption {
+  background: none;
+  -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4);
+  zoom: 1; }
+
+.spot-caption {
+  padding: 2%;
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  background: rgba(11, 99, 139, 0.8);
+  color: #fff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3);
+  font-size: 14px;
+  line-height: 18px; }
+
+.alt p {
+  margin-bottom: 0; }
+
+/* module styling */
+.news-item img {
+  width: 100%;
+  margin-bottom: 1em; }
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZXBhZ2UuY3NzIiwic291cmNlcyI6WyJob21lcGFnZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsQUFBQSxFQUFFLEVBQUUsRUFBRSxDQUFDO0VBQ0wsS0FBSyxFQUFFLE9BQU8sR0FBRzs7QUFFbkIsQUFBQSxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7RUFDdEIsV0FBVyxFQUFFLE1BQU07RUFDbkIsYUFBYSxFQUFFLGlCQUFpQjtFQUNoQyxhQUFhLEVBQUUsSUFBSTtFQUNuQixjQUFjLEVBQUUsR0FBRyxHQUFHOztBQUV4QixBQUFBLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztFQUNyQyxhQUFhLEVBQUUsR0FBRyxHQUFHOztBQUV2QixNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxLQUFLO0VBQ2pDLEFBQUEsb0JBQW9CLENBQUM7SUFDbkIsS0FBSyxFQUFFLElBQUk7SUFDWCxPQUFPLEVBQUUsQ0FBQyxHQUFHOztBQUVqQixlQUFlO0FBQ2YsQUFBQSxZQUFZLENBQUM7RUFDWCxNQUFNLEVBQUUsTUFBTTtFQUNkLEtBQUssRUFBRSxLQUFLLEdBQUc7O0FBRWpCLEFBQUEsQ0FBQyxBQUFBLFlBQVksQ0FBQztFQUNaLGVBQWUsRUFBRSwyREFBMkQ7RUFDNUUsZ0JBQWdCLEVBQUUsT0FBTztFQUN6QixnQkFBZ0IsRUFBRSxpRkFBaUY7RUFDbkcsYUFBYSxFQUFFLGlCQUFpQjtFQUNoQyxhQUFhLEVBQUUsZUFBZTtFQUM5QixVQUFVLEVBQUUsaUJBQWlCO0VBQzdCLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUUsSUFBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7RUFDN0UsT0FBTyxFQUFFLEtBQUs7RUFDZCxNQUFNLEVBQUUsSUFBSTtFQUNaLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLGVBQWUsRUFBRSxJQUFJO0VBQ3JCLEtBQUssRUFBRSxLQUFLO0VBQ1osT0FBTyxFQUFFLElBQUksR0FBRzs7QUFFbEIsQUFBQSxDQUFDLEFBQUEsWUFBWSxBQUFBLE1BQU0sQ0FBQztFQUNsQixnQkFBZ0IsRUFBRSxPQUFPO0VBQ3pCLGFBQWEsRUFBRSxpQkFBaUI7RUFDaEMsZUFBZSxFQUFFLElBQUksR0FBRzs7QUFFMUIsQUFBQSxDQUFDLEFBQUEsWUFBWSxDQUFDLElBQUksQ0FBQztFQUNqQixLQUFLLEVBQUUsT0FBTztFQUNkLFdBQVcsRUFBRSxtQkFBbUI7RUFDaEMsU0FBUyxFQUFFLElBQUk7RUFDZixVQUFVLEVBQUUsTUFBTTtFQUNsQixXQUFXLEVBQUUsSUFBSTtFQUNqQixXQUFXLEVBQUUsSUFBSTtFQUNqQixRQUFRLEVBQUUsUUFBUTtFQUNsQixXQUFXLEVBQUUsQ0FBQyxDQUFFLElBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsd0JBQXdCO0VBQzlFLEdBQUcsRUFBRSxHQUFHLEdBQUc7O0FBRWIseUNBQXlDO0FBQ3pDLEFBQUEsV0FBVyxDQUFDO0VBQ1YsYUFBYSxFQUFFLENBQUMsR0FBRzs7QUFFckIsQUFBQSxPQUFPLENBQUMsRUFBRSxDQUFDO0VBQ1QsVUFBVSxFQUFFLENBQUMsR0FBRzs7QUFFbEIsQUFBQSxPQUFPLENBQUMsR0FBRyxDQUFDO0VBQ1YsS0FBSyxFQUFFLGVBQWU7RUFDdEIsVUFBVSxFQUFFLGdCQUFnQixHQUFHOztBQUVqQyxBQUFBLFNBQVMsQ0FBQztFQUNSLE1BQU0sRUFBRSxJQUFJO0VBQ1osUUFBUSxFQUFFLFFBQVEsR0FBRzs7QUFFdkIsQUFBQSxhQUFhLENBQUM7RUFDWixVQUFVLEVBQUUsSUFBSTtFQUNoQixVQUFVLEVBQUUseUZBQXlGO0VBQ3JHLE1BQU0sRUFBRSx5RkFBeUY7RUFDakcsSUFBSSxFQUFFLENBQUMsR0FBRzs7QUFFWixBQUFBLGFBQWEsQ0FBQztFQUNaLE9BQU8sRUFBRSxFQUFFO0VBQ1gsUUFBUSxFQUFFLFFBQVE7RUFDbEIsSUFBSSxFQUFFLENBQUM7RUFDUCxNQUFNLEVBQUUsQ0FBQztFQUNULFVBQVUsRUFBRSxzQkFBc0I7RUFDbEMsS0FBSyxFQUFFLElBQUk7RUFDWCxXQUFXLEVBQUUsQ0FBQyxDQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO0VBQ3hDLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUksR0FBRzs7QUFFdEIsQUFBQSxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQ0wsYUFBYSxFQUFFLENBQUMsR0FBRzs7QUFFckIsb0JBQW9CO0FBQ3BCLEFBQUEsVUFBVSxDQUFDLEdBQUcsQ0FBQztFQUNiLEtBQUssRUFBRSxJQUFJO0VBQ1gsYUFBYSxFQUFFLEdBQUcsR0FBRyJ9 */
+
+/*# sourceMappingURL=homepage.css.map */
diff --git a/app/css/homepage.css.map b/app/css/homepage.css.map
new file mode 100644
index 0000000..dbe1225
--- /dev/null
+++ b/app/css/homepage.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"homepage.css","sources":["homepage.css"],"names":[],"mappings":"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","sourcesContent":[]}
\ No newline at end of file
diff --git a/app/css/ie-support.css b/app/css/ie-support.css
new file mode 100755
index 0000000..5041d2b
--- /dev/null
+++ b/app/css/ie-support.css
@@ -0,0 +1,102 @@
+/* start of decorator 4.5 support for  IE7 and IE8 specifics */
+/* '*+' ie7 specific selector */
+* + section.layout-title {
+  box-sizing: border-box;
+  padding: 1em 0;
+  height: 50px; }
+
+.layout-header {
+  height: 78px; }
+
+.layout-login {
+  display: none; }
+
+/* ie will not have mobile nav */
+.navdrawer-container {
+  display: block !important;
+  width: 100% !important;
+  min-height: 40px !important;
+  position: relative !important; }
+
+/* Doesn't have padding for ie since no mobile nav */
+.navdrawer-container .navbar-sublist a {
+  padding: 9px 15px 8px !important; }
+
+.layout-header button.btn-nav {
+  display: none !important; }
+
+/* ie8 fix to reveal search caret */
+button.caret {
+  border-top-style: solid; }
+
+.navdrawer-container .search {
+  float: right !important; }
+
+/* search max-height fix */
+button.search-toggle {
+  display: block !important;
+  height: 40px;
+  *width: 50px !important;
+  *padding: 0 !important;
+  *background: url(http://ucsd.edu/common/cwp/4.0.0/styles/../img/search_ie_icon.png) no-repeat 0 6px !important; }
+
+ol.breadcrumbs-list {
+  margin: 10px 0 0; }
+
+ol.breadcrumbs-list li {
+  *margin-right: 7px; }
+
+/* to deal with added padding
+   width hard coding to get around media query styling */
+.main-content-container {
+  padding: 0;
+  width: 75%; }
+
+.main-content-container .main-section.col-sm-9 {
+  width: 75%; }
+
+.main-content-container .main-section.col-sm-3 {
+  width: 25%; }
+
+.main-section {
+  *padding: 0;
+  /* homepage */
+  /* sidebar resize | whitespacing */
+  /* homepage-wide col */ }
+
+.main-section.pull-left {
+  width: 25%; }
+
+.main-section .main-section-content {
+  *padding: 0 1em; }
+
+.main-section .main-section-module {
+  padding: 0; }
+
+.main-section .main-section-module.col-xs-6 {
+  width: 48%; }
+
+.main-section .main-section-header {
+  padding: 0 15px 10px; }
+
+.main-section.col-xs-3 {
+  width: 23%; }
+
+.main-section.col-sm-7 {
+  width: 51%; }
+
+.main-section.col-sm-5.sidebar {
+  width: 45%;
+  padding: 12px 20px; }
+
+/* profile template fix */
+.profile-section {
+  padding-left: .5em; }
+
+/* flexslider */
+.flex-caption {
+  padding: 0; }
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWUtc3VwcG9ydC5jc3MiLCJzb3VyY2VzIjpbImllLXN1cHBvcnQuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtEQUErRDtBQUMvRCxnQ0FBZ0M7QUFDaEMsQUFBQSxDQUFDLEdBQUcsT0FBTyxBQUFBLGFBQWEsQ0FBQztFQUN2QixVQUFVLEVBQUUsVUFBVTtFQUN0QixPQUFPLEVBQUUsS0FBSztFQUNkLE1BQU0sRUFBRSxJQUFJLEdBQUc7O0FBRWpCLEFBQUEsY0FBYyxDQUFDO0VBQ2IsTUFBTSxFQUFFLElBQUksR0FBRzs7QUFFakIsQUFBQSxhQUFhLENBQUM7RUFDWixPQUFPLEVBQUUsSUFBSSxHQUFHOztBQUVsQixpQ0FBaUM7QUFDakMsQUFBQSxvQkFBb0IsQ0FBQztFQUNuQixPQUFPLEVBQUUsZ0JBQWdCO0VBQ3pCLEtBQUssRUFBRSxlQUFlO0VBQ3RCLFVBQVUsRUFBRSxlQUFlO0VBQzNCLFFBQVEsRUFBRSxtQkFBbUIsR0FBRzs7QUFFbEMscURBQXFEO0FBQ3JELEFBQUEsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztFQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEdBQUc7O0FBRXJDLEFBQUEsY0FBYyxDQUFDLE1BQU0sQUFBQSxRQUFRLENBQUM7RUFDNUIsT0FBTyxFQUFFLGVBQWUsR0FBRzs7QUFFN0Isb0NBQW9DO0FBQ3BDLEFBQUEsTUFBTSxBQUFBLE1BQU0sQ0FBQztFQUNYLGdCQUFnQixFQUFFLEtBQUssR0FBRzs7QUFFNUIsQUFBQSxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7RUFDM0IsS0FBSyxFQUFFLGdCQUFnQixHQUFHOztBQUU1QiwyQkFBMkI7QUFDM0IsQUFBQSxNQUFNLEFBQUEsY0FBYyxDQUFDO0VBQ25CLE9BQU8sRUFBRSxnQkFBZ0I7RUFDekIsTUFBTSxFQUFFLElBQUk7RUFDWixNQUFNLEVBQUUsZUFBZTtFQUN2QixRQUFRLEVBQUUsWUFBWTtFQUN0QixXQUFXLEVBQUUsc0VBQXNFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHOztBQUVuSCxBQUFBLEVBQUUsQUFBQSxpQkFBaUIsQ0FBQztFQUNsQixNQUFNLEVBQUUsUUFBUSxHQUFHOztBQUNuQixBQUFBLEVBQUUsQUFBQSxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7RUFDckIsYUFBYSxFQUFFLEdBQUcsR0FBRzs7QUFFekI7eURBQ3lEO0FBQ3pELEFBQUEsdUJBQXVCLENBQUM7RUFDdEIsT0FBTyxFQUFFLENBQUM7RUFDVixLQUFLLEVBQUUsR0FBRyxHQUFHOztBQUNiLEFBQUEsdUJBQXVCLENBQUMsYUFBYSxBQUFBLFNBQVMsQ0FBQztFQUM3QyxLQUFLLEVBQUUsR0FBRyxHQUFHOztBQUNmLEFBQUEsdUJBQXVCLENBQUMsYUFBYSxBQUFBLFNBQVMsQ0FBQztFQUM3QyxLQUFLLEVBQUUsR0FBRyxHQUFHOztBQUVqQixBQUFBLGFBQWEsQ0FBQztFQUNaLFFBQVEsRUFBRSxDQUFDO0VBQ1gsY0FBYztFQUNkLG1DQUFtQztFQUNuQyx1QkFBdUIsRUFBRTs7QUFDekIsQUFBQSxhQUFhLEFBQUEsVUFBVSxDQUFDO0VBQ3RCLEtBQUssRUFBRSxHQUFHLEdBQUc7O0FBQ2YsQUFBQSxhQUFhLENBQUMscUJBQXFCLENBQUM7RUFDbEMsUUFBUSxFQUFFLEtBQUssR0FBRzs7QUFDcEIsQUFBQSxhQUFhLENBQUMsb0JBQW9CLENBQUM7RUFDakMsT0FBTyxFQUFFLENBQUMsR0FBRzs7QUFDYixBQUFBLGFBQWEsQ0FBQyxvQkFBb0IsQUFBQSxTQUFTLENBQUM7RUFDMUMsS0FBSyxFQUFFLEdBQUcsR0FBRzs7QUFDakIsQUFBQSxhQUFhLENBQUMsb0JBQW9CLENBQUM7RUFDakMsT0FBTyxFQUFFLFdBQVcsR0FBRzs7QUFDekIsQUFBQSxhQUFhLEFBQUEsU0FBUyxDQUFDO0VBQ3JCLEtBQUssRUFBRSxHQUFHLEdBQUc7O0FBQ2YsQUFBQSxhQUFhLEFBQUEsU0FBUyxDQUFDO0VBQ3JCLEtBQUssRUFBRSxHQUFHLEdBQUc7O0FBQ2YsQUFBQSxhQUFhLEFBQUEsU0FBUyxBQUFBLFFBQVEsQ0FBQztFQUM3QixLQUFLLEVBQUUsR0FBRztFQUNWLE9BQU8sRUFBRSxTQUFTLEdBQUc7O0FBRXpCLDBCQUEwQjtBQUMxQixBQUFBLGdCQUFnQixDQUFDO0VBQ2YsWUFBWSxFQUFFLElBQUksR0FBRzs7QUFFdkIsZ0JBQWdCO0FBQ2hCLEFBQUEsYUFBYSxDQUFDO0VBQ1osT0FBTyxFQUFFLENBQUMsR0FBRyJ9 */
+
+/*# sourceMappingURL=ie-support.css.map */
diff --git a/app/css/ie-support.css.map b/app/css/ie-support.css.map
new file mode 100644
index 0000000..f1b2a4a
--- /dev/null
+++ b/app/css/ie-support.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"ie-support.css","sources":["ie-support.css"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,gCAAgC;AAChC,AAAA,CAAC,GAAG,OAAO,AAAA,aAAa,CAAC;EACvB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,cAAc,CAAC;EACb,MAAM,EAAE,IAAI,GAAG;;AAEjB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI,GAAG;;AAElB,iCAAiC;AACjC,AAAA,oBAAoB,CAAC;EACnB,OAAO,EAAE,gBAAgB;EACzB,KAAK,EAAE,eAAe;EACtB,UAAU,EAAE,eAAe;EAC3B,QAAQ,EAAE,mBAAmB,GAAG;;AAElC,qDAAqD;AACrD,AAAA,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC;EACrC,OAAO,EAAE,uBAAuB,GAAG;;AAErC,AAAA,cAAc,CAAC,MAAM,AAAA,QAAQ,CAAC;EAC5B,OAAO,EAAE,eAAe,GAAG;;AAE7B,oCAAoC;AACpC,AAAA,MAAM,AAAA,MAAM,CAAC;EACX,gBAAgB,EAAE,KAAK,GAAG;;AAE5B,AAAA,oBAAoB,CAAC,OAAO,CAAC;EAC3B,KAAK,EAAE,gBAAgB,GAAG;;AAE5B,2BAA2B;AAC3B,AAAA,MAAM,AAAA,cAAc,CAAC;EACnB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,eAAe;EACvB,QAAQ,EAAE,YAAY;EACtB,WAAW,EAAE,sEAAsE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG;;AAEnH,AAAA,EAAE,AAAA,iBAAiB,CAAC;EAClB,MAAM,EAAE,QAAQ,GAAG;;AACnB,AAAA,EAAE,AAAA,iBAAiB,CAAC,EAAE,CAAC;EACrB,aAAa,EAAE,GAAG,GAAG;;AAEzB;yDACyD;AACzD,AAAA,uBAAuB,CAAC;EACtB,OAAO,EAAE,CAAC;EACV,KAAK,EAAE,GAAG,GAAG;;AACb,AAAA,uBAAuB,CAAC,aAAa,AAAA,SAAS,CAAC;EAC7C,KAAK,EAAE,GAAG,GAAG;;AACf,AAAA,uBAAuB,CAAC,aAAa,AAAA,SAAS,CAAC;EAC7C,KAAK,EAAE,GAAG,GAAG;;AAEjB,AAAA,aAAa,CAAC;EACZ,QAAQ,EAAE,CAAC;EACX,cAAc;EACd,mCAAmC;EACnC,uBAAuB,EAAE;;AACzB,AAAA,aAAa,AAAA,UAAU,CAAC;EACtB,KAAK,EAAE,GAAG,GAAG;;AACf,AAAA,aAAa,CAAC,qBAAqB,CAAC;EAClC,QAAQ,EAAE,KAAK,GAAG;;AACpB,AAAA,aAAa,CAAC,oBAAoB,CAAC;EACjC,OAAO,EAAE,CAAC,GAAG;;AACb,AAAA,aAAa,CAAC,oBAAoB,AAAA,SAAS,CAAC;EAC1C,KAAK,EAAE,GAAG,GAAG;;AACjB,AAAA,aAAa,CAAC,oBAAoB,CAAC;EACjC,OAAO,EAAE,WAAW,GAAG;;AACzB,AAAA,aAAa,AAAA,SAAS,CAAC;EACrB,KAAK,EAAE,GAAG,GAAG;;AACf,AAAA,aAAa,AAAA,SAAS,CAAC;EACrB,KAAK,EAAE,GAAG,GAAG;;AACf,AAAA,aAAa,AAAA,SAAS,AAAA,QAAQ,CAAC;EAC7B,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,SAAS,GAAG;;AAEzB,0BAA0B;AAC1B,AAAA,gBAAgB,CAAC;EACf,YAAY,EAAE,IAAI,GAAG;;AAEvB,gBAAgB;AAChB,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,CAAC,GAAG","sourcesContent":[]}
\ No newline at end of file
diff --git a/app/css/partials/components.css b/app/css/partials/components.css
new file mode 100644
index 0000000..746a748
--- /dev/null
+++ b/app/css/partials/components.css
@@ -0,0 +1,44 @@
+/* CUSTOMIZE THE CAROUSEL
+-------------------------------------------------- */
+/* Carousel base class */
+.carousel {
+  margin-bottom: 60px; }
+
+.carousel .container {
+  padding: 7% 0;
+  position: absolute;
+  top: 0;
+  left: 10%; }
+
+/* Since positioning the image, we need to help out the caption */
+.carousel-caption {
+  z-index: 10; }
+
+/* Declare heights because of positioning of img element */
+.carousel .item {
+  background-color: #777; }
+
+.carousel-inner > .item > img {
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: auto; }
+
+/* RESPONSIVE CSS
+-------------------------------------------------- */
+@media (min-width: 768px) {
+  /* Bump up size of carousel content */
+  .carousel-caption p {
+    margin-bottom: 20px;
+    font-size: 21px;
+    line-height: 1.4; }
+  .featurette-heading {
+    font-size: 50px; } }
+
+@media (min-width: 992px) {
+  .featurette-heading {
+    margin-top: 120px; } }
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbHMvY29tcG9uZW50cy5jc3MiLCJzb3VyY2VzIjpbImNvbXBvbmVudHMuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO3FEQUNxRDtBQUNyRCx5QkFBeUI7QUFDekIsQUFBQSxTQUFTLENBQUM7RUFDUixhQUFhLEVBQUUsSUFBSSxHQUFJOztBQUN2QixBQUFVLFNBQUQsQ0FBQyxVQUFVLENBQUM7RUFDbkIsT0FBTyxFQUFFLElBQUk7RUFDYixRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsQ0FBQztFQUNOLElBQUksRUFBRSxHQUFHLEdBQUk7O0FBRWpCLGtFQUFrRTtBQUNsRSxBQUFBLGlCQUFpQixDQUFDO0VBQ2hCLE9BQU8sRUFBRSxFQUFFLEdBQUk7O0FBRWpCLDJEQUEyRDtBQUMzRCxBQUFVLFNBQUQsQ0FBQyxLQUFLLENBQUM7RUFDZCxnQkFBZ0IsRUFBRSxJQUFJLEdBQUk7O0FBRTVCLEFBQTBCLGVBQVgsR0FBRyxLQUFLLEdBQUcsR0FBRyxDQUFDO0VBQzVCLEdBQUcsRUFBRSxDQUFDO0VBQ04sSUFBSSxFQUFFLENBQUM7RUFDUCxLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJLEdBQUk7O0FBRWxCO3FEQUNxRDtBQUNyRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUs7RUFDdEIsc0NBQXNDO0VBQ3RDLEFBQWtCLGlCQUFELENBQUMsQ0FBQyxDQUFDO0lBQ2xCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLFNBQVMsRUFBRSxJQUFJO0lBQ2YsV0FBVyxFQUFFLEdBQUcsR0FBSTtFQUN0QixBQUFBLG1CQUFtQixDQUFDO0lBQ2xCLFNBQVMsRUFBRSxJQUFJLEdBQUk7O0FBRXZCLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSztFQUN0QixBQUFBLG1CQUFtQixDQUFDO0lBQ2xCLFVBQVUsRUFBRSxLQUFLLEdBQUkifQ== */
+
+/*# sourceMappingURL=components.css.map */
diff --git a/app/css/partials/components.css.map b/app/css/partials/components.css.map
new file mode 100644
index 0000000..5a36f21
--- /dev/null
+++ b/app/css/partials/components.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"components.css","sources":["components.css"],"names":[],"mappings":"AAAA;qDACqD;AACrD,yBAAyB;AACzB,AAAA,SAAS,CAAC;EACR,aAAa,EAAE,IAAI,GAAI;;AACvB,AAAU,SAAD,CAAC,UAAU,CAAC;EACnB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,GAAG,GAAI;;AAEjB,kEAAkE;AAClE,AAAA,iBAAiB,CAAC;EAChB,OAAO,EAAE,EAAE,GAAI;;AAEjB,2DAA2D;AAC3D,AAAU,SAAD,CAAC,KAAK,CAAC;EACd,gBAAgB,EAAE,IAAI,GAAI;;AAE5B,AAA0B,eAAX,GAAG,KAAK,GAAG,GAAG,CAAC;EAC5B,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI,GAAI;;AAElB;qDACqD;AACrD,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,sCAAsC;EACtC,AAAkB,iBAAD,CAAC,CAAC,CAAC;IAClB,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG,GAAI;EACtB,AAAA,mBAAmB,CAAC;IAClB,SAAS,EAAE,IAAI,GAAI;;AAEvB,MAAM,EAAE,SAAS,EAAE,KAAK;EACtB,AAAA,mBAAmB,CAAC;IAClB,UAAU,EAAE,KAAK,GAAI","sourcesContent":[]}
\ No newline at end of file
diff --git a/app/css/profile.css b/app/css/profile.css
new file mode 100755
index 0000000..a1d36fc
--- /dev/null
+++ b/app/css/profile.css
@@ -0,0 +1,236 @@
+/********************* VARIABLES & MIXINS */
+.imageHolder {
+  display: inline-block;
+  width: 17%;
+  height: 93px;
+  float: left;
+  min-height: 93px;
+  min-width: 110px; }
+
+.profile-listing ul {
+  margin: 0;
+  padding: 0;
+  list-style: none; }
+
+.profile-listing li.profile-listing-card {
+  margin: 0 0 1em;
+  background: #eee;
+  border: 1px solid #eee;
+  width: 99.5%;
+  display: inline-block; }
+
+.profile-listing li.profile-listing-card a {
+  color: #016691;
+  text-decoration: none; }
+
+.profile-listing li.profile-listing-card img {
+  width: 13%;
+  height: auto;
+  float: left; }
+
+.profile-listing-data {
+  display: inline-block;
+  padding: 1.5%;
+  width: 80%; }
+
+.profile-listing-data h3 {
+  font-size: 160%;
+  color: #4b4b4b; }
+
+.profile-section {
+  width: 72%; }
+
+@media only screen and (max-width: 640px) {
+  .profile-section {
+    width: 100%; } }
+
+.profile-section-contact {
+  width: 25%;
+  padding-left: 2%; }
+
+@media only screen and (max-width: 640px) {
+  .profile-section-contact {
+    width: 98%; } }
+
+.profile-section-contact img {
+  width: 100%;
+  margin-bottom: 1em; }
+
+@media only screen and (max-width: 640px) {
+  .profile-section-contact img {
+    float: left;
+    width: 125px;
+    margin-right: 1em; } }
+
+.profile-section-contact ul {
+  margin: 0;
+  padding: 0;
+  list-style: none; }
+
+.profile-section-contact ul li {
+  background: url(img/social-sprite-20.png) no-repeat;
+  margin: 0 0 1em;
+  padding-left: 35px; }
+
+.profile-section-contact ul li.email {
+  background-position: 0 1px; }
+
+.profile-section-contact ul li.fax {
+  background-position: 0 -59px; }
+
+.profile-section-contact ul li.location {
+  background-position: 0 -115px; }
+
+.profile-section-contact ul li.phone {
+  background-position: 0 -253px; }
+
+.profile-section-contact ul li.facebook {
+  background-position: 0 -314px; }
+
+.profile-section-contact ul li.twitter {
+  background-position: 0 -498px; }
+
+.profile-section-contact ul li.linkedin {
+  background-position: 0 -436px; }
+
+.profile-section-contact ul li.googleplus {
+  background-position: 0 -374px; }
+
+.profile-section-contact ul li.instagram {
+  background-position: 0 -612px; }
+
+.profile-section-contact .profile-contact-list {
+  margin-left: 0;
+  padding-left: 0;
+  list-style: none; }
+
+.profile-section-contact .profile-contact-list li {
+  height: 25px; }
+
+@media only screen and (max-width: 640px) {
+  .profile-section-contact .profile-contact-list {
+    display: inline-block;
+    padding: 0;
+    width: 50%; } }
+
+ul.resp-tabs-list {
+  margin: 0;
+  padding: 0; }
+
+.resp-tabs-list li {
+  font-weight: 600;
+  font-size: 13px;
+  display: inline-block;
+  padding: 0 1.25em .5em;
+  margin: 0;
+  list-style: none;
+  cursor: pointer;
+  float: left; }
+
+.resp-tabs-container {
+  padding: 0;
+  border-top: 1px solid #016691;
+  clear: left; }
+
+h2.resp-accordion {
+  cursor: pointer;
+  display: none; }
+
+.resp-tab-content {
+  display: none;
+  padding: 1em 0; }
+
+.resp-tab-active {
+  margin-bottom: -1px;
+  padding: .2em;
+  border-bottom: 3px solid #0B4A66; }
+
+.resp-accordion-active, .resp-content-active {
+  display: block; }
+
+h2.resp-accordion {
+  font-size: 13px;
+  border: 1px solid #c1c1c1;
+  border-top: 0 solid #c1c1c1;
+  margin: 0;
+  padding: 10px 15px; }
+
+h2.resp-tab-active {
+  border-bottom: 0 solid #c1c1c1 !important;
+  margin-bottom: 0 !important;
+  padding: 0.2em; }
+
+h2.resp-tab-title:last-child {
+  border-bottom: 12px solid #c1c1c1 !important;
+  background: #00f; }
+
+@media only screen and (max-width: 900px) {
+  .resp-tabs-list li {
+    font-size: 12px;
+    padding: 0 1em 0.5em; } }
+
+.resp-easy-accordion h2.resp-accordion {
+  display: block; }
+
+.resp-easy-accordion .resp-tab-content {
+  border: 1px solid #c1c1c1; }
+
+.resp-easy-accordion .resp-tab-content:last-child {
+  border-bottom: 1px solid #c1c1c1 !important; }
+
+.resp-jfit {
+  width: 100%;
+  margin: 0; }
+
+.resp-tab-content-active {
+  display: block; }
+
+h2.resp-accordion:first-child {
+  border-top: 1px solid #c1c1c1 !important; }
+
+.resp-arrow {
+  width: 12px;
+  height: 16px;
+  float: left;
+  padding-right: 15px;
+  background: url(//www.ucsd.edu/common/cwp/active-cherry/img/sprite_icon_widget.png) 0 4px no-repeat; }
+
+h2.resp-tab-active span.resp-arrow {
+  border: 0;
+  background-position: 0 -96px; }
+
+@media only screen and (max-width: 640px) {
+  .resp-tab-content.resp-tab-content-active {
+    padding-left: 20px; }
+  ul.resp-tabs-list {
+    display: none; }
+  h2.resp-accordion {
+    font-weight: 400;
+    display: block;
+    color: #016691;
+    border: 0;
+    border-top: 1px solid #ccc;
+    padding: .2em 0;
+    font-size: 150%; }
+  h2.resp-tab-active {
+    color: #fff;
+    background-color: #0b4a67; }
+  .resp-tabs-container {
+    border-top: 0;
+    border-bottom: 1px solid #ccc; }
+  .resp-vtabs .resp-tab-content {
+    border: 1px solid #C1C1C1; }
+  .resp-vtabs .resp-tabs-container {
+    border: 0;
+    float: none;
+    width: 100%;
+    min-height: initial;
+    clear: none; }
+  .resp-accordion-closed {
+    display: none !important; }
+  .resp-vtabs .resp-tab-content:last-child {
+    border-bottom: 1px solid #c1c1c1 !important; } }
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5jc3MiLCJzb3VyY2VzIjpbInByb2ZpbGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0QztBQUM1QyxBQUFBLFlBQVksQ0FBQztFQUNYLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLEtBQUssRUFBRSxHQUFHO0VBQ1YsTUFBTSxFQUFFLElBQUk7RUFDWixLQUFLLEVBQUUsSUFBSTtFQUNYLFVBQVUsRUFBRSxJQUFJO0VBQ2hCLFNBQVMsRUFBRSxLQUFLLEdBQUc7O0FBRXJCLEFBQUEsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0VBQ2xCLE1BQU0sRUFBRSxDQUFDO0VBQ1QsT0FBTyxFQUFFLENBQUM7RUFDVixVQUFVLEVBQUUsSUFBSSxHQUFHOztBQUVyQixBQUFBLGdCQUFnQixDQUFDLEVBQUUsQUFBQSxxQkFBcUIsQ0FBQztFQUN2QyxNQUFNLEVBQUUsT0FBTztFQUNmLFVBQVUsRUFBRSxJQUFJO0VBQ2hCLE1BQU0sRUFBRSxjQUFjO0VBQ3RCLEtBQUssRUFBRSxLQUFLO0VBQ1osT0FBTyxFQUFFLFlBQVksR0FBRzs7QUFFMUIsQUFBQSxnQkFBZ0IsQ0FBQyxFQUFFLEFBQUEscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0VBQ3pDLEtBQUssRUFBRSxPQUFPO0VBQ2QsZUFBZSxFQUFFLElBQUksR0FBRzs7QUFFMUIsQUFBQSxnQkFBZ0IsQ0FBQyxFQUFFLEFBQUEscUJBQXFCLENBQUMsR0FBRyxDQUFDO0VBQzNDLEtBQUssRUFBRSxHQUFHO0VBQ1YsTUFBTSxFQUFFLElBQUk7RUFDWixLQUFLLEVBQUUsSUFBSSxHQUFHOztBQUVoQixBQUFBLHFCQUFxQixDQUFDO0VBQ3BCLE9BQU8sRUFBRSxZQUFZO0VBQ3JCLE9BQU8sRUFBRSxJQUFJO0VBQ2IsS0FBSyxFQUFFLEdBQUcsR0FBRzs7QUFFZixBQUFBLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztFQUN2QixTQUFTLEVBQUUsSUFBSTtFQUNmLEtBQUssRUFBRSxPQUFPLEdBQUc7O0FBRW5CLEFB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 */
+
+/*# sourceMappingURL=profile.css.map */
diff --git a/app/css/profile.css.map b/app/css/profile.css.map
new file mode 100644
index 0000000..6f5d5e0
--- /dev/null
+++ b/app/css/profile.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"profile.css","sources":["profile.css"],"names":[],"mappings":"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","sourcesContent":[]}
\ No newline at end of file
diff --git a/app/css/site-specific.css b/app/css/site-specific.css
new file mode 100644
index 0000000..190a484
--- /dev/null
+++ b/app/css/site-specific.css
@@ -0,0 +1,60 @@
+/*
+Error: Invalid CSS after "}": expected selector or at-rule, was "}"
+        on line 154 of /Users/webprodmacbook2/Sites/Decorator/app/docs/partials/_docs.scss
+        from line 3 of /Users/webprodmacbook2/Sites/Decorator/app/docs/site-specific.scss
+
+149: &:hover, &:focus {
+150:     background-color: #f9f9f9;
+151:     border-color: #f9f9f9;
+152: }
+153: }
+154: }
+155: 
+156: /*
+157:  * Footer
+158:  *
+159:  * Separated section of content at the bottom of all pages, save the homepage.
+
+Backtrace:
+/Users/webprodmacbook2/Sites/Decorator/app/docs/partials/_docs.scss:154
+/Users/webprodmacbook2/Sites/Decorator/app/docs/site-specific.scss:3
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/scss/parser.rb:1179:in `expected'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/scss/parser.rb:1115:in `expected'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/scss/parser.rb:40:in `parse'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/engine.rb:403:in `_to_tree'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/engine.rb:309:in `to_tree'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:324:in `block in visit_import'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/stack.rb:88:in `block in with_import'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/stack.rb:115:in `with_frame'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/stack.rb:88:in `with_import'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:323:in `visit_import'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/base.rb:36:in `visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:158:in `block in visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/stack.rb:79:in `block in with_base'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/stack.rb:115:in `with_frame'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/stack.rb:79:in `with_base'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:158:in `visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/base.rb:52:in `block in visit_children'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/base.rb:52:in `map'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/base.rb:52:in `visit_children'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:167:in `block in visit_children'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:179:in `with_environment'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:166:in `visit_children'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/base.rb:36:in `block in visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:186:in `visit_root'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/base.rb:36:in `visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:157:in `visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/visitors/perform.rb:8:in `visit'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/root_node.rb:36:in `css_tree'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/tree/root_node.rb:20:in `render'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/engine.rb:278:in `render'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/exec/sass_scss.rb:423:in `run'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/exec/sass_scss.rb:63:in `process_result'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/exec/base.rb:52:in `parse'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/lib/sass/exec/base.rb:19:in `parse!'
+/Applications/CodeKit.app/Contents/Resources/engines/scss/bin/scss:13:in `
' +*/ +body:before { + white-space: pre; + font-family: monospace; + content: "Error: Invalid CSS after \"}\": expected selector or at-rule, was \"}\"\A on line 154 of /Users/webprodmacbook2/Sites/Decorator/app/docs/partials/_docs.scss\A from line 3 of /Users/webprodmacbook2/Sites/Decorator/app/docs/site-specific.scss\A \A 149: &:hover, &:focus {\A 150: background-color: #f9f9f9;\A 151: border-color: #f9f9f9;\A 152: }\A 153: }\A 154: }\A 155: \A 156: /*\A 157: * Footer\A 158: *\A 159: * Separated section of content at the bottom of all pages, save the homepage."; } diff --git a/app/css/widgets.css b/app/css/widgets.css new file mode 100755 index 0000000..daf1e2c --- /dev/null +++ b/app/css/widgets.css @@ -0,0 +1,10 @@ +/********************* WIDGETS + +@import "../widgets/datatable/styles/datatable.scss"; +@import "../widgets/fullcalendar/styles/fullcalendar.scss"; +@import "../widgets/wizard/styles/wizard.scss"; +*/ + +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5jc3MiLCJzb3VyY2VzIjpbIndpZGdldHMuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztFQUtFIn0= */ + +/*# sourceMappingURL=widgets.css.map */ diff --git a/app/css/widgets.css.map b/app/css/widgets.css.map new file mode 100644 index 0000000..6ecb0a1 --- /dev/null +++ b/app/css/widgets.css.map @@ -0,0 +1 @@ +{"version":3,"file":"widgets.css","sources":["widgets.css"],"names":[],"mappings":"AAAA;;;;;EAKE","sourcesContent":[]} \ No newline at end of file diff --git a/app/fonts/glyphicons-halflings-regular.eot b/app/fonts/glyphicons-halflings-regular.eot new file mode 100755 index 0000000..4a4ca86 Binary files /dev/null and b/app/fonts/glyphicons-halflings-regular.eot differ diff --git a/app/fonts/glyphicons-halflings-regular.svg b/app/fonts/glyphicons-halflings-regular.svg new file mode 100755 index 0000000..e3e2dc7 --- /dev/null +++ b/app/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/fonts/glyphicons-halflings-regular.ttf b/app/fonts/glyphicons-halflings-regular.ttf new file mode 100755 index 0000000..67fa00b Binary files /dev/null and b/app/fonts/glyphicons-halflings-regular.ttf differ diff --git a/app/fonts/glyphicons-halflings-regular.woff b/app/fonts/glyphicons-halflings-regular.woff new file mode 100755 index 0000000..8c54182 Binary files /dev/null and b/app/fonts/glyphicons-halflings-regular.woff differ diff --git a/app/fonts/glyphicons-halflings-regular.woff2 b/app/fonts/glyphicons-halflings-regular.woff2 new file mode 100755 index 0000000..64539b5 Binary files /dev/null and b/app/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/app/img/asterisk.png b/app/img/asterisk.png new file mode 100755 index 0000000..d4d041b Binary files /dev/null and b/app/img/asterisk.png differ diff --git a/app/img/banner3.jpg b/app/img/banner3.jpg new file mode 100755 index 0000000..d7b03d3 Binary files /dev/null and b/app/img/banner3.jpg differ diff --git a/app/img/bg-dark-blue-trident-full.png b/app/img/bg-dark-blue-trident-full.png new file mode 100644 index 0000000..1fc4ea7 Binary files /dev/null and b/app/img/bg-dark-blue-trident-full.png differ diff --git a/app/img/bg-light-yellow-trident.png b/app/img/bg-light-yellow-trident.png new file mode 100644 index 0000000..b47ab83 Binary files /dev/null and b/app/img/bg-light-yellow-trident.png differ diff --git a/app/img/bg-white-trident-full.png b/app/img/bg-white-trident-full.png new file mode 100644 index 0000000..54f013f Binary files /dev/null and b/app/img/bg-white-trident-full.png differ diff --git a/app/img/bg-yellow-trident-full.png b/app/img/bg-yellow-trident-full.png new file mode 100644 index 0000000..c6c5ec9 Binary files /dev/null and b/app/img/bg-yellow-trident-full.png differ diff --git a/app/img/callout-content-two-bg.jpg b/app/img/callout-content-two-bg.jpg new file mode 100644 index 0000000..061d267 Binary files /dev/null and b/app/img/callout-content-two-bg.jpg differ diff --git a/app/img/callout-one-bg.jpg b/app/img/callout-one-bg.jpg new file mode 100644 index 0000000..bd00b87 Binary files /dev/null and b/app/img/callout-one-bg.jpg differ diff --git a/app/img/callout-trident-bg.jpg b/app/img/callout-trident-bg.jpg new file mode 100644 index 0000000..e1aceba Binary files /dev/null and b/app/img/callout-trident-bg.jpg differ diff --git a/app/img/collapse.svg b/app/img/collapse.svg new file mode 100644 index 0000000..e635a73 --- /dev/null +++ b/app/img/collapse.svg @@ -0,0 +1,12 @@ + + + + + + + diff --git a/app/img/dark-blue-library.png b/app/img/dark-blue-library.png new file mode 100644 index 0000000..8b3d447 Binary files /dev/null and b/app/img/dark-blue-library.png differ diff --git a/app/img/expand.svg b/app/img/expand.svg new file mode 100644 index 0000000..5caa530 --- /dev/null +++ b/app/img/expand.svg @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/app/img/gps-building.jpg b/app/img/gps-building.jpg new file mode 100644 index 0000000..845398a Binary files /dev/null and b/app/img/gps-building.jpg differ diff --git a/app/img/gps-faculty.jpg b/app/img/gps-faculty.jpg new file mode 100644 index 0000000..b612354 Binary files /dev/null and b/app/img/gps-faculty.jpg differ diff --git a/app/img/gps-hero.jpg b/app/img/gps-hero.jpg new file mode 100644 index 0000000..6bd2d38 Binary files /dev/null and b/app/img/gps-hero.jpg differ diff --git a/app/img/gps-logo.jpg b/app/img/gps-logo.jpg new file mode 100644 index 0000000..829fc4b Binary files /dev/null and b/app/img/gps-logo.jpg differ diff --git a/app/img/gps-staff.jpg b/app/img/gps-staff.jpg new file mode 100644 index 0000000..d3ea514 Binary files /dev/null and b/app/img/gps-staff.jpg differ diff --git a/app/img/hills.png b/app/img/hills.png new file mode 100755 index 0000000..7a5ee43 Binary files /dev/null and b/app/img/hills.png differ diff --git a/app/img/icon_loading.gif b/app/img/icon_loading.gif new file mode 100755 index 0000000..3c2f7c0 Binary files /dev/null and b/app/img/icon_loading.gif differ diff --git a/app/img/icon_loading_inline.gif b/app/img/icon_loading_inline.gif new file mode 100755 index 0000000..d42f72c Binary files /dev/null and b/app/img/icon_loading_inline.gif differ diff --git a/app/img/lib-trns.png b/app/img/lib-trns.png new file mode 100644 index 0000000..89b9a8b Binary files /dev/null and b/app/img/lib-trns.png differ diff --git a/app/img/price-center.jpg b/app/img/price-center.jpg new file mode 100755 index 0000000..6f34cfa Binary files /dev/null and b/app/img/price-center.jpg differ diff --git a/app/img/price-center_large.jpg b/app/img/price-center_large.jpg new file mode 100755 index 0000000..c3b6a0b Binary files /dev/null and b/app/img/price-center_large.jpg differ diff --git a/app/img/rady.jpg b/app/img/rady.jpg new file mode 100755 index 0000000..f9d8a4d Binary files /dev/null and b/app/img/rady.jpg differ diff --git a/app/img/respond.proxy.gif b/app/img/respond.proxy.gif new file mode 100755 index 0000000..ced1c05 Binary files /dev/null and b/app/img/respond.proxy.gif differ diff --git a/app/img/rt-trns.png b/app/img/rt-trns.png new file mode 100644 index 0000000..6ea8d4b Binary files /dev/null and b/app/img/rt-trns.png differ diff --git a/app/img/rt1.jpg b/app/img/rt1.jpg new file mode 100644 index 0000000..ebda114 Binary files /dev/null and b/app/img/rt1.jpg differ diff --git a/app/img/rt2.jpg b/app/img/rt2.jpg new file mode 100644 index 0000000..e007837 Binary files /dev/null and b/app/img/rt2.jpg differ diff --git a/app/img/rt3.jpg b/app/img/rt3.jpg new file mode 100644 index 0000000..4a89ac1 Binary files /dev/null and b/app/img/rt3.jpg differ diff --git a/app/img/rt_2.jpg b/app/img/rt_2.jpg new file mode 100755 index 0000000..5a46faa Binary files /dev/null and b/app/img/rt_2.jpg differ diff --git a/app/img/rt_2_large.jpg b/app/img/rt_2_large.jpg new file mode 100755 index 0000000..e90e1bc Binary files /dev/null and b/app/img/rt_2_large.jpg differ diff --git a/app/img/rt_3.jpg b/app/img/rt_3.jpg new file mode 100755 index 0000000..6898893 Binary files /dev/null and b/app/img/rt_3.jpg differ diff --git a/app/img/rt_3_large.jpg b/app/img/rt_3_large.jpg new file mode 100755 index 0000000..c0b752c Binary files /dev/null and b/app/img/rt_3_large.jpg differ diff --git a/app/img/rt_4.jpg b/app/img/rt_4.jpg new file mode 100755 index 0000000..e622f97 Binary files /dev/null and b/app/img/rt_4.jpg differ diff --git a/app/img/s1.jpg b/app/img/s1.jpg new file mode 100755 index 0000000..bcae995 Binary files /dev/null and b/app/img/s1.jpg differ diff --git a/app/img/s2.jpg b/app/img/s2.jpg new file mode 100755 index 0000000..bdf3865 Binary files /dev/null and b/app/img/s2.jpg differ diff --git a/app/img/sample2.jpg b/app/img/sample2.jpg new file mode 100755 index 0000000..49b8f90 Binary files /dev/null and b/app/img/sample2.jpg differ diff --git a/app/img/search-teal.png b/app/img/search-teal.png new file mode 100755 index 0000000..e359889 Binary files /dev/null and b/app/img/search-teal.png differ diff --git a/app/img/search.png b/app/img/search.png new file mode 100755 index 0000000..ceb8d6c Binary files /dev/null and b/app/img/search.png differ diff --git a/app/img/social-sprite-20.png b/app/img/social-sprite-20.png new file mode 100755 index 0000000..529bc99 Binary files /dev/null and b/app/img/social-sprite-20.png differ diff --git a/app/img/sort_asc.png b/app/img/sort_asc.png new file mode 100755 index 0000000..e1ba61a Binary files /dev/null and b/app/img/sort_asc.png differ diff --git a/app/img/sort_asc_disabled.png b/app/img/sort_asc_disabled.png new file mode 100755 index 0000000..fb11dfe Binary files /dev/null and b/app/img/sort_asc_disabled.png differ diff --git a/app/img/sort_both.png b/app/img/sort_both.png new file mode 100755 index 0000000..af5bc7c Binary files /dev/null and b/app/img/sort_both.png differ diff --git a/app/img/sort_desc.png b/app/img/sort_desc.png new file mode 100755 index 0000000..0e156de Binary files /dev/null and b/app/img/sort_desc.png differ diff --git a/app/img/sort_desc_disabled.png b/app/img/sort_desc_disabled.png new file mode 100755 index 0000000..c9fdd8a Binary files /dev/null and b/app/img/sort_desc_disabled.png differ diff --git a/app/img/sprite_base-black-2x.png b/app/img/sprite_base-black-2x.png new file mode 100755 index 0000000..16e6f8d Binary files /dev/null and b/app/img/sprite_base-black-2x.png differ diff --git a/app/img/sprite_base-black.png b/app/img/sprite_base-black.png new file mode 100755 index 0000000..9cadb06 Binary files /dev/null and b/app/img/sprite_base-black.png differ diff --git a/app/img/sprite_base-white-2x.png b/app/img/sprite_base-white-2x.png new file mode 100755 index 0000000..fe88585 Binary files /dev/null and b/app/img/sprite_base-white-2x.png differ diff --git a/app/img/sprite_base-white.png b/app/img/sprite_base-white.png new file mode 100755 index 0000000..dead088 Binary files /dev/null and b/app/img/sprite_base-white.png differ diff --git a/app/img/sprite_base.png b/app/img/sprite_base.png new file mode 100755 index 0000000..d4247d3 Binary files /dev/null and b/app/img/sprite_base.png differ diff --git a/app/img/sprite_base2x.png b/app/img/sprite_base2x.png new file mode 100755 index 0000000..172904d Binary files /dev/null and b/app/img/sprite_base2x.png differ diff --git a/app/img/sprite_icon.png b/app/img/sprite_icon.png new file mode 100755 index 0000000..1972d98 Binary files /dev/null and b/app/img/sprite_icon.png differ diff --git a/app/img/sprite_icon_widget.png b/app/img/sprite_icon_widget.png new file mode 100644 index 0000000..1cf13c1 Binary files /dev/null and b/app/img/sprite_icon_widget.png differ diff --git a/app/img/sprite_icon_widget.svg b/app/img/sprite_icon_widget.svg new file mode 100644 index 0000000..d7f9165 --- /dev/null +++ b/app/img/sprite_icon_widget.svg @@ -0,0 +1 @@ +sprite-icon-widget \ No newline at end of file diff --git a/app/img/sprite_social.png b/app/img/sprite_social.png new file mode 100644 index 0000000..9766d48 Binary files /dev/null and b/app/img/sprite_social.png differ diff --git a/app/img/sprite_wizard.png b/app/img/sprite_wizard.png new file mode 100755 index 0000000..d9254af Binary files /dev/null and b/app/img/sprite_wizard.png differ diff --git a/app/img/surf-wave.png b/app/img/surf-wave.png new file mode 100755 index 0000000..13ea524 Binary files /dev/null and b/app/img/surf-wave.png differ diff --git a/app/img/trident-trns.png b/app/img/trident-trns.png new file mode 100644 index 0000000..cf93916 Binary files /dev/null and b/app/img/trident-trns.png differ diff --git a/app/img/ucsd-footer-logo-white.png b/app/img/ucsd-footer-logo-white.png new file mode 100644 index 0000000..fa7c68b Binary files /dev/null and b/app/img/ucsd-footer-logo-white.png differ diff --git a/app/index.html b/app/index.html new file mode 100644 index 0000000..149bbe0 --- /dev/null +++ b/app/index.html @@ -0,0 +1,270 @@ + + + + DECORATOR V5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+

Decorator Version 5

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/alerts.html b/app/kitchen-sink/alerts.html new file mode 100644 index 0000000..40cffff --- /dev/null +++ b/app/kitchen-sink/alerts.html @@ -0,0 +1,436 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Alerts

+ +

Provide contextual feedback messages for typical user actions with the handful of available + and flexible alert messages.

+ +

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, or warning.

+
+ +
+
+ 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. +
+
+
+

+<div class="alert alert-success">...</div>
+<div class="alert alert-info">...</div>
+<div class="alert alert-warning">...</div>
+<div class="alert alert-danger">...</div>
+
+
+ + +

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. +
+
+
+

+<div class="alert alert-warning alert-dismissable">
+  <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
+  <strong>Warning!</strong> Better check yourself, you're not looking too good.
+</div>
+
+
+ +
+

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. +
+
+
+

+<div class="alert alert-success">
+  <a href="#" class="alert-link">...</a>
+</div>
+<div class="alert alert-info">
+  <a href="#" class="alert-link">...</a>
+</div>
+<div class="alert alert-warning">
+  <a href="#" class="alert-link">...</a>
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/badges.html b/app/kitchen-sink/badges.html new file mode 100644 index 0000000..2858dc9 --- /dev/null +++ b/app/kitchen-sink/badges.html @@ -0,0 +1,392 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Badges

+ +

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

+ +
+ Inbox 42 +
+
<a href="#">Inbox <span class="badge">42</span></a>
+ +

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 navigations.

+
+ +
+ +
+ +
+
+

+<ul class="nav nav-pills nav-stacked">
+<li class="active">
+  <a href="#"><span class="badge pull-right">42</span>Home</a>
+</li>
+...
+</ul>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/breadcrumbs.html b/app/kitchen-sink/breadcrumbs.html new file mode 100644 index 0000000..61aa355 --- /dev/null +++ b/app/kitchen-sink/breadcrumbs.html @@ -0,0 +1,363 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Breadcrumbs

+ +

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

+

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

+
+ + + +
+
+

+<ol class="breadcrumb">
+<li><a href="#">Home</a></li>
+<li><a href="#">Library</a></li>
+<li class="active">Data</li>
+</ol>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/button_dropdowns.html b/app/kitchen-sink/button_dropdowns.html new file mode 100644 index 0000000..957005d --- /dev/null +++ b/app/kitchen-sink/button_dropdowns.html @@ -0,0 +1,475 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Button Dropdowns

+ +

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.

+ +
+
<!-- Single button -->
+<div class="btn-group">
+  <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+    Action <span class="caret"></span>
+  </button>
+
+  <ul class="dropdown-menu" role="menu">
+    <li><a href="#">Action</a></li>
+    <li><a href="#">Another action</a></li>
+    <li><a href="#">Something else here</a></li>
+    <li class="divider"></li>
+    <li><a href="#">Separated link</a></li>
+  </ul>
+</div>
+
+
+ +

Dropup variation

+

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

+
+ +
+
+

+<div class="btn-group dropup">
+  <button type="button" class="btn btn-default">Dropup</button>
+  <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+    <span class="caret"></span>
+    <span class="sr-only">Toggle Dropdown</span>
+  </button>
+  <!-- Dropdown menu links -->
+  <ul class="dropdown-menu">
+  </ul>
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/buttons.html b/app/kitchen-sink/buttons.html new file mode 100644 index 0000000..f2d4a80 --- /dev/null +++ b/app/kitchen-sink/buttons.html @@ -0,0 +1,506 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Buttons

+ +

Options

+

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

+
+ + +
+
+

+<!-- Standard button -->
+<button type="button" class="btn btn-default">Default</button>
+
+<!-- Provides extra visual weight and identifies the primary action in a set of buttons -->
+<button type="button" class="btn btn-primary">Primary</button>
+
+
+ +

Sizes

+

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

+
+

+ + +

+

+ + +

+

+ + +

+

+ + +

+
+
+

+<p>
+  <button type="button" class="btn btn-primary btn-lg">Large button</button>
+  <button type="button" class="btn btn-default btn-lg">Large button</button>
+</p>
+<p>
+  <button type="button" class="btn btn-primary">Default button</button>
+  <button type="button" class="btn btn-default">Default button</button>
+</p>
+<p>
+  <button type="button" class="btn btn-primary btn-sm">Small button</button>
+  <button type="button" class="btn btn-default btn-sm">Small button</button>
+</p>
+<p>
+  <button type="button" class="btn btn-primary btn-xs">Extra small button</button>
+  <button type="button" class="btn btn-default btn-xs">Extra small button</button>
+</p>
+
+
+ +

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

+
+
+ + +
+
+
+

+<button type="button" class="btn btn-primary btn-lg btn-block">Block level button</button>
+<button type="button" class="btn btn-default btn-lg btn-block">Block level button</button>
+
+
+ +

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 on <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.

+

+ + +

+
+

+<button type="button" class="btn btn-primary btn-lg active">Primary button</button>
+<button type="button" class="btn btn-default btn-lg active">Button</button>
+
+
+ +

Anchor element

+

Add the .active class to <a> buttons.

+

+ Primary link + Link +

+
+

+<a href="#" class="btn btn-primary btn-lg active" role="button">Primary link</a>
+<a href="#" class="btn btn-default btn-lg active" role="button">Link</a>
+
+
+ +

Disabled state

+

Make buttons look unclickable by fading them back 50%.

+ +

Button element

+

Add the disabled attribute to <button> buttons.

+

+ + +

+
+

+<button type="button" class="btn btn-lg btn-primary" disabled="disabled">Primary button</button>
+<button type="button" class="btn btn-default btn-lg" disabled="disabled">Button</button>
+
+
+ +
+

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 +

+
+

+<a href="#" class="btn btn-primary btn-lg disabled" role="button">Primary link</a>
+<a href="#" class="btn btn-default btn-lg disabled" role="button">Link</a>
+
+
+

+ 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 + + + +
+
+

+<a class="btn btn-default" href="#" role="button">Link</a>
+<button class="btn btn-default" type="submit">Button</button>
+<input class="btn btn-default" type="button" value="Input">
+<input class="btn btn-default" type="submit" value="Submit">
+
+
+ +
+

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.

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/code.html b/app/kitchen-sink/code.html new file mode 100644 index 0000000..e281e7c --- /dev/null +++ b/app/kitchen-sink/code.html @@ -0,0 +1,359 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Code

+ +

Inline

+

Wrap inline snippets of code with <code>.

+
+ For example, <section> should be wrapped as inline. +
+
For example, <code>&lt;section&gt;</code> should be wrapped as inline.
+ +

User input

+

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

+
+ To switch directories, type cd followed by the name of the directory. +
+
To switch directories, type <kbd>cd</kbd> followed by the name of the directory.
+ +

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>
+
+
<pre>&lt;p&gt;Sample text here...&lt;/p&gt;</pre>
+ +

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

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/dropdowns.html b/app/kitchen-sink/dropdowns.html new file mode 100644 index 0000000..f015299 --- /dev/null +++ b/app/kitchen-sink/dropdowns.html @@ -0,0 +1,448 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Dropdowns

+ +

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.

+
+ +
+
+

+<div class="dropdown">
+<button class="btn dropdown-toggle sr-only" type="button" id="dropdownMenu1" data-toggle="dropdown">
+Dropdown
+  <span class="caret"></span>
+</button>
+<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
+  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Action</a></li>
+  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another action</a></li>
+  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Something else here</a></li>
+  <li role="presentation" class="divider"></li>
+  <li role="presentation"><a role="menuitem" tabindex="-1" href="#">Separated link</a></li>
+</ul>
+</div>
+
+
+ + +

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.0, 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.

+
+
+

+<ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dLabel">
+...
+</ul>
+
+
+ + +

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

+
+ +
+
+

+<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2">
+<li role="presentation" class="dropdown-header">Dropdown header</li>
+...
+<li role="presentation" class="divider"></li>
+<li role="presentation" class="dropdown-header">Dropdown header</li>
+...
+</ul>
+
+
+ + +

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

+
+ +
+
+

+<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu3">
+<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Regular link</a></li>
+<li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">Disabled link</a></li>
+<li role="presentation"><a role="menuitem" tabindex="-1" href="#">Another link</a></li>
+</ul>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/equal_column_layout.html b/app/kitchen-sink/equal_column_layout.html new file mode 100644 index 0000000..8de0b19 --- /dev/null +++ b/app/kitchen-sink/equal_column_layout.html @@ -0,0 +1,416 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+ +

Equal Column Layout

+ +
+
+
+

Header 1 Column

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Header 2 Column

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+
+
+

+<div class="row">
+  <div class="col-sm-6">
+    <h3 class="header">Header 1 Column</h3>
+    <p>
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+    </p>
+  </div>
+
+  <div class="col-sm-6 col">
+    <h3 class="header">Header 2 Column</h3>
+    <p>
+      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+    </p>
+  </div>
+</div>
+
+
+ + + + +
+
+
+

Header 1 Column

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Header 2 Column

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+

Header 3 Column

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+
+
+
+
+

+<div class="row">
+  <div class="col-sm-4">
+    <h3 class="header">Header 1 Column</h3>
+    <p>
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt
+    </p>
+  </div>
+
+  <div class="col-sm-4">
+    <h3 class="header">Header 2 Column</h3>
+    <p>
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+    </p>
+  </div>
+
+  <div class="col-sm-4">
+    <h3 class="header">Header 3 Column</h3>
+    <p>
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
+    </p>
+  </div>
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/forms.html b/app/kitchen-sink/forms.html new file mode 100644 index 0000000..eed722c --- /dev/null +++ b/app/kitchen-sink/forms.html @@ -0,0 +1,966 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Forms

+ +

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.

+
+
+ +
+ +
+
+
+

+<form role="form">
+  <div class="form-group">
+    <label for="exampleInputEmail1">Email address</label>
+    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
+  </div>
+  <div class="form-group">
+    <label for="exampleInputPassword1">Password</label>
+    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
+  </div>
+  <div class="form-group">
+    <label for="exampleInputFile">File input</label>
+    <input type="file" id="exampleInputFile">
+    <p class="help-block">Example block-level help text here.</p>
+  </div>
+  <div class="checkbox">
+    <label>
+      <input type="checkbox"> Check me out
+    </label>
+  </div>
+  <button type="submit" class="btn btn-default">Submit</button>
+</form>
+
+
+
+

Don't mix form groups with input groups

+

Do not mix form groups directly with input groups. Instead, nest the input group inside of the form group.

+
+ + +

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.

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

+<form class="form-inline" role="form">
+  <div class="form-group">
+    <label class="sr-only" for="exampleInputEmail2">Email address</label>
+    <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Enter email">
+  </div>
+  <div class="form-group">
+    <label class="sr-only" for="exampleInputPassword2">Password</label>
+    <input type="password" class="form-control" id="exampleInputPassword2" placeholder="Password">
+  </div>
+  <div class="checkbox">
+    <label>
+      <input type="checkbox"> Remember me
+    </label>
+  </div>
+  <button type="submit" class="btn btn-default">Sign in</button>
+</form>
+
+
+ + +

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.

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

+<form class="form-horizontal" role="form">
+  <div class="form-group">
+    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
+    <div class="col-sm-10">
+      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
+    </div>
+  </div>
+  <div class="form-group">
+    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
+    <div class="col-sm-10">
+      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
+    </div>
+  </div>
+  <div class="form-group">
+    <div class="col-sm-offset-2 col-sm-10">
+      <div class="checkbox">
+        <label>
+          <input type="checkbox"> Remember me
+        </label>
+      </div>
+    </div>
+  </div>
+  <div class="form-group">
+    <div class="col-sm-offset-2 col-sm-10">
+      <button type="submit" class="btn btn-default">Sign in</button>
+    </div>
+  </div>
+</form>
+
+
+ + +

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.

+
+
+
+ +
+
+
+

+<input type="text" class="form-control" placeholder="Text input">
+
+
+
+

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.

+
+
+ +
+
+
+

+<textarea class="form-control" rows="3"></textarea>
+
+
+ +

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)

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

+<div class="checkbox">
+  <label>
+    <input type="checkbox" value="">
+    Option one is this and that&mdash;be sure to include why it's great
+  </label>
+</div>
+
+<div class="radio">
+  <label>
+    <input type="radio" name="optionsRadios" id="optionsRadios1" value="option1" checked>
+    Option one is this and that&mdash;be sure to include why it's great
+  </label>
+</div>
+<div class="radio">
+   <label>
+    <input type="radio" name="optionsRadios" id="optionsRadios2" value="option2">
+      Option two can be something else and selecting it will deselect option one
+   </label>
+</div>
+
+
+ +

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.

+
+
+ + + +
+
+
+

+<label class="checkbox-inline">
+  <input type="checkbox" id="inlineCheckbox1" value="option1"> 1
+</label>
+<label class="checkbox-inline">
+  <input type="checkbox" id="inlineCheckbox2" value="option2"> 2
+</label>
+<label class="checkbox-inline">
+  <input type="checkbox" id="inlineCheckbox3" value="option3"> 3
+</label>
+
+
+ +

Selects

+

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

+
+
+ +
+ +
+
+
+

+<select class="form-control">
+  <option>1</option>
+  <option>2</option>
+  <option>3</option>
+  <option>4</option>
+  <option>5</option>
+</select>
+
+<select multiple class="form-control">
+  <option>1</option>
+  <option>2</option>
+  <option>3</option>
+  <option>4</option>
+  <option>5</option>
+</select>
+
+
+ + +

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

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

+<form class="form-horizontal" role="form">
+  <div class="form-group">
+    <label class="col-sm-2 control-label">Email</label>
+    <div class="col-sm-10">
+      <p class="form-control-static">email@example.com</p>
+    </div>
+  </div>
+  <div class="form-group">
+    <label for="inputPassword" class="col-sm-2 control-label">Password</label>
+    <div class="col-sm-10">
+      <input type="password" class="form-control" id="inputPassword" placeholder="Password">
+    </div>
+  </div>
+</form>
+
+
+ +

Input focus

+

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

+
+
+ +
+
+
+

Demo :focus state

+

The above example input uses custom styles in our documentation to demonstrate the :focus state on a .form-control.

+
+ + +

Disabled inputs

+

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

+
+
+ +
+
+
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
+ +

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.

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

+<form role="form">
+  <fieldset disabled>
+    <div class="form-group">
+      <label for="disabledTextInput">Disabled input</label>
+      <input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
+    </div>
+    <div class="form-group">
+      <label for="disabledSelect">Disabled select menu</label>
+      <select id="disabledSelect" class="form-control">
+        <option>Disabled select</option>
+      </select>
+    </div>
+    <div class="checkbox">
+      <label>
+        <input type="checkbox"> Can't check this
+      </label>
+    </div>
+    <button type="submit" class="btn btn-primary">Submit</button>
+  </fieldset>
+</form>
+
+
+ + +

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.

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

+<div class="form-group has-success">
+  <label class="control-label" for="inputSuccess1">Input with success</label>
+  <input type="text" class="form-control" id="inputSuccess1">
+</div>
+<div class="form-group has-warning">
+  <label class="control-label" for="inputWarning1">Input with warning</label>
+  <input type="text" class="form-control" id="inputWarning1">
+</div>
+<div class="form-group has-error">
+  <label class="control-label" for="inputError1">Input with error</label>
+  <input type="text" class="form-control" id="inputError1">
+</div>
+
+
+ +

With optional icons

+

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

+
+

Icons, labels, and input groups

+

Manual positioning of feedback icons is required for inputs without a label and for input groups with an add-on on the right. For inputs without labels, adjust the topvalue. For input groups, adjust the right value to an appropriate pixel value depending on the width of your addon.

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

+<div class="form-group has-success has-feedback">
+  <label class="control-label" for="inputSuccess2">Input with success</label>
+  <input type="text" class="form-control" id="inputSuccess2">
+  <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+</div>
+<div class="form-group has-warning has-feedback">
+  <label class="control-label" for="inputWarning2">Input with warning</label>
+  <input type="text" class="form-control" id="inputWarning2">
+  <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>
+</div>
+<div class=quot;form-group has-error has-feedback">
+  <label class="control-label" for="inputError2">Input with error</label>
+  <input type="text" class="form-control" id="inputError2">
+  <span class="glyphicon glyphicon-remove form-control-feedback"></span>
+</div>
+
+
+ +

Optional icons also work on horizontal and inline forms.

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

+<form class="form-horizontal" role="form">
+  <div class="form-group has-success has-feedback">
+    <label class="control-label col-sm-3" for="inputSuccess3">Input with success</label>
+    <div class="col-sm-9">
+      <input type="text" class="form-control" id="inputSuccess3">
+      <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+    </div>
+  </div>
+</form>
+
+
+ +
+
+
+ + + +
+
+
+
+

+<form class="form-inline" role="form">
+  <div class="form-group has-success has-feedback">
+    <label class="control-label" for="inputSuccess4">Input with success</label>
+    <input type="text" class="form-control" id="inputSuccess4">
+    <span class="glyphicon glyphicon-ok form-control-feedback"></span>
+  </div>
+</form>
+
+
+ +

Control sizing

+

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

+ +

Height sizing

+

Create taller or shorter form controls that match button sizes.

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

+<input class="form-control input-lg" type="text" placeholder=".input-lg">
+<input class="form-control" type="text" placeholder="Default input">
+<input class="form-control input-sm" type="text" placeholder=".input-sm">
+
+<select class="form-control input-lg">...</select>
+<select class="form-control">...</select>
+<select class="form-control input-sm">...</select>
+
+
+ + +

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. +
+
+
+

+<span class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/helper_classes.html b/app/kitchen-sink/helper_classes.html new file mode 100644 index 0000000..5cf2ba2 --- /dev/null +++ b/app/kitchen-sink/helper_classes.html @@ -0,0 +1,483 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Helper Classes

+ +

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.

+
+
+

+<p class="text-muted">...</p>
+<p class="text-primary">...</p>
+<p class="text-success">...</p>
+<p class="text-info">...</p>
+<p class="text-warning">...</p>
+<p class="text-danger">...</p>
+
+
+
+

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.

+
+ +

Close icon

+

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

+
+

+
+
+

+<button type="button" class="close" aria-hidden="true">&times;</button>
+
+
+ + +

Carets

+

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

+
+ +
+
+

+<span class="caret"></span>
+
+
+ + +

Quick floats

+

Float an element to the left or right with a class. !important is included to avoid specificity issues.

+
+

+<div class="pull-left">...</div>
+<div class="pull-right">...</div>
+
+
+
+

+// Classes
+.pull-left {
+  float:left !important;
+}
+.pull-right {
+  float:right !important;
+}
+
+
+ +
+

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.

+
+

+  <div class="center-block">...</div>
+
+
+
+

+// Classes
+.center-block {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+
+ + +

Clearfix

+

Clear the float on any element with the .clearfix class. Utilizes the micro clearfix as popularized by Nicolas Gallagher.

+
+

+<!-- Usage as a class -->
+<div class="clearfix">...</div>
+
+
+ + +

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.

+

.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.

+
+

+<div class="show">...</div>
+<div class="hidden">...</div>
+
+
+
+

+// Classes
+.show {
+  display: block !important;
+}
+.hidden {
+  display: none !important;
+  visibility: hidden !important;
+}
+.invisible {
+  visibility: hidden;
+}
+
+
+ +

Screen reader content

+

Hide an element to all devices except screen readers with .sr-only. Necessary for following accessibility best practices.

+
+
<a class="sr-only" href="#content">Skip to main content</a>
+        
+
+ + +

Image replacement

+

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

+
+

+<h1 class="text-hide">Custom heading</h1>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/icons.html b/app/kitchen-sink/icons.html new file mode 100644 index 0000000..42add56 --- /dev/null +++ b/app/kitchen-sink/icons.html @@ -0,0 +1,1438 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Icons

+

Glyphicons

+

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 include a link back to Glyphicons whenever possible.

+
+
    +
  • + + glyphicon glyphicon-asterisk +
  • + +
  • + + glyphicon glyphicon-plus +
  • + +
  • + + glyphicon glyphicon-euro +
  • + +
  • + + glyphicon glyphicon-minus +
  • + +
  • + + glyphicon glyphicon-cloud +
  • + +
  • + + glyphicon glyphicon-envelope +
  • + +
  • + + glyphicon glyphicon-pencil +
  • + +
  • + + glyphicon glyphicon-glass +
  • + +
  • + + glyphicon glyphicon-music +
  • + +
  • + + glyphicon glyphicon-search +
  • + +
  • + + glyphicon glyphicon-heart +
  • + +
  • + + glyphicon glyphicon-star +
  • + +
  • + + glyphicon glyphicon-star-empty +
  • + +
  • + + glyphicon glyphicon-user +
  • + +
  • + + glyphicon glyphicon-film +
  • + +
  • + + glyphicon glyphicon-th-large +
  • + +
  • + + glyphicon glyphicon-th +
  • + +
  • + + glyphicon glyphicon-th-list +
  • + +
  • + + glyphicon glyphicon-ok +
  • + +
  • + + glyphicon glyphicon-remove +
  • + +
  • + + glyphicon glyphicon-zoom-in +
  • + +
  • + + glyphicon glyphicon-zoom-out +
  • + +
  • + + glyphicon glyphicon-off +
  • + +
  • + + glyphicon glyphicon-signal +
  • + +
  • + + glyphicon glyphicon-cog +
  • + +
  • + + glyphicon glyphicon-trash +
  • + +
  • + + glyphicon glyphicon-home +
  • + +
  • + + glyphicon glyphicon-file +
  • + +
  • + + glyphicon glyphicon-time +
  • + +
  • + + glyphicon glyphicon-road +
  • + +
  • + + glyphicon glyphicon-download-alt +
  • + +
  • + + glyphicon glyphicon-download +
  • + +
  • + + glyphicon glyphicon-upload +
  • + +
  • + + glyphicon glyphicon-inbox +
  • + +
  • + + glyphicon glyphicon-play-circle +
  • + +
  • + + glyphicon glyphicon-repeat +
  • + +
  • + + glyphicon glyphicon-refresh +
  • + +
  • + + glyphicon glyphicon-list-alt +
  • + +
  • + + glyphicon glyphicon-lock +
  • + +
  • + + glyphicon glyphicon-flag +
  • + +
  • + + glyphicon glyphicon-headphones +
  • + +
  • + + glyphicon glyphicon-volume-off +
  • + +
  • + + glyphicon glyphicon-volume-down +
  • + +
  • + + glyphicon glyphicon-volume-up +
  • + +
  • + + glyphicon glyphicon-qrcode +
  • + +
  • + + glyphicon glyphicon-barcode +
  • + +
  • + + glyphicon glyphicon-tag +
  • + +
  • + + glyphicon glyphicon-tags +
  • + +
  • + + glyphicon glyphicon-book +
  • + +
  • + + glyphicon glyphicon-bookmark +
  • + +
  • + + glyphicon glyphicon-print +
  • + +
  • + + glyphicon glyphicon-camera +
  • + +
  • + + glyphicon glyphicon-font +
  • + +
  • + + glyphicon glyphicon-bold +
  • + +
  • + + glyphicon glyphicon-italic +
  • + +
  • + + glyphicon glyphicon-text-height +
  • + +
  • + + glyphicon glyphicon-text-width +
  • + +
  • + + glyphicon glyphicon-align-left +
  • + +
  • + + glyphicon glyphicon-align-center +
  • + +
  • + + glyphicon glyphicon-align-right +
  • + +
  • + + glyphicon glyphicon-align-justify +
  • + +
  • + + glyphicon glyphicon-list +
  • + +
  • + + glyphicon glyphicon-indent-left +
  • + +
  • + + glyphicon glyphicon-indent-right +
  • + +
  • + + glyphicon glyphicon-facetime-video +
  • + +
  • + + glyphicon glyphicon-picture +
  • + +
  • + + glyphicon glyphicon-map-marker +
  • + +
  • + + glyphicon glyphicon-adjust +
  • + +
  • + + glyphicon glyphicon-tint +
  • + +
  • + + glyphicon glyphicon-edit +
  • + +
  • + + glyphicon glyphicon-share +
  • + +
  • + + glyphicon glyphicon-check +
  • + +
  • + + glyphicon glyphicon-move +
  • + +
  • + + glyphicon glyphicon-step-backward +
  • + +
  • + + glyphicon glyphicon-fast-backward +
  • + +
  • + + glyphicon glyphicon-backward +
  • + +
  • + + glyphicon glyphicon-play +
  • + +
  • + + glyphicon glyphicon-pause +
  • + +
  • + + glyphicon glyphicon-stop +
  • + +
  • + + glyphicon glyphicon-forward +
  • + +
  • + + glyphicon glyphicon-fast-forward +
  • + +
  • + + glyphicon glyphicon-step-forward +
  • + +
  • + + glyphicon glyphicon-eject +
  • + +
  • + + glyphicon glyphicon-chevron-left +
  • + +
  • + + glyphicon glyphicon-chevron-right +
  • + +
  • + + glyphicon glyphicon-plus-sign +
  • + +
  • + + glyphicon glyphicon-minus-sign +
  • + +
  • + + glyphicon glyphicon-remove-sign +
  • + +
  • + + glyphicon glyphicon-ok-sign +
  • + +
  • + + glyphicon glyphicon-question-sign +
  • + +
  • + + glyphicon glyphicon-info-sign +
  • + +
  • + + glyphicon glyphicon-screenshot +
  • + +
  • + + glyphicon glyphicon-remove-circle +
  • + +
  • + + glyphicon glyphicon-ok-circle +
  • + +
  • + + glyphicon glyphicon-ban-circle +
  • + +
  • + + glyphicon glyphicon-arrow-left +
  • + +
  • + + glyphicon glyphicon-arrow-right +
  • + +
  • + + glyphicon glyphicon-arrow-up +
  • + +
  • + + glyphicon glyphicon-arrow-down +
  • + +
  • + + glyphicon glyphicon-share-alt +
  • + +
  • + + glyphicon glyphicon-resize-full +
  • + +
  • + + glyphicon glyphicon-resize-small +
  • + +
  • + + glyphicon glyphicon-exclamation-sign +
  • + +
  • + + glyphicon glyphicon-gift +
  • + +
  • + + glyphicon glyphicon-leaf +
  • + +
  • + + glyphicon glyphicon-fire +
  • + +
  • + + glyphicon glyphicon-eye-open +
  • + +
  • + + glyphicon glyphicon-eye-close +
  • + +
  • + + glyphicon glyphicon-warning-sign +
  • + +
  • + + glyphicon glyphicon-plane +
  • + +
  • + + glyphicon glyphicon-calendar +
  • + +
  • + + glyphicon glyphicon-random +
  • + +
  • + + glyphicon glyphicon-comment +
  • + +
  • + + glyphicon glyphicon-magnet +
  • + +
  • + + glyphicon glyphicon-chevron-up +
  • + +
  • + + glyphicon glyphicon-chevron-down +
  • + +
  • + + glyphicon glyphicon-retweet +
  • + +
  • + + glyphicon glyphicon-shopping-cart +
  • + +
  • + + glyphicon glyphicon-folder-close +
  • + +
  • + + glyphicon glyphicon-folder-open +
  • + +
  • + + glyphicon glyphicon-resize-vertical +
  • + +
  • + + glyphicon glyphicon-resize-horizontal +
  • + +
  • + + glyphicon glyphicon-hdd +
  • + +
  • + + glyphicon glyphicon-bullhorn +
  • + +
  • + + glyphicon glyphicon-bell +
  • + +
  • + + glyphicon glyphicon-certificate +
  • + +
  • + + glyphicon glyphicon-thumbs-up +
  • + +
  • + + glyphicon glyphicon-thumbs-down +
  • + +
  • + + glyphicon glyphicon-hand-right +
  • + +
  • + + glyphicon glyphicon-hand-left +
  • + +
  • + + glyphicon glyphicon-hand-up +
  • + +
  • + + glyphicon glyphicon-hand-down +
  • + +
  • + + glyphicon glyphicon-circle-arrow-right +
  • + +
  • + + glyphicon glyphicon-circle-arrow-left +
  • + +
  • + + glyphicon glyphicon-circle-arrow-up +
  • + +
  • + + glyphicon glyphicon-circle-arrow-down +
  • + +
  • + + glyphicon glyphicon-globe +
  • + +
  • + + glyphicon glyphicon-wrench +
  • + +
  • + + glyphicon glyphicon-tasks +
  • + +
  • + + glyphicon glyphicon-filter +
  • + +
  • + + glyphicon glyphicon-briefcase +
  • + +
  • + + glyphicon glyphicon-fullscreen +
  • + +
  • + + glyphicon glyphicon-dashboard +
  • + +
  • + + glyphicon glyphicon-paperclip +
  • + +
  • + + glyphicon glyphicon-heart-empty +
  • + +
  • + + glyphicon glyphicon-link +
  • + +
  • + + glyphicon glyphicon-phone +
  • + +
  • + + glyphicon glyphicon-pushpin +
  • + +
  • + + glyphicon glyphicon-usd +
  • + +
  • + + glyphicon glyphicon-gbp +
  • + +
  • + + glyphicon glyphicon-sort +
  • + +
  • + + glyphicon glyphicon-sort-by-alphabet +
  • + +
  • + + glyphicon glyphicon-sort-by-alphabet-alt +
  • + +
  • + + glyphicon glyphicon-sort-by-order +
  • + +
  • + + glyphicon glyphicon-sort-by-order-alt +
  • + +
  • + + glyphicon glyphicon-sort-by-attributes +
  • + +
  • + + glyphicon glyphicon-sort-by-attributes-alt +
  • + +
  • + + glyphicon glyphicon-unchecked +
  • + +
  • + + glyphicon glyphicon-expand +
  • + +
  • + + glyphicon glyphicon-collapse-down +
  • + +
  • + + glyphicon glyphicon-collapse-up +
  • + +
  • + + glyphicon glyphicon-log-in +
  • + +
  • + + glyphicon glyphicon-flash +
  • + +
  • + + glyphicon glyphicon-log-out +
  • + +
  • + + glyphicon glyphicon-new-window +
  • + +
  • + + glyphicon glyphicon-record +
  • + +
  • + + glyphicon glyphicon-save +
  • + +
  • + + glyphicon glyphicon-open +
  • + +
  • + + glyphicon glyphicon-saved +
  • + +
  • + + glyphicon glyphicon-import +
  • + +
  • + + glyphicon glyphicon-export +
  • + +
  • + + glyphicon glyphicon-send +
  • + +
  • + + glyphicon glyphicon-floppy-disk +
  • + +
  • + + glyphicon glyphicon-floppy-saved +
  • + +
  • + + glyphicon glyphicon-floppy-remove +
  • + +
  • + + glyphicon glyphicon-floppy-save +
  • + +
  • + + glyphicon glyphicon-floppy-open +
  • + +
  • + + glyphicon glyphicon-credit-card +
  • + +
  • + + glyphicon glyphicon-transfer +
  • + +
  • + + glyphicon glyphicon-cutlery +
  • + +
  • + + glyphicon glyphicon-header +
  • + +
  • + + glyphicon glyphicon-compressed +
  • + +
  • + + glyphicon glyphicon-earphone +
  • + +
  • + + glyphicon glyphicon-phone-alt +
  • + +
  • + + glyphicon glyphicon-tower +
  • + +
  • + + glyphicon glyphicon-stats +
  • + +
  • + + glyphicon glyphicon-sd-video +
  • + +
  • + + glyphicon glyphicon-hd-video +
  • + +
  • + + glyphicon glyphicon-subtitles +
  • + +
  • + + glyphicon glyphicon-sound-stereo +
  • + +
  • + + glyphicon glyphicon-sound-dolby +
  • + +
  • + + glyphicon glyphicon-sound-5-1 +
  • + +
  • + + glyphicon glyphicon-sound-6-1 +
  • + +
  • + + glyphicon glyphicon-sound-7-1 +
  • + +
  • + + glyphicon glyphicon-copyright-mark +
  • + +
  • + + glyphicon glyphicon-registration-mark +
  • + +
  • + + glyphicon glyphicon-cloud-download +
  • + +
  • + + glyphicon glyphicon-cloud-upload +
  • + +
  • + + glyphicon glyphicon-tree-conifer +
  • + +
  • + + glyphicon glyphicon-tree-deciduous +
  • +
+
+ +

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 directly combined with other components. They should not be used along with other classes on the same element. Instead, add a nested <span> and apply the icon classes to the <span>.

+
+
+

+<span class="glyphicon glyphicon-search"></span>
+
+
+ + +

Examples

+

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

+
+ + +
+
+

+<button type="button" class="btn btn-default btn-lg">
+  <span class="glyphicon glyphicon-star"></span> Star
+</button>
+
+
+ + +

You can also embed the following social media icons on your site by adding the code snippet below.

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

+<div id="social">
+
+  <h3>Social Media</h3>
+  <ul id="social-list">
+    <li class="facebook"><a href="#">Facebook</a></li>
+    <li class="twitter"><a href="#">Twitter</a></li>
+    <li class="youtube"><a href="#">Youtube</a></li>
+    <li class="linkedin"><a href="#">Linked In</a></li>
+    <li class="googleplus"><a href="#">Google Plus</a></li>
+    <li class="instagram"><a href="#">Instagram</a></li>
+    <li class="tumblr"><a href="#">Tumblr</a></li>
+    <li class="flickr"><a href="#">Flickr</a></li>
+    <li class="vine"><a href="#">Vine</a></li>
+    <li class="pinterest"><a href="#">Pinterest</a></li>
+    <li class="blogger"><a href="#">Blogger</a></li>
+    <li class="rss"><a href="#">RSS</a></li>
+  </ul>
+
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/images.html b/app/kitchen-sink/images.html new file mode 100644 index 0000000..7e2b907 --- /dev/null +++ b/app/kitchen-sink/images.html @@ -0,0 +1,403 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Images

+ +

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.

+
+
<img src="..." class="img-responsive" alt="Responsive image">
+
+
+ +

Image Floats

+

Float an image to the left or right with a class.

+
+

rolling hillsLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

+

rolling hillsLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?

+ +
+

+<img src="..." class="right"><p>...</p>
+<img src="..." class="left"><p>...</p>
+
+
+
+ +

Image shapes

+

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 +
+
+

+<img src="..." alt="..." class="img-rounded">
+<img src="..." alt="..." class="img-circle">
+<img src="..." alt="..." class="img-thumbnail">
+
+
+ + +

Image captions

+

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

+ +
+ +
+ +
+

Idyllic glade with snow-capped mountains.

+
+
+ +
+
+

+<figure>
+  <img src="..." alt="...">
+
+  <figcaption>
+    <p> ... </p>
+  </figcaption>
+</figure>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/index.html b/app/kitchen-sink/index.html new file mode 100644 index 0000000..fafb4b5 --- /dev/null +++ b/app/kitchen-sink/index.html @@ -0,0 +1,356 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +

Kitchen Sink Components

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/input_groups.html b/app/kitchen-sink/input_groups.html new file mode 100644 index 0000000..f014592 --- /dev/null +++ b/app/kitchen-sink/input_groups.html @@ -0,0 +1,613 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Input Groups

+ +

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 single .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 other components

+

Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.

+
+ + +

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.

+

We do not support multiple form-controls in a single input group.

+
+
+ @ + +
+
+
+ + .00 +
+
+
+ $ + + .00 +
+
+
+

+<div class="input-group">
+  <span class="input-group-addon">@</span>
+  <input type="text" class="form-control" placeholder="Username">
+</div>
+
+<div class="input-group">
+  <input type="text" class="form-control">
+  <span class="input-group-addon">.00</span>
+</div>
+
+<div class="input-group">
+  <span class="input-group-addon">$</span>
+  <input type="text" class="form-control">
+  <span class="input-group-addon">.00</span>
+</div>
+
+
+ +

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.

+
+
+ @ + +
+
+
+ @ + +
+
+
+ @ + +
+
+
+

+<div class="input-group input-group-lg">
+  <span class="input-group-addon">@</span>
+  <input type="text" class="form-control" placeholder="Username">
+</div>
+
+<div class="input-group">
+  <span class="input-group-addon">@</span>
+  <input type="text" class="form-control" placeholder="Username">
+</div>
+
+<div class="input-group input-group-sm">
+  <span class="input-group-addon">@</span>
+  <input type="text" class="form-control" placeholder="Username">
+</div>
+
+
+ + +

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.

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

+<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <span class="input-group-btn">
+        <button class="btn btn-default" type="button">Go!</button>
+      </span>
+      <input type="text" class="form-control">
+    </div><!-- /input-group -->
+  </div><!-- /.col-lg-6 -->
+  <div class="col-lg-6">
+    <div class="input-group">
+      <input type="text" class="form-control">
+      <span class="input-group-btn">
+        <button class="btn btn-default" type="button">Go!</button>
+      </span>
+    </div><!-- /input-group -->
+  </div><!-- /.col-lg-6 -->
+</div><!-- /.row -->
+
+
+ +

Buttons with dropdowns

+

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

+<div class="row">
+  <div class="col-lg-6">
+    <div class="input-group">
+      <div class="input-group-btn">
+        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+          Action <span class="caret"></span>
+        </button>
+        <ul class="dropdown-menu">
+          <li><a href="#">Action</a></li>
+          <li><a href="#">Another action</a></li>
+          <li><a href="#">Something else here</a></li>
+          <li class="divider"></li>
+          <li><a href="#">Separated link</a></li>
+        </ul>
+      </div><!-- /btn-group -->
+      <input type="text" class="form-control">
+    </div><!-- /input-group -->
+  </div><!-- /.col-lg-6 -->
+  <div class="col-lg-6">
+    <div class="input-group">
+      <input type="text" class="form-control">
+      <div class="input-group-btn">
+        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
+            Action <span class="caret"></span>
+        </button>
+        <ul class="dropdown-menu pull-right">
+          <li><a href="#">Action</a></li>
+          <li><a href="#">Another action</a></li>
+          <li><a href="#">Something else here</a></li>
+          <li class="divider"></li>
+          <li><a href="#">Separated link</a></li>
+        </ul>
+      </div><!-- /btn-group -->
+    </div><!-- /input-group -->
+  </div><!-- /.col-lg-6 -->
+</div><!-- /.row -->
+
+
+ +

Segmented buttons

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

+<div class="input-group">
+  <!-- Button and dropdown menu -->
+  <div class="input-group-btn"></div>
+  <input type="text" class="form-control">
+</div>
+
+<div class="input-group">
+  <input type="text" class="form-control">
+  <!-- Button and dropdown menu -->
+  <div class="input-group-btn"></div>
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/javascript_components.html b/app/kitchen-sink/javascript_components.html new file mode 100644 index 0000000..685dfec --- /dev/null +++ b/app/kitchen-sink/javascript_components.html @@ -0,0 +1,796 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+
+

JavaScript Components

+ + +
+ + +

Examples

+

Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.

+

Hover over the links below to see tooltips:

+
+

Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. +

+
+ +

Four directions

+
+
+ + + + +
+
+
+

+<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
+  Tooltip on left
+</button>
+<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
+  Tooltip on top
+</button>
+<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">
+  Tooltip on bottom
+</button>
+<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="Tooltip on right">
+  Tooltip on right
+</button>
+
+
+ +
+

Opt-in functionality

+

For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning you must initialize them yourself.

+
+
+

Tooltips in button groups and input groups require special setting

+

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

+
+
+

Tooltips on disabled elements require wrapper elements

+

To add a tooltip to a disabled or .disabled element, put the element inside of a <div> and apply the tooltip to that <div> instead.

+
+ +

Usage

+

The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element.

+

Trigger the tooltip via JavaScript:

+
+

+$('#example').tooltip(options)
+
+
+ +

Markup

+

The required markup for a tooltip is only a data attribute and title on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to top by the plugin).

+
+

Multiple-line links

+

Sometimes you want to add a tooltip to a hyperlink that wraps multiple lines. The default behavior of the tooltip plugin is to center it horizontally and vertically. Add white-space: nowrap; to your anchors to avoid this.

+
+
+

+   1 <!-- HTML to write -->
+   2 <a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
+   3
+   4 <!-- Generated markup by the plugin -->
+   5 <div class="tooltip top">
+   6   <div class="tooltip-inner">
+   7     Some tooltip text!
+   8   </div>
+   9   <div class="tooltip-arrow"></div>
+  10 </div>
+
+
+ +

Options

+

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nametypedefaultdescription
animationbooleantrueapply a CSS fade transition to the tooltip
htmlbooleanfalseInsert HTML into the tooltip. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.
placementstring | function'top'how to position the tooltip - top | bottom | left | right | auto.
When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right.
selectorstringfalseIf a selector is provided, tooltip objects will be delegated to the specified targets.
titlestring | function''default title value if title attribute isn't present
triggerstring'hover focus'how tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.
delaynumber | object0 +

delay showing and hiding the tooltip (ms) - does not apply to manual trigger type

+

If a number is supplied, delay is applied to both hide/show

+

Object structure is: delay: { show: 500, hide: 100 }

+
containerstring | falsefalse +

Appends the tooltip to a specific element. Example: container: 'body'

+
+
+
+

Data attributes for individual tooltips

+

Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.

+
+ +

Methods

+ +

$().tooltip(options)

+

Attaches a tooltip handler to an element collection.

+ +

.tooltip('show')

+

Reveals an element's tooltip.

+
+

+$('#element').tooltip('show')
+
+
+ +

.tooltip('hide')

+

Hides an element's tooltip.

+
+

+$('#element').tooltip('hide')
+
+
+ +

.tooltip('toggle')

+

Toggles an element's tooltip.

+
+

+$('#element').tooltip('toggle')
+
+
+ +

.tooltip('destroy')

+

Hides and destroys an element's tooltip.

+
+

+$('#element').tooltip('destroy')
+
+
+ +

Events

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.tooltipThis event fires immediately when the show instance method is called.
shown.bs.tooltipThis event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.tooltipThis event is fired immediately when the hide instance method has been called.
hidden.bs.tooltipThis event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).
+
+
+

+$('#myTooltip').on('hidden.bs.tooltip', function () {
+  // do something¦
+})
+
+
+
+
+ + +
+ + +

Examples

+

Add dropdown menus to nearly anything with this simple plugin, including the navbar, tabs, and pills.

+ +

Within a navbar

+ + +

Within pills

+ + + + +

Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the .open class on the parent list item. When opened, the plugin also adds .dropdown-backdrop as a click area for closing dropdown menus when clicking outside the menu. Note: The data-toggle=dropdown attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.

+ +

Via data attributes

+

Add data-toggle="dropdown" to a link or button to toggle a dropdown.

+
+

+<div class="dropdown">
+  <a data-toggle="dropdown" href="#">Dropdown trigger</a>
+  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+    ...
+  </ul>
+</div>
+
+
+

To keep URLs intact, use the data-target attribute instead of href="#".

+
+

+<div class="dropdown">
+  <a id="dLabel" role="button" data-toggle="dropdown" data-target="#" href="/page.html">
+    Dropdown
+    <span class="caret"></span>
+  </a>
+
+  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
+    ...
+  </ul>
+</div>
+
+
+ +

Via JavaScript

+

Call the dropdowns via JavaScript:

+
$('.dropdown-toggle').dropdown()
+
+

data-toggle="dropdown" still required

+

Regardless of whether you call your dropdown via JavaScript or instead use the data-api, data-toggle="dropdown" is always required to be present on the dropdown's trigger element.

+
+ +

Options

+

None

+ +

Methods

+

$().dropdown('toggle')

+

Toggles the dropdown menu of a given navbar or tabbed navigation.

+ +

Events

+

All dropdown events are fired at the .dropdown-menu's parent element.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Event TypeDescription
show.bs.dropdownThis event fires immediately when the show instance method is called. The toggling anchor element is available as the relatedTarget property of the event.
shown.bs.dropdownThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete). The toggling anchor element is available as the relatedTarget property of the event.
hide.bs.dropdownThis event is fired immediately when the hide instance method has been called. The toggling anchor element is available as the relatedTarget property of the event.
hidden.bs.dropdownThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete). The toggling anchor element is available as the relatedTarget property of the event.
+
+
+

+$('#myDropdown').on('show.bs.dropdown', function () {
+  // do something¦
+})
+
+
+
+ + + +

The Drawer Template lets you organize content into "drawers" or expandable / collapsible subsections in the center of the page. Each drawer consists of a Drawer Title, where you enter a given section's title text and a Drawer Body where you input its corresponding content. This template is ideal for lengthy content (such as FAQs).

+
+ +
+

Drawer Heading 1

+
Nulla nec lectus at orci tempor blandit. Sed nisi ipsum, iaculis nec pharetra non, mollis sit amet arcu. Aliquam erat volutpat. Cras laoreet semper est vitae vestibulum. Aenean eleifend ipsum ut purus sodales pellentesque. Cras commodo, enim eu aliquam aliquam, diam urna tincidunt nibh, quis suscipit ante neque sit amet ligula. Curabitur aliquam, eros in egestas vehicula, ipsum neque hendrerit felis, dapibus vulputate sem nunc non nunc. Morbi sit amet neque eu libero tristique bibendum. Maecenas feugiat venenatis elit, sed luctus sapien molestie id. Duis at nulla odio. Quisque a urna sit amet tellus auctor dignissim nec id mauris. Proin semper enim in eros iaculis dictum.
+

Drawer Heading 2

+
Suspendisse sit amet lectus est, sed ornare neque. Cras dignissim odio sit amet mi tempor vel consectetur dui elementum. Donec mi libero, luctus a ultricies at, ullamcorper quis lacus. Pellentesque ut purus ut erat semper pulvinar. In hac habitasse platea dictumst. Sed at vehicula sem. Donec eu elit erat, eleifend mollis mauris. Sed faucibus mollis bibendum. Suspendisse potenti. Donec sed lorem velit, consequat fermentum ligula. Duis commodo pellentesque vulputate.
+

Drawer Heading 3

+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vestibulum vehicula tortor ac elementum. Phasellus non ligula sem, sed rhoncus ipsum. Suspendisse eget lacus eget nibh faucibus dictum in in elit. Quisque tellus dui, ultrices eget dictum nec, pulvinar eu quam. Nulla ut dolor dolor. Nam viverra lacinia neque, quis porttitor metus porttitor nec. Suspendisse tempor rhoncus magna, sed egestas lacus fringilla id. Nam posuere vestibulum scelerisque. Praesent semper, leo vitae aliquet viverra, leo ante egestas leo, eu auctor magna est ut dui. Praesent eget tristique lacus. Etiam mollis dolor iaculis elit sollicitudin feugiat in ut est. Morbi ultricies bibendum interdum.
+
+
+
+

+<div class="drawer">
+  <h2><a href="#">Drawer Heading 1</a></h2>
+  <div>
+    Nulla nec lectus at orci tempor blandit. Sed nisi ipsum, iaculis nec pharetra non, mollis sit amet
+  </div>
+
+  <h2><a href="#">Drawer Heading 2</a></h2>
+  <div>
+    Suspendisse sit amet lectus est, sed ornare neque. Cras dignissim odio sit amet mi tempor vel
+  </div>
+
+  <h2><a href="#">Drawer Heading 3</a></h2>
+  <div>
+    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent vestibulum vehicula tortor ac
+  </div>
+</div>
+
+
+ + + + +
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/pagination.html b/app/kitchen-sink/pagination.html new file mode 100644 index 0000000..8031db9 --- /dev/null +++ b/app/kitchen-sink/pagination.html @@ -0,0 +1,454 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Pagination

+ +

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.

+
+ +
+
+

+<ul class="pagination">
+  <li><a href="#">&laquo;</a></li>
+  <li><a href="#">1</a></li>
+  <li><a href="#">2</a></li>
+  <li><a href="#">3</a></li>
+  <li><a href="#">4</a></li>
+  <li><a href="#">5</a></li>
+  <li><a href="#">&raquo;</a></li>
+</ul>
+
+
+ +

Disabled and active states

+

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

+
+ +
+
+

+<ul class="pagination">
+  <li class="disabled"><a href="#">&laquo;</a></li>
+  <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
+  ...
+</ul>
+
+
+

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

+
+

+<ul class="pagination">
+  <li class="disabled"><span>&laquo;</span></li>
+  <li class="active"><span>1 <span class="sr-only">(current)</span></span></li>
+  ...
+</ul>
+
+
+ + +

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.

+
+ +
+
+

+<ul class="pager">
+  <li><a href="#">Previous</a></li>
+  <li><a href="#">Next</a></li>
+</ul>
+
+
+ +

Aligned links

+

Alternatively, you can align each link to the sides:

+
+ +
+
+

+<ul class="pager">
+  <li class="previous"><a href="#">&larr; Older</a></li>
+  <li class="next"><a href="#">Newer &rarr;</a></li>
+</ul>
+
+
+ +

Optional disabled state

+

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

+
+ +
+
+

+<ul class="pager">
+  <li class="previous disabled"><a href="#">&larr; Older</a></li>
+  <li class="next"><a href="#">Newer &rarr;</a></li>
+</ul>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/panels.html b/app/kitchen-sink/panels.html new file mode 100644 index 0000000..74a9b99 --- /dev/null +++ b/app/kitchen-sink/panels.html @@ -0,0 +1,449 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Panels

+ +

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

+ +

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 +
+
+
+
+

+<div class="panel panel-default">
+  <div class="panel-heading">Panel heading without title</div>
+  <div class="panel-body">Panel content</div>
+</div>
+
+<div class="panel panel-default">
+  <div class="panel-heading">
+    <h3 class="panel-title">Panel title</h3>
+  </div>
+  <div class="panel-body">Panel content</div>
+</div>
+
+
+ + +

Contextual alternative

+

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 +
+
+
+
+

+  <div class="panel panel-primary">...</div>
+
+
+ +

With tables

+ +
+
+ +
Panel heading
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+
+
+
+

+<div class="panel panel-default">
+  <!-- Default panel contents -->
+  <div class="panel-heading">Panel heading</div>
+  <div class="panel-body">
+    <p>...</p>
+  </div>
+
+  <!-- Table -->
+  <table class="table">
+    ...
+  </table>
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/progress_bars.html b/app/kitchen-sink/progress_bars.html new file mode 100644 index 0000000..4030e9f --- /dev/null +++ b/app/kitchen-sink/progress_bars.html @@ -0,0 +1,385 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Progress Bars

+ +

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.

+
+ +

Animated

+

Add .active to .progress-striped to animate the stripes right to left. Not available in IE9 and below.

+
+
+
45% Complete
+
+
+
+

+<div class="progress">
+  <div class="progress-bar progress-bar-success" style="width: 35%">
+    <span class="sr-only">35% Complete (success)</span>
+  </div>
+
+  <div class="progress-bar progress-bar-warning" style="width: 20%">
+    <span class="sr-only">20% Complete (warning)</span>
+  </div>
+
+  <div class="progress-bar progress-bar-danger" style="width: 10%">
+    <span class="sr-only">10% Complete (danger)</span>
+  </div>
+</div>
+
+
+ + +
+

Loading Icon

+

For processes where progress cannot be measured, simply add .loading to a div or a span element.

+
+
 
+
+ +
+

+<span class="loading"></span>
+
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/site-specific.css b/app/kitchen-sink/site-specific.css new file mode 100644 index 0000000..bedfbf9 --- /dev/null +++ b/app/kitchen-sink/site-specific.css @@ -0,0 +1,1311 @@ +/* BREAKPOINTS */ +/* COLORS */ +/* LAYOUT VALUES */ +/* FONTS */ +/* MIXINS */ +/*csslint ids: false, overqualified-elements: false, fallback-colors: false*/ +/*! + * Bootstrap Docs (http://getbootstrap.com) + * Copyright 2011-2014 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 + */ +/* + * Scaffolding + * + * Update the basics of our documents to prep for docs content. + */ + +/* 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: transparent; + border-color: #563d7c; } + .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; } + +/* Bootstrap "B" icon */ +.bs-docs-booticon { + display: block; + font-weight: 500; + color: #fff; + background-color: #563d7c; + border-radius: 15%; + cursor: default; + text-align: center; } + +.bs-docs-booticon-sm { + width: 30px; + height: 30px; + font-size: 20px; + line-height: 28px; } + +.bs-docs-booticon-lg { + width: 144px; + height: 144px; + font-size: 108px; + line-height: 140px; } + +.bs-docs-booticon-inverse { + color: #563d7c; + background-color: #fff; } + +.bs-docs-booticon-outline { + background-color: transparent; + border: 1px solid #cdbfe3; } + +/* + * Main navigation + * + * Turn the `.navbar` at the top of the docs purple. + */ +.bs-docs-nav { + margin-bottom: 0; + background-color: #fff; + border-bottom: 0; } + +.bs-home-nav .bs-nav-b { + display: none; } + +.bs-docs-nav .navbar-brand { + color: #563d7c; + font-weight: 500; } +.bs-docs-nav .navbar-nav > li > a { + color: #563d7c; + font-weight: 500; } + .bs-docs-nav .navbar-nav > li > a:hover { + color: #463265; + background-color: #f9f9f9; } +.bs-docs-nav .navbar-nav > .active > a { + color: #463265; + background-color: #f9f9f9; } + .bs-docs-nav .navbar-nav > .active > a:hover { + color: #463265; + background-color: #f9f9f9; } +.bs-docs-nav .navbar-toggle .icon-bar { + background-color: #563d7c; } +.bs-docs-nav .navbar-header .navbar-toggle { + border-color: #fff; } + .bs-docs-nav .navbar-header .navbar-toggle:hover, .bs-docs-nav .navbar-header .navbar-toggle:focus { + background-color: #f9f9f9; + border-color: #f9f9f9; } + +/* + * Footer + * + * Separated section of content at the bottom of all pages, save the homepage. + */ +.bs-docs-footer { + padding-top: 40px; + padding-bottom: 40px; + margin-top: 100px; + color: #777; + text-align: center; + border-top: 1px solid #e5e5e5; } + +.bs-docs-footer-links { + margin-top: 20px; + padding-left: 0; + color: #999; } + .bs-docs-footer-links li { + display: inline; + padding: 0 2px; } + .bs-docs-footer-links li:first-child { + padding-left: 0; } + +@media (min-width: 768px) { + .bs-docs-footer p { + margin-bottom: 0; } } +/* + * Social buttons + * + * Twitter and GitHub social action buttons (for homepage and footer). + */ +.bs-docs-social { + margin-bottom: 20px; + text-align: center; } + +.bs-docs-social-buttons { + display: inline-block; + margin-bottom: 0; + padding-left: 0; + list-style: none; } + .bs-docs-social-buttons li { + display: inline-block; + line-height: 1; + padding: 5px 8px; } + .bs-docs-social-buttons .twitter-follow-button { + width: 225px !important; } + .bs-docs-social-buttons .twitter-share-button { + width: 98px !important; } + +/* Style the GitHub buttons via CSS instead of inline attributes */ +.github-btn { + border: 0; + overflow: hidden; } + +/* + * Homepage + * + * Tweaks to the custom homepage and the masthead (main jumbotron). + */ +/* Share masthead with page headers */ +.bs-docs-masthead, .bs-docs-header { + position: relative; + padding: 30px 15px; + color: #cdbfe3; + text-align: center; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); + background-color: #6f5499; + background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%); + background-image: linear-gradient(to bottom, #563d7c 0%, #6f5499 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0); } + +/* Masthead (headings and download button) */ +.bs-docs-masthead .bs-docs-booticon { + margin: 0 auto 30px; } +.bs-docs-masthead h1 { + font-weight: 300; + line-height: 1; + color: #fff; } +.bs-docs-masthead .lead { + margin: 0 auto 30px; + font-size: 20px; + color: #fff; } +.bs-docs-masthead .version { + margin-top: -15px; + margin-bottom: 30px; + color: #9783b9; } +.bs-docs-masthead .btn { + width: 100%; + padding: 15px 30px; + font-size: 20px; } + +@media (min-width: 480px) { + .bs-docs-masthead .btn { + width: auto; } } +@media (min-width: 768px) { + .bs-docs-masthead { + padding-top: 80px; + padding-bottom: 80px; } + .bs-docs-masthead h1 { + font-size: 60px; } + .bs-docs-masthead .lead { + font-size: 24px; } } +@media (min-width: 992px) { + .bs-docs-masthead .lead { + width: 80%; + font-size: 30px; } } +/* + * Page headers + * + * Jumbotron-esque headers at the top of every page that's not the homepage. + */ +/* Page headers */ +.bs-docs-header { + margin-bottom: 40px; + font-size: 20px; } + .bs-docs-header h1 { + margin-top: 0; + color: #fff; } + .bs-docs-header p { + margin-bottom: 0; + font-weight: 300; + line-height: 1.4; } + .bs-docs-header .container { + position: relative; } + +@media (min-width: 768px) { + .bs-docs-header { + padding-top: 60px; + padding-bottom: 60px; + font-size: 24px; + text-align: left; } + .bs-docs-header h1 { + font-size: 60px; + line-height: 1; } } +@media (min-width: 992px) { + .bs-docs-header h1, .bs-docs-header p { + margin-right: 380px; } } +/* + * Homepage featurettes + * + * Reasons to use Bootstrap, entries from the Expo, and more. + */ +.bs-docs-featurette { + padding-top: 40px; + padding-bottom: 40px; + font-size: 16px; + line-height: 1.5; + color: #555; + text-align: center; + background-color: #fff; + border-bottom: 1px solid #e5e5e5; } + .bs-docs-featurette + .bs-docs-footer { + margin-top: 0; + border-top: 0; } + +.bs-docs-featurette-title { + font-size: 30px; + font-weight: normal; + color: #333; + margin-bottom: 5px; } + +.half-rule { + width: 100px; + margin: 40px auto; } + +.bs-docs-featurette h3 { + font-weight: normal; + color: #333; + margin-bottom: 5px; } + +.bs-docs-featurette-img { + display: block; + margin-bottom: 20px; + color: #333; } + .bs-docs-featurette-img:hover { + text-decoration: none; + color: #428bca; } + .bs-docs-featurette-img img { + display: block; + margin-bottom: 15px; } + +/* Featured sites */ +.bs-docs-featured-sites { + margin-left: -1px; + margin-right: -1px; } + .bs-docs-featured-sites .col-sm-3 { + padding-left: 1px; + padding-right: 1px; } + +@media (min-width: 480px) { + .bs-docs-featurette .img-responsive { + margin-top: 30px; } } +@media (min-width: 768px) { + .bs-docs-featurette { + padding-top: 100px; + padding-bottom: 100px; } + + .bs-docs-featurette-title { + font-size: 40px; } + + .bs-docs-featurette .lead { + margin-left: auto; + margin-right: auto; + max-width: 80%; } + + .bs-docs-featured-sites .col-sm-3:first-child img { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; } + .bs-docs-featured-sites .col-sm-3:last-child img { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; } + + .bs-docs-featurette .img-responsive { + margin-top: 0; } } +/* + * 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-docs-sidebar.affix { + position: static; } + +@media (min-width: 768px) { + .bs-docs-sidebar { + padding-left: 20px; } } +/* First level of nav */ +.bs-docs-sidenav { + margin-top: 20px; + margin-bottom: 20px; } + +/* All levels of nav */ +.bs-docs-sidebar .nav > li > a { + display: block; + /*font-size: 13px; + font-weight: 500;*/ + color: #999; + padding: 4px 20px; } + .bs-docs-sidebar .nav > li > a:hover, .bs-docs-sidebar .nav > li > a:focus { + padding-left: 19px; + /*color: #563d7c;*/ + text-decoration: none; + background-color: transparent; + /*border-left: 1px solid #563d7c;*/ } +.bs-docs-sidebar .nav > .active > a, .bs-docs-sidebar .nav > .active:hover > a, .bs-docs-sidebar .nav > .active:focus > a { + padding-left: 18px; + font-weight: bold; + color: #563d7c; + background-color: transparent; + /*border-left: 2px solid #563d7c;*/ } +.bs-docs-sidebar .nav .nav { + display: none; + /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; } + .bs-docs-sidebar .nav .nav > li > a { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 30px; + font-size: 12px; + font-weight: normal; } + .bs-docs-sidebar .nav .nav > li > a:hover, .bs-docs-sidebar .nav .nav > li > a:focus { + padding-left: 29px; } + .bs-docs-sidebar .nav .nav > .active > a, .bs-docs-sidebar .nav .nav > .active:hover > a, .bs-docs-sidebar .nav .nav > .active:focus > a { + font-weight: 500; + padding-left: 28px; } + +/* Nav: second level (shown on .active) */ +/* Back to top (hidden on mobile) */ +.back-to-top { + display: none; + margin-top: 10px; + margin-left: 10px; + padding: 4px 10px; + font-size: 12px; + font-weight: 500; + color: #999; } + .back-to-top:hover { + text-decoration: none; + color: #563d7c; } + +@media (min-width: 768px) { + .back-to-top { + display: block; } } +/* Show and affix the side nav when space allows it */ +@media (min-width: 992px) { + .bs-docs-sidebar .nav > .active > ul { + display: block; } + .bs-docs-sidebar.affix, .bs-docs-sidebar.affix-bottom { + width: 213px; } + .bs-docs-sidebar.affix { + position: fixed; + /* Undo the static from mobile first approach */ + top: 20px; } + .bs-docs-sidebar.affix-bottom { + position: absolute; + /* Undo the static from mobile first approach */ } + .bs-docs-sidebar.affix-bottom .bs-docs-sidenav { + margin-top: 0; + margin-bottom: 0; } + .bs-docs-sidebar.affix .bs-docs-sidenav { + margin-top: 0; + margin-bottom: 0; } + + /* Widen the fixed sidebar */ } +@media (min-width: 1200px) { + /* Widen the fixed sidebar again */ + .bs-docs-sidebar.affix-bottom, .bs-docs-sidebar.affix { + width: 263px; } } +/* + * Docs sections + * + * Content blocks for each component or feature. + */ +/* Space things out */ +.bs-docs-section { + margin-bottom: 60px; } + .bs-docs-section:last-child { + margin-bottom: 0; } + +h1[id] { + margin-top: 0; + padding-top: 20px; } + +/* + * 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; } + .bs-callout code { + background-color: #fff; + border-radius: 3px; } + +/* Variations */ +.bs-callout-danger { + background-color: #fdf7f7; + border-color: #d9534f; } + .bs-callout-danger h4 { + color: #d9534f; } + +.bs-callout-warning { + background-color: #fcf8f2; + border-color: #f0ad4e; } + .bs-callout-warning h4 { + color: #f0ad4e; } + +.bs-callout-info { + background-color: #f4f8fa; + border-color: #5bc0de; } + .bs-callout-info h4 { + color: #5bc0de; } + +/* + * 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: 60px; + height: 60px; + margin: 0 5px; + border-radius: 3px; } + +@media (min-width: 768px) { + .color-swatch { + width: 100px; + height: 100px; } } +/* Framework colors */ +.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; } +.color-swatches .bs-purple { + background-color: #563d7c; } +.color-swatches .bs-purple-light { + background-color: #c7bfd3; } +.color-swatches .bs-purple-lighter { + background-color: #e5e1ea; } +.color-swatches .bs-gray { + background-color: #f9f9f9; } + +/* Docs colors */ +/* + * 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, 0.15); + border: 1px solid #ddd; + border: 1px solid rgba(86, 61, 124, 0.2); } + +/* + * Examples + * + * Isolated sections of example content for each component or feature. Usually + * followed by a code snippet. + */ +.bs-example { + position: relative; + height: 100%; + padding: 45px 15px 15px; + margin: 0 -15px 15px; + background-color: #fafafa; + box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.05); + border-color: #e5e5e5 #eee #eee; + border-style: solid; + border-width: 1px 0; } + .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; } + .bs-example + .highlight { + margin: -15px -15px 15px; + border-radius: 0; + border-width: 0 0 1px; } + .bs-example .container { + width: auto; } + .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; } + +/* Echo out a label for the example */ +/* Tweak display of the code snippets when following an example */ +/* 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 */ +/* Tweak content of examples for optimum awesome */ +/* 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; } + +.bs-example .btn-group { + *display: inline; + zoom: 1; } + +/* 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; } +.bs-example > .table-responsive > .table { + background-color: #fff; } +.bs-example > .btn, .bs-example > .btn-group { + margin-top: 5px; + margin-bottom: 5px; } +.bs-example > .btn-toolbar + .btn-toolbar { + margin-top: 10px; } + +/* Tables */ +/* Buttons */ +/* 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; } +.bs-example > .list-group { + max-width: 400px; } +.bs-example .navbar:last-child { + margin-bottom: 0; } + +/* List groups */ +/* Navbars */ +.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; } +.bs-example > .pager { + margin-top: 0; } + +/* Pager */ +/* 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 { + display: block; + font-weight: normal; + color: #999; } + +.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 { + color: #999; + border: 1px solid #ddd; } + +.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 { + color: #468847; + background-color: #dff0d8; + border: 1px solid #d6e9c6; } + +.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; + font-size: 10px; + line-height: 1.4; + text-align: center; + border: 1px solid #fff; + background-color: #f9f9f9; } +.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 { + color: #fff; + background-color: #563d7c; } + +@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: 25px; } +.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; } + +/* Headings and form contrls */ +/* For the variables, use regular weight */ +#less-section label { + font-weight: normal; } + +.bs-customizer-input { + float: left; + width: 33.333333%; + padding-left: 15px; + padding-right: 15px; } + +/* Downloads */ +.bs-customize-download .btn-outline { + padding: 20px; } + +/* Error handling */ +.bs-customizer-alert { + position: fixed; + top: 0; + 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, 0.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, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); } + +/* + * Brand guidelines + * + * Extra styles for displaying wordmarks, logos, etc. + */ +/* Logo series wrapper */ +.bs-brand-logos { + display: table; + width: 100%; + margin-bottom: 15px; + overflow: hidden; + color: #563d7c; + background-color: #f9f9f9; + border-radius: 4px; } + +/* Individual items */ +.bs-brand-item { + padding: 60px 0; + text-align: center; } + .bs-brand-item + .bs-brand-item { + border-top: 1px solid #fff; } + +.bs-brand-logos .inverse { + color: #fff; + background-color: #563d7c; } + +/* Heading content within */ +.bs-brand-item h1, .bs-brand-item h3 { + margin-top: 0; + margin-bottom: 0; } +.bs-brand-item .bs-docs-booticon { + margin-left: auto; + margin-right: auto; } +.bs-brand-item .glyphicon { + width: 30px; + height: 30px; + margin: 10px auto -10px; + line-height: 30px; + color: #fff; + border-radius: 50%; } +.bs-brand-item .glyphicon-ok { + background-color: #5cb85c; } +.bs-brand-item .glyphicon-remove { + background-color: #d9534f; } + +/* Make the icons stand out on what is/isn't okay */ +@media (min-width: 768px) { + .bs-brand-item { + display: table-cell; + width: 1%; } + .bs-brand-item + .bs-brand-item { + border-top: 0; + border-left: 1px solid #fff; } + .bs-brand-item h1 { + font-size: 60px; } } +/* + * Miscellaneous + * + * Odds and ends for optimum docs display. + */ +/* Examples gallery: space out content better */ +.bs-examples .thumbnail { + margin-bottom: 10px; } +.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: #cccccc; + /* Restate unfocused value to make CSSLint happy that there's a pre-CSS3 fallback*/ + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + -moz-box-shadow: 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: 0 0 8px rgba(82, 168, 236, 0.6); } + +.hll { + background-color: #ffc; } + +.c { + color: #999; } + +.err { + color: #A00; + background-color: #FAA; } + +.k { + color: #069; } + +.o { + color: #555; } + +.cm { + color: #999; } + +.cp { + color: #099; } + +.c1 { + color: #999; } + +.cs { + color: #999; } + +.gd { + background-color: #FCC; + border: 1px solid #C00; } + +.ge { + font-style: italic; } + +.gr { + color: red; } + +.gh { + color: #030; } + +.gi { + background-color: #CFC; + border: 1px solid #0C0; } + +.go { + color: #AAA; } + +.gp { + color: #009; } + +.gu { + color: #030; } + +.gt { + color: #9C6; } + +.kc { + color: #069; } + +.kd { + color: #069; } + +.kn { + color: #069; } + +.kp { + color: #069; } + +.kr { + color: #069; } + +.kt { + color: #078; } + +.m { + color: #F60; } + +.s { + color: #d44950; } + +.na { + color: #4f9fcf; } + +.nb { + color: #366; } + +.nc { + color: #0A8; } + +.no { + color: #360; } + +.nd { + color: #99F; } + +.ni { + color: #999; } + +.ne { + color: #C00; } + +.nf { + color: #C0F; } + +.nl { + color: #99F; } + +.nn { + color: #0CF; } + +.nt { + color: #2f6f9f; } + +.nv { + color: #033; } + +.ow { + color: #000; } + +.w { + color: #bbb; } + +.mf { + color: #F60; } + +.mh { + color: #F60; } + +.mi { + color: #F60; } + +.mo { + color: #F60; } + +.sb { + color: #C30; } + +.sc { + color: #C30; } + +.sd { + color: #C30; + font-style: italic; } + +.s2 { + color: #C30; } + +.se { + color: #C30; } + +.sh { + color: #C30; } + +.si { + color: #A00; } + +.sx { + color: #C30; } + +.sr { + color: #3AA; } + +.s1 { + color: #C30; } + +.ss { + color: #FC3; } + +.bp { + color: #366; } + +.vc { + color: #033; } + +.vg { + color: #033; } + +.vi { + color: #033; } + +.il { + color: #F60; } + +.css .o, .css .o + .nt, .css .nt + .nt { + color: #999; } + +.main-content .page-header { + margin-bottom: 10px; } +.main-content .social-list { + list-style: none; + padding-left: 0; } +.main-content #docs-header { + padding-top: 0; } +.main-content #headers { + margin-top: 20px; } + +@media screen and (max-width: 960px) { + .bs-example { + margin: 0 0 15px; } } + +@media screen and (max-width: 960px) { + .bs-example + .highlight { + margin: -15px 0 15px; } } + +#tdr_2_col_nav { + overflow: visible; } + #tdr_2_col_nav .doc-nav .nav > li > a { + padding-top: 5px; } + @media screen and (min-width: 960px) { + #tdr_2_col_nav .doc-nav .bs-docs-sidebar { + padding-left: 0; } } + +.bs-docs-sidebar { + display: none; + padding-left: 0; } + .lt-ie8 .bs-docs-sidebar { + padding-left: 0 !important; } + @media screen and (min-width: 960px) { + .bs-docs-sidebar { + display: block; } } + .bs-docs-sidebar .bs-docs-sidenav { + margin-left: 0; } + .bs-docs-sidebar .nav .nav { + margin-left: 0; } + +.bs-docs-sidebar.affix { + -webkit-transform: translateZ(0); + transform: translateZ(0); } diff --git a/app/kitchen-sink/tables.html b/app/kitchen-sink/tables.html new file mode 100644 index 0000000..2158ed6 --- /dev/null +++ b/app/kitchen-sink/tables.html @@ -0,0 +1,797 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Tables

+ +

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
+
+
+

+<table class="table">
+  ...
+</table>
+
+
+ + +

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
+
+
+

+<table class="table table-striped">
+  ...
+</table>
+
+
+ + +

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
+
+
+

+<table class="table table-bordered">
+  ...
+</table>
+
+
+ + +

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
+
+
+

+<table class="table table-hover">
+  ...
+</table>
+
+
+ + +

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
+
+
+

+<table class="table table-condensed">
+  ...
+</table>
+
+
+ + +

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
+ .info + Indicates a neutral informative change or action
+ .warning + Indicates a warning that might need attention
+ .danger + Indicates a dangerous or potentially negative 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
+
+
+

+<!-- On rows -->
+<tr class="active">...</tr>
+<tr class="success">...</tr>
+<tr class="warning">...</tr>
+<tr class="danger">...</tr>
+<tr class="info">...</tr>
+
+<!-- On cells (`td` or `th`) -->
+<tr>
+  <td class="active">...</td>
+  <td class="success">...</td>
+  <td class="warning">...</td>
+  <td class="danger">...</td>
+  <td class="info">...</td>
+</tr>
+
+
+ +

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
+
+
+
+

+<div class="table-responsive">
+  <table class="table">
+    ...
+  </table>
+</div>
+
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/kitchen-sink/typography.html b/app/kitchen-sink/typography.html new file mode 100644 index 0000000..7cf779e --- /dev/null +++ b/app/kitchen-sink/typography.html @@ -0,0 +1,936 @@ + + + + NEW TWO COLUMN TEMPLATE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+

Typography

+ +

Headers

+ +

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
+
+ +
+

+<h1>h1. Bootstrap heading</h1>
+<h2>h2. Bootstrap heading</h2>
+<h3>h3. Bootstrap heading</h3>
+<h4>h4. Bootstrap heading</h4>
+<h5>h5. Bootstrap heading</h5>
+<h6>h6. Bootstrap heading</h6>
+
+
+ + +

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.

+
+
+

+<p>...</p>
+
+
+ +

Links

+ +
+

Link.

+
+
+

+<a href="#">Link</a>
+
+
+ +
+

Link to Google that opens a new window.

+
+
+

+<a target="_blank" href="http://www.google.com/">Google</a>
+
+
+ +
+

Link to Yahoo that opens a new + window but has no window icon.
+

+
+

+<a target="_blank" href="http://www.yahoo.com/" class="nonewwin">Yahoo</a>
+
+
+ +

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.

+
+
+

+<p class="lead">...</p>
+
+
+ + +

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. +

+
+
+

+<small>This line of text is meant to be treated as fine print.</small>
+
+
+ +

Bold

+ +

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

+ +
+

The following snippet of text is rendered as bold text.

+
+
+

+<strong>rendered as bold text</strong>
+
+
+ +

Italics

+ +

For emphasizing a snippet of text with italics.

+ +
+

The following snippet of text is rendered as italicized text.

+
+
+
<em>rendered as italicized text</em>
+                  
+
+ +
+

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.

+ +

Justified text.

+
+
+

+<p class="text-left">Left aligned text.</p>
+<p class="text-center">Center aligned text.</p>
+<p class="text-right">Right aligned text.</p>
+<p class="text-justify">Justified text.</p>
+
+
+ + +

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 +
+
+
+

+<address>
+  <strong>Twitter, Inc.</strong><br>
+  795 Folsom Ave, Suite 600<br>
+  San Francisco, CA 94107<br>
+  <abbr title="Phone">P:</abbr> (123) 456-7890
+</address>
+
+<address>
+  <strong>Full Name</strong><br>
+  <a href="mailto:#">first.last@example.com</a>
+</address>
+
+
+ + +

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.

+
+
+
+

+<blockquote>
+  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+</blockquote>
+
+
+ +

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
+
+
+
+

+<blockquote>
+  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
+  <footer>
+    Someone famous in 
+    <cite title="Source Title">
+        Source Title
+    </cite>
+  </footer>
+</blockquote>
+
+
+

Alternate displays

+ +

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

+ +
+
+

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

+
Someone famous in Source Title
+
+
+
+

+<blockquote class="blockquote-reverse">
+  ...
+</blockquote>
+
+
+ + + +

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 +
        +
      • Phasellus iaculis neque
      • +
      • Purus sodales ultricies
      • +
      • Vestibulum laoreet porttitor sem
      • +
      • + Ac tristique libero volutpat at +
          +
        • Phasellus iaculis neque
        • +
        • Purus sodales ultricies
        • +
        • Vestibulum laoreet porttitor sem
        • +
        • + Ac tristique libero volutpat at +
            +
          • 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
  • +
+
+
+

+<ul>
+  <li>...</li>
+</ul>
+
+
+ + +

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. +
  17. Lorem ipsum dolor sit amet
  18. +
  19. Consectetur adipiscing elit
  20. +
  21. Integer molestie lorem at massa
  22. +
  23. Facilisis in pretium nisl aliquet
  24. +
  25. Nulla volutpat aliquam velit
  26. +
  27. Faucibus porta lacus fringilla vel
  28. +
  29. Aenean sit amet erat nunc
  30. +
  31. Eget porttitor lorem
  32. +
  33. Lorem ipsum dolor sit amet
  34. +
  35. Consectetur adipiscing elit
  36. +
  37. Integer molestie lorem at massa
  38. +
  39. Facilisis in pretium nisl aliquet
  40. +
  41. Nulla volutpat aliquam velit
  42. +
  43. Faucibus porta lacus fringilla vel
  44. +
  45. Aenean sit amet erat nunc
  46. +
  47. Eget porttitor lorem
  48. +
  49. Lorem ipsum dolor sit amet
  50. +
  51. Consectetur adipiscing elit
  52. +
  53. Integer molestie lorem at massa
  54. +
  55. Facilisis in pretium nisl aliquet
  56. +
  57. Nulla volutpat aliquam velit
  58. +
  59. Faucibus porta lacus fringilla vel
  60. +
  61. Aenean sit amet erat nunc
  62. +
  63. Eget porttitor lorem
  64. +
  65. Lorem ipsum dolor sit amet
  66. +
  67. Consectetur adipiscing elit
  68. +
  69. Integer molestie lorem at massa
  70. +
  71. Facilisis in pretium nisl aliquet
  72. +
  73. Nulla volutpat aliquam velit
  74. +
  75. Faucibus porta lacus fringilla vel
  76. +
  77. Aenean sit amet erat nunc
  78. +
  79. Eget porttitor lorem
  80. +
  81. Lorem ipsum dolor sit amet
  82. +
  83. Consectetur adipiscing elit
  84. +
  85. Integer molestie lorem at massa
  86. +
  87. Facilisis in pretium nisl aliquet
  88. +
  89. Nulla volutpat aliquam velit
  90. +
  91. Faucibus porta lacus fringilla vel
  92. +
  93. Aenean sit amet erat nunc
  94. +
  95. Eget porttitor lorem
  96. +
  97. Lorem ipsum dolor sit amet
  98. +
  99. Consectetur adipiscing elit
  100. +
  101. Integer molestie lorem at massa
  102. +
  103. Facilisis in pretium nisl aliquet
  104. +
  105. Nulla volutpat aliquam velit
  106. +
  107. Faucibus porta lacus fringilla vel
  108. +
  109. Aenean sit amet erat nunc
  110. +
  111. Eget porttitor lorem
  112. +
  113. Lorem ipsum dolor sit amet
  114. +
  115. Consectetur adipiscing elit
  116. +
  117. Integer molestie lorem at massa
  118. +
  119. Facilisis in pretium nisl aliquet
  120. +
  121. Nulla volutpat aliquam velit
  122. +
  123. Faucibus porta lacus fringilla vel
  124. +
  125. Aenean sit amet erat nunc
  126. +
  127. Eget porttitor lorem
  128. +
  129. Eget porttitor lorem
  130. +
  131. Lorem ipsum dolor sit amet
  132. +
  133. Consectetur adipiscing elit
  134. +
  135. Integer molestie lorem at massa
  136. +
  137. Facilisis in pretium nisl aliquet
  138. +
  139. Nulla volutpat aliquam velit
  140. +
  141. Faucibus porta lacus fringilla vel
  142. +
  143. Aenean sit amet erat nunc
  144. +
  145. Eget porttitor lorem
  146. +
  147. Lorem ipsum dolor sit amet
  148. +
  149. Consectetur adipiscing elit
  150. +
  151. Integer molestie lorem at massa
  152. +
  153. Facilisis in pretium nisl aliquet
  154. +
  155. Nulla volutpat aliquam velit
  156. +
  157. Faucibus porta lacus fringilla vel
  158. +
  159. Aenean sit amet erat nunc
  160. +
  161. Eget porttitor lorem
  162. +
  163. Lorem ipsum dolor sit amet
  164. +
  165. Consectetur adipiscing elit
  166. +
  167. Integer molestie lorem at massa
  168. +
  169. Facilisis in pretium nisl aliquet
  170. +
  171. Nulla volutpat aliquam velit
  172. +
  173. Faucibus porta lacus fringilla vel
  174. +
  175. Aenean sit amet erat nunc
  176. +
  177. Eget porttitor lorem
  178. +
  179. Lorem ipsum dolor sit amet
  180. +
  181. Consectetur adipiscing elit
  182. +
  183. Integer molestie lorem at massa
  184. +
  185. Facilisis in pretium nisl aliquet
  186. +
  187. Nulla volutpat aliquam velit
  188. +
  189. Faucibus porta lacus fringilla vel
  190. +
  191. Aenean sit amet erat nunc
  192. +
  193. Eget porttitor lorem
  194. +
  195. Lorem ipsum dolor sit amet
  196. +
  197. Consectetur adipiscing elit
  198. +
  199. Integer molestie lorem at massa
  200. +
  201. Facilisis in pretium nisl aliquet
  202. +
  203. Nulla volutpat aliquam velit
  204. +
  205. Faucibus porta lacus fringilla vel
  206. +
  207. Aenean sit amet erat nunc
  208. +
  209. Eget porttitor lorem
  210. +
+
+
+

+<ol>
+  <li>...</li>
+</ol>
+
+
+

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
  • +
+
+
+

+<ul class="list-unstyled">
+  <li>...</li>
+</ul>
+
+
+ +

Inline

+ +

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

+ +
+
    +
  • Lorem ipsum
  • +
  • Phasellus iaculis
  • +
  • Nulla volutpat
  • +
+
+
+

+<ul class="list-inline">
+  <li>...</li>
+</ul>
+
+
+ +

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.
+
+
+
+

+<dl>
+  <dt>...</dt>
+  <dd>...</dd>
+</dl>
+
+
+

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. +
+
+
+
+

+<dl class="dl-horizontal">
+  <dt>...</dt>
+  <dd>...</dd>
+</dl>
+
+
+
+

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. +

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/scripts/decorator.js b/app/scripts/decorator.js new file mode 100644 index 0000000..fb354c0 --- /dev/null +++ b/app/scripts/decorator.js @@ -0,0 +1,35 @@ +/* this is used by cms. apps should use the versioned js */ + +/* initialize login links */ +function initLogout(logoutUrl) { + var url = "https://a4.ucsd.edu/tritON/resources/bugscript.jsp?target=https%3A%2F%2Fwww.ucsd.edu&jsoncallback=?"; + $.getJSON(url, function(data) { + if (data.eduUcsdActLoggedin) { + var url = "
You are logged in | Log Out
"; + $("div#tdr_login").empty(); + $("div#tdr_login").append(url); + } + }); +}; + +/* initialize footer links */ +function initFooter(feedbackUrl) { + feedbackUrl = feedbackUrl + location.pathname; + var feedback_url = "Feedback"; + $("#tdr_footer_feedback").empty(); + $("#tdr_footer_feedback").append(feedback_url); +}; + +/* initialize copyright year */ +function initCopyright() { + var today = new Date(); + copyrightYear = today.getFullYear(); + $(".copyright_year").empty(); + $(".copyright_year").append(copyrightYear); +}; diff --git a/app/scripts/ucsd/copyright.js b/app/scripts/ucsd/copyright.js new file mode 100755 index 0000000..d207915 --- /dev/null +++ b/app/scripts/ucsd/copyright.js @@ -0,0 +1,7 @@ +/* initialize copyright year */ +function initCopyright() { + var today = new Date(); + var footerCopyrightYear = '.footer-copyright-year'; + $(footerCopyrightYear).empty(); + $(footerCopyrightYear).append(today.getFullYear()); +}; \ No newline at end of file diff --git a/app/scripts/ucsd/dataTables.min.js b/app/scripts/ucsd/dataTables.min.js new file mode 100755 index 0000000..f311240 --- /dev/null +++ b/app/scripts/ucsd/dataTables.min.js @@ -0,0 +1,157 @@ +/*! DataTables 1.10.4 + * ©2008-2014 SpryMedia Ltd - datatables.net/license + */ +(function(Da,P,l){var O=function(g){function V(a){var b,c,e={};g.each(a,function(d){if((b=d.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=d.replace(b[0],b[2].toLowerCase()),e[c]=d,"o"===b[1]&&V(a[d])});a._hungarianMap=e}function G(a,b,c){a._hungarianMap||V(a);var e;g.each(b,function(d){e=a._hungarianMap[d];if(e!==l&&(c||b[e]===l))"o"===e.charAt(0)?(b[e]||(b[e]={}),g.extend(!0,b[e],b[d]),G(a[e],b[e],c)):b[e]=b[d]})}function O(a){var b=p.defaults.oLanguage,c=a.sZeroRecords; + !a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&D(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&D(a,a,"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){z(a,"ordering","bSort");z(a,"orderMulti","bSortMulti");z(a,"orderClasses","bSortClasses");z(a,"orderCellsTop","bSortCellsTop");z(a,"order","aaSorting");z(a,"orderFixed","aaSortingFixed");z(a,"paging","bPaginate"); + z(a,"pagingType","sPaginationType");z(a,"pageLength","iDisplayLength");z(a,"searching","bFilter");if(a=a.aoSearchCols)for(var b=0,c=a.length;b").css({position:"absolute",top:0,left:0,height:1,width:1,overflow:"hidden"}).append(g("
").css({position:"absolute",top:1,left:1,width:100, + overflow:"scroll"}).append(g('
').css({width:"100%",height:10}))).appendTo("body"),c=b.find(".test");a.bScrollOversize=100===c[0].offsetWidth;a.bScrollbarLeft=1!==c.offset().left;b.remove()}function gb(a,b,c,e,d,f){var h,i=!1;c!==l&&(h=c,i=!0);for(;e!==d;)a.hasOwnProperty(e)&&(h=i?b(h,a[e],e,a):a[e],i=!0,e+=f);return h}function Ea(a,b){var c=p.defaults.column,e=a.aoColumns.length,c=g.extend({},p.models.oColumn,c,{nTh:b?b:P.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML: + "",aDataSort:c.aDataSort?c.aDataSort:[e],mData:c.mData?c.mData:e,idx:e});a.aoColumns.push(c);c=a.aoPreSearchCols;c[e]=g.extend({},p.models.oSearch,c[e]);ja(a,e,null)}function ja(a,b,c){var b=a.aoColumns[b],e=a.oClasses,d=g(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=d.attr("width")||null;var f=(d.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==l&&null!==c&&(eb(c),G(p.defaults.column,c),c.mDataProp!==l&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&& +!c.sClass&&(c.sClass=c.className),g.extend(b,c),D(b,c,"sWidth","sWidthOrig"),"number"===typeof c.iDataSort&&(b.aDataSort=[c.iDataSort]),D(b,c,"aDataSort"));var h=b.mData,i=W(h),j=b.mRender?W(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=g.isPlainObject(h)&&(c(h.sort)||c(h.type)||c(h.filter));b.fnGetData=function(a,b,c){var e=i(a,b,l,c);return j&&b?j(e,b,a,c):e};b.fnSetData=function(a,b,c){return Q(h)(a,b,c)};"number"!==typeof h&&(a._rowReadObject=!0);a.oFeatures.bSort|| +(b.bSortable=!1,d.addClass(e.sSortableNone));a=-1!==g.inArray("asc",b.asSorting);c=-1!==g.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=e.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=e.sSortableAsc,b.sSortingClassJUI=e.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=e.sSortableDesc,b.sSortingClassJUI=e.sSortJUIDescAllowed):(b.sSortingClass=e.sSortable,b.sSortingClassJUI=e.sSortJUI)}function X(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Fa(a);for(var c=0,e=b.length;c< +e;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&Y(a);u(a,null,"column-sizing",[a])}function ka(a,b){var c=Z(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=Z(a,"bVisible"),c=g.inArray(b,c);return-1!==c?c:null}function aa(a){return Z(a,"bVisible").length}function Z(a,b){var c=[];g.map(a.aoColumns,function(a,d){a[b]&&c.push(d)});return c}function Ga(a){var b=a.aoColumns,c=a.aoData,e=p.ext.type.detect,d,f,h,i,j,g,m,o,k;d=0;for(f=b.length;do[f])e(m.length+o[f],n);else if("string"===typeof o[f]){i=0;for(j=m.length;ib&&a[d]--; -1!=e&&c===l&& +a.splice(e,1)}function ca(a,b,c,e){var d=a.aoData[b],f,h=function(c,f){for(;c.childNodes.length;)c.removeChild(c.firstChild);c.innerHTML=v(a,b,f,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===d.src)d._aData=ma(a,d,e,e===l?l:d._aData).data;else{var i=d.anCells;if(i)if(e!==l)h(i[e],e);else{c=0;for(f=i.length;c").appendTo(h));b=0;for(c= + m.length;btr").attr("role","row");g(h).find(">tr>th, >tr>td").addClass(n.sHeaderTH);g(i).find(">tr>th, >tr>td").addClass(n.sFooterTH);if(null!==i){a=a.aoFooter[0];b=0;for(c=a.length;b=a.fnRecordsDisplay()?0:h,a.iInitDisplayStart=-1);var h=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading= + !1,a.iDraw++,B(a,!1);else if(i){if(!a.bDestroying&&!jb(a))return}else a.iDraw++;if(0!==j.length){f=i?a.aoData.length:n;for(i=i?0:h;i",{"class":d? + e[0]:""}).append(g("",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];u(a,"aoHeaderCallback","header",[g(a.nTHead).children("tr")[0],Ka(a),h,n,j]);u(a,"aoFooterCallback","footer",[g(a.nTFoot).children("tr")[0],Ka(a),h,n,j]);e=g(a.nTBody);e.children().detach();e.append(g(b));u(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function M(a,b){var c=a.oFeatures,e=c.bFilter;c.bSort&&kb(a);e?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice(); + !0!==b&&(a._iDisplayStart=0);a._drawHold=b;L(a);a._drawHold=!1}function lb(a){var b=a.oClasses,c=g(a.nTable),c=g("
").insertBefore(c),e=a.oFeatures,d=g("
",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=d[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),h,i,j,n,m,o,k=0;k")[0];n=f[k+1];if("'"==n||'"'==n){m="";for(o=2;f[k+o]!=n;)m+=f[k+o],o++;"H"==m?m=b.sJUIHeader: +"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),j.id=n[0].substr(1,n[0].length-1),j.className=n[1]):"#"==m.charAt(0)?j.id=m.substr(1,m.length-1):j.className=m;k+=o}d.append(j);d=g(j)}else if(">"==i)d=d.parent();else if("l"==i&&e.bPaginate&&e.bLengthChange)h=mb(a);else if("f"==i&&e.bFilter)h=nb(a);else if("r"==i&&e.bProcessing)h=ob(a);else if("t"==i)h=pb(a);else if("i"==i&&e.bInfo)h=qb(a);else if("p"==i&&e.bPaginate)h=rb(a);else if(0!==p.ext.feature.length){j=p.ext.feature;o=0;for(n=j.length;o< +n;o++)if(i==j[o].cFeature){h=j[o].fnInit(a);break}}h&&(j=a.aanFeatures,j[i]||(j[i]=[]),j[i].push(h),d.append(h))}c.replaceWith(d)}function da(a,b){var c=g(b).children("tr"),e,d,f,h,i,j,n,m,o,k;a.splice(0,a.length);f=0;for(j=c.length;f',i=e.sSearch,i=i.match(/_INPUT_/)?i.replace("_INPUT_",h):i+h,b=g("
",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(g("
").addClass(b.sLength);a.aanFeatures.l||(j[0].id=c+"_length");j.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",d[0].outerHTML));g("select",j).val(a._iDisplayLength).bind("change.DT", + function(){Qa(a,g(this).val());L(a)});g(a.nTable).bind("length.dt.DT",function(b,c,f){a===c&&g("select",j).val(f)});return j[0]}function rb(a){var b=a.sPaginationType,c=p.ext.pager[b],e="function"===typeof c,d=function(a){L(a)},b=g("
").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;e||c.fnInit(a,b,d);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(e){var b=a._iDisplayStart,g=a._iDisplayLength,n=a.fnRecordsDisplay(),m=-1===g,b=m?0:Math.ceil(b/g),g=m?1:Math.ceil(n/ + g),n=c(b,g),o,m=0;for(o=f.p.length;mf&&(e=0)):"first"==b?e=0:"previous"==b?(e=0<=d?e-d:0,0>e&&(e=0)):"next"==b?e+d",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function B(a,b){a.oFeatures.bProcessing&&g(a.aanFeatures.r).css("display",b?"block":"none");u(a,null,"processing",[a,b])}function pb(a){var b=g(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var e=c.sX,d=c.sY,f=a.oClasses,h=b.children("caption"),i=h.length?h[0]._captionSide:null, + j=g(b[0].cloneNode(!1)),n=g(b[0].cloneNode(!1)),m=b.children("tfoot");c.sX&&"100%"===b.attr("width")&&b.removeAttr("width");m.length||(m=null);c=g("
",{"class":f.sScrollWrapper}).append(g("
",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:e?!e?null:s(e):"100%"}).append(g("
",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(j.removeAttr("id").css("margin-left",0).append("top"===i?h:null).append(b.children("thead"))))).append(g("
", + {"class":f.sScrollBody}).css({overflow:"auto",height:!d?null:s(d),width:!e?null:s(e)}).append(b));m&&c.append(g("
",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:e?!e?null:s(e):"100%"}).append(g("
",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===i?h:null).append(b.children("tfoot")))));var b=c.children(),o=b[0],f=b[1],k=m?b[2]:null;e&&g(f).scroll(function(){var a=this.scrollLeft;o.scrollLeft=a;m&&(k.scrollLeft=a)});a.nScrollHead= + o;a.nScrollBody=f;a.nScrollFoot=k;a.aoDrawCallback.push({fn:Y,sName:"scrolling"});return c[0]}function Y(a){var b=a.oScroll,c=b.sX,e=b.sXInner,d=b.sY,f=b.iBarWidth,h=g(a.nScrollHead),i=h[0].style,j=h.children("div"),n=j[0].style,m=j.children("table"),j=a.nScrollBody,o=g(j),k=j.style,l=g(a.nScrollFoot).children("div"),p=l.children("table"),r=g(a.nTHead),q=g(a.nTable),t=q[0],N=t.style,J=a.nTFoot?g(a.nTFoot):null,u=a.oBrowser,w=u.bScrollOversize,y,v,x,K,z,A=[],B=[],C=[],D,E=function(a){a=a.style;a.paddingTop= + "0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};q.children("thead, tfoot").remove();z=r.clone().prependTo(q);y=r.find("tr");x=z.find("tr");z.find("th, td").removeAttr("tabindex");J&&(K=J.clone().prependTo(q),v=J.find("tr"),K=K.find("tr"));c||(k.width="100%",h[0].style.width="100%");g.each(pa(a,z),function(b,c){D=ka(a,b);c.style.width=a.aoColumns[D].sWidth});J&&F(function(a){a.style.width=""},K);b.bCollapse&&""!==d&&(k.height=o[0].offsetHeight+r[0].offsetHeight+"px"); + h=q.outerWidth();if(""===c){if(N.width="100%",w&&(q.find("tbody").height()>j.offsetHeight||"scroll"==o.css("overflow-y")))N.width=s(q.outerWidth()-f)}else""!==e?N.width=s(e):h==o.width()&&o.height()h-f&&(N.width=s(h))):N.width=s(h);h=q.outerWidth();F(E,x);F(function(a){C.push(a.innerHTML);A.push(s(g(a).css("width")))},x);F(function(a,b){a.style.width=A[b]},y);g(x).height(0);J&&(F(E,K),F(function(a){B.push(s(g(a).css("width")))},K),F(function(a,b){a.style.width= + B[b]},v),g(K).height(0));F(function(a,b){a.innerHTML='
'+C[b]+"
";a.style.width=A[b]},x);J&&F(function(a,b){a.innerHTML="";a.style.width=B[b]},K);if(q.outerWidth()j.offsetHeight||"scroll"==o.css("overflow-y")?h+f:h;if(w&&(j.scrollHeight>j.offsetHeight||"scroll"==o.css("overflow-y")))N.width=s(v-f);(""===c||""!==e)&&R(a,1,"Possible column misalignment",6)}else v="100%";k.width=s(v);i.width=s(v);J&&(a.nScrollFoot.style.width= + s(v));!d&&w&&(k.height=s(t.offsetHeight+f));d&&b.bCollapse&&(k.height=s(d),b=c&&t.offsetWidth>j.offsetWidth?f:0,t.offsetHeightj.clientHeight||"scroll"==o.css("overflow-y");u="padding"+(u.bScrollbarLeft?"Left":"Right");n[u]=m?f+"px":"0px";J&&(p[0].style.width=s(b),l[0].style.width=s(b),l[0].style[u]=m?f+"px":"0px");o.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}function F(a, + b,c){for(var e=0,d=0,f=b.length,h,g;d"));i.find("tfoot th, tfoot td").css("width","");var p=i.find("tbody tr"),j=pa(a,i.find("thead")[0]);for(k=0;k").css("width",s(a)).appendTo(b||P.body),e=c[0].offsetWidth;c.remove();return e}function Eb(a,b){var c=a.oScroll;if(c.sX||c.sY)c=!c.sX?c.iBarWidth:0,b.style.width=s(g(b).outerWidth()-c)}function Db(a,b){var c=Fb(a,b);if(0>c)return null; + var e=a.aoData[c];return!e.nTr?g("").html(v(a,c,b,"display"))[0]:e.anCells[b]}function Fb(a,b){for(var c,e=-1,d=-1,f=0,h=a.aoData.length;fe&&(e=c.length,d=f);return d}function s(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function Gb(){if(!p.__scrollbarWidth){var a=g("

").css({width:"100%",height:200,padding:0})[0],b=g("

").css({position:"absolute",top:0,left:0,width:200,height:150,padding:0, + overflow:"hidden",visibility:"hidden"}).append(a).appendTo("body"),c=a.offsetWidth;b.css("overflow","scroll");a=a.offsetWidth;c===a&&(a=b[0].clientWidth);b.remove();p.__scrollbarWidth=c-a}return p.__scrollbarWidth}function T(a){var b,c,e=[],d=a.aoColumns,f,h,i,j;b=a.aaSortingFixed;c=g.isPlainObject(b);var n=[];f=function(a){a.length&&!g.isArray(a[0])?n.push(a):n.push.apply(n,a)};g.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ad?1:0,0!==c)return"asc"===g.dir?c:-c;c=e[a];d=e[b];return cd?1:0}):j.sort(function(a,b){var c,h,g,i,j=n.length,l=f[a]._aSortData,p=f[b]._aSortData;for(g=0;gh?1:0})}a.bSorted=!0}function Ib(a){for(var b,c,e=a.aoColumns,d=T(a),a=a.oLanguage.oAria,f=0,h=e.length;f/g,"");var j=c.nTh;j.removeAttribute("aria-sort");c.bSortable&&(0d?d+1:3));d=0;for(f=e.length;dd?d+1:3))}a.aLastSort=e}function Hb(a,b){var c=a.aoColumns[b],e=p.ext.order[c.sSortDataType],d;e&&(d=e.call(a.oInstance,a,b,$(a,b)));for(var f,h=p.ext.type.order[c.sType+"-pre"],g=0,j=a.aoData.length;g< + j;g++)if(c=a.aoData[g],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||e)f=e?d[g]:v(a,g,b,"sort"),c._aSortData[b]=h?h(f):f}function xa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:g.extend(!0,[],a.aaSorting),search:yb(a.oPreviousSearch),columns:g.map(a.aoColumns,function(b,e){return{visible:b.bVisible,search:yb(a.aoPreSearchCols[e])}})};u(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance, + a,b)}}function Jb(a){var b,c,e=a.aoColumns;if(a.oFeatures.bStateSave){var d=a.fnStateLoadCallback.call(a.oInstance,a);if(d&&d.time&&(b=u(a,"aoStateLoadParams","stateLoadParams",[a,d]),-1===g.inArray(!1,b)&&(b=a.iStateDuration,!(0=e.length?[0,c[1]]:c)});g.extend(a.oPreviousSearch, + zb(d.search));b=0;for(c=d.columns.length;b=c&&(b=c-e);b-=b%e;if(-1===e||0>b)b=0;a._iDisplayStart=b}function Oa(a,b){var c=a.renderer,e=p.ext.renderer[b];return g.isPlainObject(c)&& + c[b]?e[c[b]]||e._:"string"===typeof c?e[c]||e._:e._}function A(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Va(a,b){var c=[],c=Lb.numbers_length,e=Math.floor(c/2);b<=c?c=U(0,b):a<=e?(c=U(0,c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-e?c=U(b-(c-2),b):(c=U(a-1,a+2),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){g.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Wa)},"html-num":function(b){return za(b, + a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Wa)}},function(b,c){w.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(w.type.search[b+a]=w.type.search.html)})}function Mb(a){return function(){var b=[ya(this[p.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return p.ext.internal[a].apply(this,b)}}var p,w,q,r,t,Xa={},Nb=/[\r\n]/g,Aa=/<.*?>/g,$b=/^[\w\+\-]/,ac=/[\w\+\-]$/,Xb=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Wa=/[',$\u00a3\u20ac\u00a5%\u2009\u202F]/g, + H=function(a){return!a||!0===a||"-"===a?!0:!1},Ob=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Pb=function(a,b){Xa[b]||(Xa[b]=RegExp(ua(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var e="string"===typeof a;b&&e&&(a=Pb(a,b));c&&e&&(a=a.replace(Wa,""));return H(a)||!isNaN(parseFloat(a))&&isFinite(a)},Qb=function(a,b,c){return H(a)?!0:!(H(a)||"string"===typeof a)?null:Ya(a.replace(Aa,""),b,c)?!0:null},C=function(a, + b,c){var e=[],d=0,f=a.length;if(c!==l)for(;d")[0],Yb=va.textContent!==l,Zb=/<.*?>/g;p=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new q(ya(this[w.iApiIndex])):new q(this)};this.fnAddData=function(a,b){var c=this.api(!0),e=g.isArray(a)&&(g.isArray(a[0])||g.isPlainObject(a[0]))? + c.rows.add(a):c.row.add(a);(b===l||b)&&c.draw();return e.flatten().toArray()};this.fnAdjustColumnSizing=function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],e=c.oScroll;a===l||a?b.draw(!1):(""!==e.sX||""!==e.sY)&&Y(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===l||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var e=this.api(!0),a=e.rows(a),d=a.settings()[0],g=d.aoData[a[0][0]];a.remove();b&&b.call(this,d,g); + (c===l||c)&&e.draw();return g};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(!a)};this.fnFilter=function(a,b,c,e,d,g){d=this.api(!0);null===b||b===l?d.search(a,c,e,g):d.column(b).search(a,c,e,g);d.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==l){var e=a.nodeName?a.nodeName.toLowerCase():"";return b!==l||"td"==e||"th"==e?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0); + return a!==l?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===l||b)&&c.draw(!1)};this.fnSetColumnVis= + function(a,b,c){a=this.api(!0).column(a).visible(b);(c===l||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[w.iApiIndex])};this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,e,d){var g=this.api(!0);c===l||null===c?g.row(b).data(a):g.cell(b,c).data(a);(d===l||d)&&g.columns.adjust();(e===l||e)&&g.draw();return 0};this.fnVersionCheck=w.fnVersionCheck;var b=this,c=a===l,e=this.length; + c&&(a={});this.oApi=this.internal=w.internal;for(var d in p.ext.internal)d&&(this[d]=Mb(d));this.each(function(){var d={},d=1t<"F"ip>'),k.renderer)? + g.isPlainObject(k.renderer)&&!k.renderer.header&&(k.renderer.header="jqueryui"):k.renderer="jqueryui":g.extend(j,p.ext.classes,d.oClasses);g(this).addClass(j.sTable);if(""!==k.oScroll.sX||""!==k.oScroll.sY)k.oScroll.iBarWidth=Gb();!0===k.oScroll.sX&&(k.oScroll.sX="100%");k.iInitDisplayStart===l&&(k.iInitDisplayStart=d.iDisplayStart,k._iDisplayStart=d.iDisplayStart);null!==d.iDeferLoading&&(k.bDeferLoading=!0,h=g.isArray(d.iDeferLoading),k._iRecordsDisplay=h?d.iDeferLoading[0]:d.iDeferLoading,k._iRecordsTotal= + h?d.iDeferLoading[1]:d.iDeferLoading);var r=k.oLanguage;g.extend(!0,r,d.oLanguage);""!==r.sUrl&&(g.ajax({dataType:"json",url:r.sUrl,success:function(a){O(a);G(m.oLanguage,a);g.extend(true,r,a);ga(k)},error:function(){ga(k)}}),n=!0);null===d.asStripeClasses&&(k.asStripeClasses=[j.sStripeOdd,j.sStripeEven]);var h=k.asStripeClasses,q=g("tbody tr:eq(0)",this);-1!==g.inArray(!0,g.map(h,function(a){return q.hasClass(a)}))&&(g("tbody tr",this).removeClass(h.join(" ")),k.asDestroyStripes=h.slice());var o= + [],s,h=this.getElementsByTagName("thead");0!==h.length&&(da(k.aoHeader,h[0]),o=pa(k));if(null===d.aoColumns){s=[];h=0;for(i=o.length;h").appendTo(this));k.nTHead=i[0];i=g(this).children("tbody");0===i.length&&(i=g("").appendTo(this));k.nTBody=i[0];i=g(this).children("tfoot");if(0===i.length&&0").appendTo(this);0===i.length||0===i.children().length?g(this).addClass(j.sNoFooter): + 0a?new q(b[a],this[a]):null},filter:function(a){var b=[];if(y.filter)b=y.filter.call(this,a,this);else for(var c=0,e=this.length;c").addClass(b);g("td",c).addClass(b).html(a)[0].colSpan=aa(e);d.push(c[0])}};if(g.isArray(a)||a instanceof g)for(var h=0,i=a.length;h=0?b:h.length+b];if(typeof a==="function"){var d=Ba(c,f);return g.map(h,function(b,f){return a(f,Vb(c,f,0,0,d),j[f])?f:null})}var k=typeof a==="string"?a.match(cc):"";if(k)switch(k[2]){case "visIdx":case "visible":b= + parseInt(k[1],10);if(b<0){var l=g.map(h,function(a,b){return a.bVisible?b:null});return[l[l.length+b]]}return[ka(c,b)];case "name":return g.map(i,function(a,b){return a===k[1]?b:null})}else return g(j).filter(a).map(function(){return g.inArray(this,j)}).toArray()})},1);c.selector.cols=a;c.selector.opts=b;return c});t("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});t("columns().footer()","column().footer()",function(){return this.iterator("column", + function(a,b){return a.aoColumns[b].nTf},1)});t("columns().data()","column().data()",function(){return this.iterator("column-rows",Vb,1)});t("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});t("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,e,d,f){return ha(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});t("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows", + function(a,b,c,e,d){return ha(a.aoData,d,"anCells",b)},1)});t("columns().visible()","column().visible()",function(a,b){return this.iterator("column",function(c,e){if(a===l)return c.aoColumns[e].bVisible;var d=c.aoColumns,f=d[e],h=c.aoData,i,j,n;if(a!==l&&f.bVisible!==a){if(a){var m=g.inArray(!0,C(d,"bVisible"),e+1);i=0;for(j=h.length;ie;return!0};p.isDataTable=p.fnIsDataTable=function(a){var b=g(a).get(0),c=!1;g.each(p.settings,function(a,d){if(d.nTable===b||d.nScrollHead===b||d.nScrollFoot===b)c=!0});return c};p.tables=p.fnTables=function(a){return g.map(p.settings,function(b){if(!a||a&&g(b.nTable).is(":visible"))return b.nTable})};p.util={throttle:ta,escapeRegex:ua}; + p.camelToHungarian=G;r("$()",function(a,b){var c=this.rows(b).nodes(),c=g(c);return g([].concat(c.filter(a).toArray(),c.find(a).toArray()))});g.each(["on","one","off"],function(a,b){r(b+"()",function(){var a=Array.prototype.slice.call(arguments);a[0].match(/\.dt\b/)||(a[0]+=".dt");var e=g(this.tables().nodes());e[b].apply(e,a);return this})});r("clear()",function(){return this.iterator("table",function(a){na(a)})});r("settings()",function(){return new q(this.context,this.context)});r("data()",function(){return this.iterator("table", + function(a){return C(a.aoData,"_aData")}).flatten()});r("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,e=b.oClasses,d=b.nTable,f=b.nTBody,h=b.nTHead,i=b.nTFoot,j=g(d),f=g(f),l=g(b.nTableWrapper),m=g.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;u(b,"aoDestroyCallback","destroy",[b]);a||(new q(b)).columns().visible(!0);l.unbind(".DT").find(":not(tbody *)").unbind(".DT");g(Da).unbind(".DT-"+b.sInstance);d!=h.parentNode&&(j.children("thead").detach(), + j.append(h));i&&d!=i.parentNode&&(j.children("tfoot").detach(),j.append(i));j.detach();l.detach();b.aaSorting=[];b.aaSortingFixed=[];wa(b);g(m).removeClass(b.asStripeClasses.join(" "));g("th, td",h).removeClass(e.sSortable+" "+e.sSortableAsc+" "+e.sSortableDesc+" "+e.sSortableNone);b.bJUI&&(g("th span."+e.sSortIcon+", td span."+e.sSortIcon,h).detach(),g("th, td",h).each(function(){var a=g("div."+e.sSortJUIWrapper,this);g(this).append(a.contents());a.detach()}));!a&&c&&c.insertBefore(d,b.nTableReinsertBefore); + f.children().detach();f.append(m);j.css("width",b.sDestroyWidth).removeClass(e.sTable);(o=b.asDestroyStripes.length)&&f.children().each(function(a){g(this).addClass(b.asDestroyStripes[a%o])});c=g.inArray(b,p.settings);-1!==c&&p.settings.splice(c,1)})});p.version="1.10.4";p.settings=[];p.models={};p.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};p.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null};p.models.oColumn= + {idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};p.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null, + aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null, + fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null, + iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"", + sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:g.extend({},p.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null};V(p.defaults);p.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0, + bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};V(p.defaults.column);p.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null}, + oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[], + sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:l,oAjaxData:l,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0, + _iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==A(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==A(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,e=this.aiDisplay.length,d=this.oFeatures,f=d.bPaginate;return d.bServerSide?!1===f||-1===a?b+e: + Math.min(b+a,this._iRecordsDisplay):!f||c>e||-1===a?e:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{}};p.ext=w={classes:{},errMode:"alert",feature:[],search:[],internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:p.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:p.version};g.extend(w,{afnFiltering:w.search,aTypes:w.type.detect,ofnSearch:w.type.search, + oSort:w.type.order,afnSortData:w.order,aoFeatures:w.feature,oApi:w.internal,oStdClasses:w.classes,oPagination:w.pager});g.extend(p.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing", + sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"", + sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ca="",Ca="",E=Ca+"ui-state-default",ia=Ca+"css_right ui-icon ui-icon-",Wb=Ca+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";g.extend(p.ext.oJUIClasses,p.ext.classes,{sPageButton:"fg-button ui-button "+E,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_", + sSortAsc:E+" sorting_asc",sSortDesc:E+" sorting_desc",sSortable:E+" sorting",sSortableAsc:E+" sorting_asc_disabled",sSortableDesc:E+" sorting_desc_disabled",sSortableNone:E+" sorting_disabled",sSortJUIAsc:ia+"triangle-1-n",sSortJUIDesc:ia+"triangle-1-s",sSortJUI:ia+"carat-2-n-s",sSortJUIAscAllowed:ia+"carat-1-n",sSortJUIDescAllowed:ia+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+E,sScrollFoot:"dataTables_scrollFoot "+E, + sHeaderTH:E,sFooterTH:E,sJUIHeader:Wb+" ui-corner-tl ui-corner-tr",sJUIFooter:Wb+" ui-corner-bl ui-corner-br"});var Lb=p.ext.pager;g.extend(Lb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},simple_numbers:function(a,b){return["previous",Va(a,b),"next"]},full_numbers:function(a,b){return["first","previous",Va(a,b),"next","last"]},_numbers:Va,numbers_length:7});g.extend(!0,p.ext.renderer,{pageButton:{_:function(a,b,c,e,d,f){var h=a.oClasses,i= + a.oLanguage.oPaginate,j,l,m=0,o=function(b,e){var k,p,r,q,s=function(b){Sa(a,b.data.action,true)};k=0;for(p=e.length;k").appendTo(b);o(r,q)}else{l=j="";switch(q){case "ellipsis":b.append("");break;case "first":j=i.sFirst;l=q+(d>0?"":" "+h.sPageButtonDisabled);break;case "previous":j=i.sPrevious;l=q+(d>0?"":" "+h.sPageButtonDisabled);break;case "next":j=i.sNext;l=q+(d",{"class":h.sPageButton+" "+l,"aria-controls":a.sTableId,"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof q==="string"?a.sTableId+"_"+q:null}).html(j).appendTo(b);Ua(r,{action:q},s);m++}}}};try{var k=g(P.activeElement).data("dt-idx");o(g(b).empty(),e);k!==null&&g(b).find("[data-dt-idx="+k+"]").focus()}catch(p){}}}});g.extend(p.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal; + return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&(!$b.test(a)||!ac.test(a)))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||H(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Qb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Qb(a,c,!0)?"html-num-fmt"+c:null},function(a){return H(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);g.extend(p.ext.type.search, + {html:function(a){return H(a)?a:"string"===typeof a?a.replace(Nb," ").replace(Aa,""):""},string:function(a){return H(a)?a:"string"===typeof a?a.replace(Nb," "):a}});var za=function(a,b,c,e){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Pb(a,b));a.replace&&(c&&(a=a.replace(c,"")),e&&(a=a.replace(e,"")));return 1*a};g.extend(w.type.order,{"date-pre":function(a){return Date.parse(a)||0},"html-pre":function(a){return H(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return H(a)? + "":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return ab?1:0},"string-desc":function(a,b){return ab?-1:0}});cb("");g.extend(!0,p.ext.renderer,{header:{_:function(a,b,c,e){g(a.nTable).on("order.dt.DT",function(d,f,h,g){if(a===f){d=c.idx;b.removeClass(c.sSortingClass+" "+e.sSortAsc+" "+e.sSortDesc).addClass(g[d]=="asc"?e.sSortAsc:g[d]=="desc"?e.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,e){g("
").addClass(e.sSortJUIWrapper).append(b.contents()).append(g("").addClass(e.sSortIcon+ + " "+c.sSortingClassJUI)).appendTo(b);g(a.nTable).on("order.dt.DT",function(d,f,g,i){if(a===f){d=c.idx;b.removeClass(e.sSortAsc+" "+e.sSortDesc).addClass(i[d]=="asc"?e.sSortAsc:i[d]=="desc"?e.sSortDesc:c.sSortingClass);b.find("span."+e.sSortIcon).removeClass(e.sSortJUIAsc+" "+e.sSortJUIDesc+" "+e.sSortJUI+" "+e.sSortJUIAscAllowed+" "+e.sSortJUIDescAllowed).addClass(i[d]=="asc"?e.sSortJUIAsc:i[d]=="desc"?e.sSortJUIDesc:c.sSortingClassJUI)}})}}});p.render={number:function(a,b,c,e){return{display:function(d){var f= + 0>d?"-":"",d=Math.abs(parseFloat(d)),g=parseInt(d,10),d=c?b+(d-g).toFixed(c).substring(2):"";return f+(e||"")+g.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+d}}}};g.extend(p.ext.internal,{_fnExternApiFunc:Mb,_fnBuildAjax:qa,_fnAjaxUpdate:jb,_fnAjaxParameters:sb,_fnAjaxUpdateDraw:tb,_fnAjaxDataSrc:ra,_fnAddColumn:Ea,_fnColumnOptions:ja,_fnAdjustColumnSizing:X,_fnVisibleToColumnIndex:ka,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:Z,_fnColumnTypes:Ga,_fnApplyColumnDefs:hb,_fnHungarianMap:V, + _fnCamelToHungarian:G,_fnLanguageCompat:O,_fnBrowserDetect:fb,_fnAddData:I,_fnAddTr:la,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==l?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return g.inArray(c,a.aoData[b].anCells)},_fnGetCellData:v,_fnSetCellData:Ha,_fnSplitObjNotation:Ja,_fnGetObjectDataFn:W,_fnSetObjectDataFn:Q,_fnGetDataMaster:Ka,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:ma,_fnCreateTr:Ia,_fnBuildHead:ib,_fnDrawHead:ea,_fnDraw:L,_fnReDraw:M, + _fnAddOptionsHtml:lb,_fnDetectHeader:da,_fnGetUniqueThs:pa,_fnFeatureHtmlFilter:nb,_fnFilterComplete:fa,_fnFilterCustom:wb,_fnFilterColumn:vb,_fnFilter:ub,_fnFilterCreateSearch:Pa,_fnEscapeRegex:ua,_fnFilterData:xb,_fnFeatureHtmlInfo:qb,_fnUpdateInfo:Ab,_fnInfoMacros:Bb,_fnInitialise:ga,_fnInitComplete:sa,_fnLengthChange:Qa,_fnFeatureHtmlLength:mb,_fnFeatureHtmlPaginate:rb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:ob,_fnProcessingDisplay:B,_fnFeatureHtmlTable:pb,_fnScrollDraw:Y,_fnApplyToChildren:F, + _fnCalculateColumnWidths:Fa,_fnThrottle:ta,_fnConvertToWidth:Cb,_fnScrollingWidthAdjust:Eb,_fnGetWidestNode:Db,_fnGetMaxLenString:Fb,_fnStringToCss:s,_fnScrollBarWidth:Gb,_fnSortFlatten:T,_fnSort:kb,_fnSortAria:Ib,_fnSortListener:Ta,_fnSortAttachListener:Na,_fnSortingClasses:wa,_fnSortData:Hb,_fnSaveState:xa,_fnLoadState:Jb,_fnSettingsFromNode:ya,_fnLog:R,_fnMap:D,_fnBindAction:Ua,_fnCallbackReg:x,_fnCallbackFire:u,_fnLengthOverflow:Ra,_fnRenderer:Oa,_fnDataSource:A,_fnRowAttributes:La,_fnCalculateEnd:function(){}}); + g.fn.dataTable=p;g.fn.dataTableSettings=p.settings;g.fn.dataTableExt=p.ext;g.fn.DataTable=function(a){return g(this).dataTable(a).api()};g.each(p,function(a,b){g.fn.DataTable[a]=b});return g.fn.dataTable};"function"===typeof define&&define.amd?define("datatables",["jquery"],O):"object"===typeof exports?O(require("jquery")):jQuery&&!jQuery.fn.dataTable&&O(jQuery)})(window,document); diff --git a/app/scripts/ucsd/decorator-jsonp.js b/app/scripts/ucsd/decorator-jsonp.js new file mode 100644 index 0000000..e6d0235 --- /dev/null +++ b/app/scripts/ucsd/decorator-jsonp.js @@ -0,0 +1,53 @@ +(function () { + var scriptNode = $('script[data-decorator-site]'), + site = scriptNode[0].getAttribute('data-decorator-site'), + elem = scriptNode[0].getAttribute('data-decorator-elem'), + siteURL = site + "/_decorator-html/menu.json"; + + /* function: parseElem + * + * Input: element list and element component query + * + * Description: takes in user input list of elements: header, footer, and menu + * returns list of booleans + * + * return type: bool + * */ + function parseElem (elemList, elementComponent) { + var elemResult = elemList.replace(/\s/g, "").split(","); + + for(var i = 0; i < elemResult.length; i++) { + if(elementComponent === elemResult[i]) { + return true; + } + } + + return false; + } + + // ToDo: JSON.parse(elem) needs to be parsed through a function + function renderDecorator () { + $.ajax({ + type: 'GET', + url: siteURL, + async: false, + contentType: "application/json", + dataType: 'jsonp', + jsonpCallback: 'jsonCallback', + success: function (json) { + $("nav div.layout-container").append(json["decorator.menu"]); + + // async load base script to allow for dropdown + var s = document.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = 'scripts/base-min.js'; + var x = document.getElementsByTagName('script')[0]; + x.parentNode.insertBefore(s, x); + } + }); + } + + + renderDecorator(); +})(); diff --git a/app/scripts/ucsd/drawer.js b/app/scripts/ucsd/drawer.js new file mode 100755 index 0000000..0a6eb55 --- /dev/null +++ b/app/scripts/ucsd/drawer.js @@ -0,0 +1,97 @@ +/** + * drawer + */ + $(document).ready(function() { + $('.drawer').each(function() { + var drawer = $(this); + + /*set aria-expand attribute to h2 links*/ + + $('.drawer > h2 > a').attr('aria-expanded','false') + + /* create wrapper class */ + drawer.wrap('
'); + var drawerWrapper = drawer.parent(); + + /* insert expand all links */ + var link = ''; + drawerWrapper.prepend(link); + drawerWrapper.append(link); + + /* build drawer */ + drawer.children("div").toggle(); + drawer.children("article").toggle(); // support CMS use of .drawer > article + + drawer.children("h2").click(function() { + $(this).toggleClass("expand"); + $(this).find('a').attr('aria-expanded', $(this).find('a').attr('aria-expanded') == 'true' ? 'false' : 'true'); + //$(this).find('a').attr('aria-label', $(this).find('a').attr('aria-label') == 'Drawer Is Expanded' ? 'Drawer Is Collapsed' : 'Drawer Is Expanded'); + $(this).next().toggle(); + if ($(this).hasClass("expand")) { + window.location.hash = $(this).find('a').text().replace(/\s/g, '-').substring(0, 31); + } + return false; + }); + + drawerWrapper.find(".drawer-toggle a").click(function() { + /* open or close drawers */ + if ($(this).hasClass("expand")) { + expandAll(drawerWrapper); + } else { + collapseAll(drawerWrapper); + } + + /* reset all toggle links */ + resetLink(drawerWrapper); + if (window.history && window.history.pushState) { + window.history.pushState('', '', window.location.pathname) + } else { + window.location.href = window.location.href.replace(/#.*$/, '#'); + } + return false; + }); + + /* open the drawer if the url points to this drawer */ + $(window).on('load',function() { + drawer.children("h2").each(function() { + if (window.location.hash == '#' + $(this).find('a').text().replace(/\s/g, '-').substring(0, 31)) { + var newPosition = $(this).offset(); + $(this).toggleClass('expand').next().toggle(); + setTimeout(function() { + window.scrollTo(0, newPosition.top); + }, 50); + } + }); + }); + }); + + /* expand all drawers */ + function expandAll(drawerWrapper) { + drawerWrapper.children(".drawer").children("h2").addClass("expand"); + drawerWrapper.children(".drawer").children("h2").children("a").attr("aria-expanded","true"); + drawerWrapper.children(".drawer").children("div").show(); + drawerWrapper.children(".drawer").children("article").show(); // support CMS use of .drawer > article + return false; + } + + /* close all drawers */ + function collapseAll(drawerWrapper) { + drawerWrapper.children(".drawer").children("h2").removeClass("expand"); + drawerWrapper.children(".drawer").children("h2").children("a").attr("aria-expanded","false"); + drawerWrapper.children(".drawer").children("div").hide(); + drawerWrapper.children(".drawer").children("article").hide(); // support CMS use of .drawer > article + return false; + } + + /* reset drawer toggle link */ + function resetLink(drawerWrapper) { + drawerWrapper.find(".drawer-toggle a").each(function() { + element = $(this); + if (element.hasClass("expand")) + element.html("Collapse All"); + else + element.html("Expand All"); + element.toggleClass("expand"); + }); + } +}); diff --git a/app/scripts/ucsd/flexslider-init.js b/app/scripts/ucsd/flexslider-init.js new file mode 100755 index 0000000..806dec6 --- /dev/null +++ b/app/scripts/ucsd/flexslider-init.js @@ -0,0 +1,117 @@ +(function($) { + $(document).ready(function() { + /* + * Note, there is currently a bug in flexslider when there are multiple + * slider on a page. if one particular slider disables pause/play and + * paging control, subsequent sliders with pause/play and paging enabled + * will not display the controls properly. + */ + $(".flexslider").each(function() { + var slider = $(this), flexCaption = $('.flex-caption'); + + /* + * default settings. enable auto slideshow. enable pause/play and + * paging control. disable direction control. + */ + var settings = { + controlNav: false, + directionNav: false, + nextText: ">", + prevText: "<" + }; + + /* + * update settings if pause/play and paging control is disabled. + */ + if (slider.has(".flex-controls").length > 0) { + settings = $.extend(settings, { + controlNav: true, + controlsContainer: ".flex-controls", + pausePlay: true, + slideshow: true + }); + } + + if (Modernizr.touch) { + settings = $.extend(settings, { + animation: "slide" + }); + + flexCaption.css({ + "display": "block", + "padding": "10px", + "left": "auto", + "width": "inherit", + "box-sizing": "border-box", + "-moz-box-sizing": "border-box", + "-webkit-box-sizing": "border-box", + "z-index": "9" + }); + + if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) { + settings = $.extend(settings, { + useCSS: false, + start: function(){ + flexCaption.css({ + "padding": "2%" + }); + }, + + before: function(){ + flexCaption.css({ + "width": "100%" + }); + }, + + after: function(){ + flexCaption.css({ + "width": "inherit" + }); + } + }); + } + } + /* + * update settings if alternative theme. + */ + if (slider.hasClass("alt")) { + settings = $.extend(settings, { + directionNav: true + }); + } + /* + * update settings if auto slideshow is disabled, enable direction + * control. + */ + if (slider.hasClass("noSlideShow")) { + settings = $.extend(settings, { + controlNav: false, + slideshow : false, + directionNav : true + }); + } + + if (slider.find('li').length == 1) { // Disable touch/controls/play if there's only one list item within the slider. + settings = $.extend(settings, { + touch: false, + controlNav: false, + pausePlay: false + }); + } + + if(typeof blinkPausePlay == 'function') { + blinkPausePlay(slider, settings); + } + + if(!(typeof blinkPausePlay == 'function')) { + $(this).flexslider(settings); + } + + if (Modernizr.touch) { + if (slider.has(".controls").length > 0) { + slider.children(".controls").appendTo(slider); + }; + }; + }); + }); +})(jQuery); \ No newline at end of file diff --git a/app/scripts/ucsd/footer.js b/app/scripts/ucsd/footer.js new file mode 100755 index 0000000..dcca057 --- /dev/null +++ b/app/scripts/ucsd/footer.js @@ -0,0 +1,17 @@ +/* initialize footer links */ +function initFooter(feedbackUrl) { + feedbackUrl = feedbackUrl + location.pathname; + var footerFeedback = '.footer-feedback'; + var feedback_url = "Feedback"; + $(footerFeedback).empty(); + $(footerFeedback).append(feedback_url); +}; + +/* Footer Year and Logout URL */ + +initCopyright(); +//initLogout('http://www.ucsd.edu'); diff --git a/app/scripts/ucsd/fullcalendar.min.js b/app/scripts/ucsd/fullcalendar.min.js new file mode 100755 index 0000000..343d907 --- /dev/null +++ b/app/scripts/ucsd/fullcalendar.min.js @@ -0,0 +1,8 @@ +/*! + * FullCalendar v2.2.5 + * Docs & License: http://arshaw.com/fullcalendar/ + * (c) 2013 Adam Shaw + */ +(function(t){"function"==typeof define&&define.amd?define(["jquery","moment"],t):t(jQuery,moment)})(function(t,e){function n(t){i(Ee,t)}function i(e){function n(n,s){t.isPlainObject(s)&&t.isPlainObject(e[n])&&!r(n)?e[n]=i({},e[n],s):void 0!==s&&(e[n]=s)}for(var s=1;arguments.length>s;s++)t.each(arguments[s],n);return e}function r(t){return/(Time|Duration)$/.test(t)}function s(t){var n=e.localeData||e.langData;return n.call(e,t)||n.call(e,"en")}function o(t,e){e.left&&t.css({"border-left-width":1,"margin-left":e.left-1}),e.right&&t.css({"border-right-width":1,"margin-right":e.right-1})}function l(t){t.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function a(){t("body").addClass("fc-not-allowed")}function u(){t("body").removeClass("fc-not-allowed")}function d(e,n,i){var r=Math.floor(n/e.length),s=Math.floor(n-r*(e.length-1)),o=[],l=[],a=[],u=0;c(e),e.each(function(n,i){var d=n===e.length-1?s:r,c=t(i).outerHeight(!0);d>c?(o.push(i),l.push(c),a.push(t(i).height())):u+=c}),i&&(n-=u,r=Math.floor(n/o.length),s=Math.floor(n-r*(o.length-1))),t(o).each(function(e,n){var i=e===o.length-1?s:r,u=l[e],d=a[e],c=i-(u-d);i>u&&t(n).height(c)})}function c(t){t.height("")}function h(e){var n=0;return e.find("> *").each(function(e,i){var r=t(i).outerWidth();r>n&&(n=r)}),n++,e.width(n),n}function f(t,e){return t.height(e).addClass("fc-scroller"),t[0].scrollHeight-1>t[0].clientHeight?!0:(g(t),!1)}function g(t){t.height("").removeClass("fc-scroller")}function p(e){var n=e.css("position"),i=e.parents().filter(function(){var e=t(this);return/(auto|scroll)/.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==n&&i.length?i:t(e[0].ownerDocument||document)}function m(t){var e=t.offset().left,n=e+t.width(),i=t.children(),r=i.offset().left,s=r+i.outerWidth();return{left:r-e,right:n-s}}function v(t){return 1==t.which&&!t.ctrlKey}function y(t,e){var n,i,r,s,o=t.start,l=t.end,a=e.start,u=e.end;return l>a&&u>o?(o>=a?(n=o.clone(),r=!0):(n=a.clone(),r=!1),u>=l?(i=l.clone(),s=!0):(i=u.clone(),s=!1),{start:n,end:i,isStart:r,isEnd:s}):void 0}function w(t,e){if(t=t||{},void 0!==t[e])return t[e];for(var n,i=e.split(/(?=[A-Z])/),r=i.length-1;r>=0;r--)if(n=t[i[r].toLowerCase()],void 0!==n)return n;return t["default"]}function E(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days"),ms:t.time()-n.time()})}function S(t,n){return e.duration({days:t.clone().stripTime().diff(n.clone().stripTime(),"days")})}function b(t,e){var n,i;for(n=0;ze.length>n&&(i=ze[n],!D(i,t,e));n++);return i}function D(t,n,i){var r;return r=null!=i?i.diff(n,t,!0):e.isDuration(n)?n.as(t):n.end.diff(n.start,t,!0),r>=1&&_(r)?r:!1}function C(t){return"[object Date]"===Object.prototype.toString.call(t)||t instanceof Date}function T(t){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(t)}function x(t){var e=function(){};return e.prototype=t,new e}function H(t,e){for(var n in t)R(t,n)&&(e[n]=t[n])}function R(t,e){return Le.call(t,e)}function k(e){return/undefined|null|boolean|number|string/.test(t.type(e))}function M(e,n,i){if(t.isFunction(e)&&(e=[e]),e){var r,s;for(r=0;e.length>r;r++)s=e[r].apply(n,i)||s;return s}}function F(){for(var t=0;arguments.length>t;t++)if(void 0!==arguments[t])return arguments[t]}function z(t){return(t+"").replace(/&/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"
")}function L(t){return t.replace(/&.*?;/g,"")}function P(t){return t.charAt(0).toUpperCase()+t.slice(1)}function V(t,e){return t-e}function _(t){return 0===t%1}function G(t,e){var n,i,r,s,o=function(){var l=+new Date-s;e>l&&l>0?n=setTimeout(o,e-l):(n=null,t.apply(r,i),n||(r=i=null))};return function(){r=this,i=arguments,s=+new Date,n||(n=setTimeout(o,e))}}function A(n,i,r){var s,o,l,a,u=n[0],d=1==n.length&&"string"==typeof u;return e.isMoment(u)?(a=e.apply(null,n),Y(u,a)):C(u)||void 0===u?a=e.apply(null,n):(s=!1,o=!1,d?Pe.test(u)?(u+="-01",n=[u],s=!0,o=!0):(l=Ve.exec(u))&&(s=!l[5],o=!0):t.isArray(u)&&(o=!0),a=i||s?e.utc.apply(e,n):e.apply(null,n),s?(a._ambigTime=!0,a._ambigZone=!0):r&&(o?a._ambigZone=!0:d&&a.zone(u))),a._fullCalendar=!0,a}function N(t,n){var i,r,s=!1,o=!1,l=t.length,a=[];for(i=0;l>i;i++)r=t[i],e.isMoment(r)||(r=De.moment.parseZone(r)),s=s||r._ambigTime,o=o||r._ambigZone,a.push(r);for(i=0;l>i;i++)r=a[i],n||!s||r._ambigTime?o&&!r._ambigZone&&(a[i]=r.clone().stripZone()):a[i]=r.clone().stripTime();return a}function Y(t,e){t._ambigTime?e._ambigTime=!0:e._ambigTime&&(e._ambigTime=!1),t._ambigZone?e._ambigZone=!0:e._ambigZone&&(e._ambigZone=!1)}function O(t,e){t.year(e[0]||0).month(e[1]||0).date(e[2]||0).hours(e[3]||0).minutes(e[4]||0).seconds(e[5]||0).milliseconds(e[6]||0)}function B(t,e){return Ge.format.call(t,e)}function Z(t,e){return I(t,U(e))}function I(t,e){var n,i="";for(n=0;e.length>n;n++)i+=W(t,e[n]);return i}function W(t,e){var n,i;return"string"==typeof e?e:(n=e.token)?Ae[n]?Ae[n](t):B(t,n):e.maybe&&(i=I(t,e.maybe),i.match(/[1-9]/))?i:""}function j(t,e,n,i,r){var s;return t=De.moment.parseZone(t),e=De.moment.parseZone(e),s=(t.localeData||t.lang).call(t),n=s.longDateFormat(n)||n,i=i||" - ",X(t,e,U(n),i,r)}function X(t,e,n,i,r){var s,o,l,a,u="",d="",c="",h="",f="";for(o=0;n.length>o&&(s=$(t,e,n[o]),s!==!1);o++)u+=s;for(l=n.length-1;l>o&&(s=$(t,e,n[l]),s!==!1);l--)d=s+d;for(a=o;l>=a;a++)c+=W(t,n[a]),h+=W(e,n[a]);return(c||h)&&(f=r?h+i+c:c+i+h),u+f+d}function $(t,e,n){var i,r;return"string"==typeof n?n:(i=n.token)&&(r=Ne[i.charAt(0)],r&&t.isSame(e,r))?B(t,i):!1}function U(t){return t in Ye?Ye[t]:Ye[t]=q(t)}function q(t){for(var e,n=[],i=/\[([^\]]*)\]|\(([^\)]*)\)|(LT|(\w)\4*o?)|([^\w\[\(]+)/g;e=i.exec(t);)e[1]?n.push(e[1]):e[2]?n.push({maybe:q(e[2])}):e[3]?n.push({token:e[3]}):e[5]&&n.push(e[5]);return n}function K(){}function Q(t,e){return t||e?t&&e?t.grid===e.grid&&t.row===e.row&&t.col===e.col:!1:!0}function J(t){var e=ee(t);return"background"===e||"inverse-background"===e}function te(t){return"inverse-background"===ee(t)}function ee(t){return F((t.source||{}).rendering,t.rendering)}function ne(t){var e,n,i={};for(e=0;t.length>e;e++)n=t[e],(i[n._id]||(i[n._id]=[])).push(n);return i}function ie(t,e){return t.eventStartMS-e.eventStartMS}function re(t,e){return t.eventStartMS-e.eventStartMS||e.eventDurationMS-t.eventDurationMS||e.event.allDay-t.event.allDay||(t.event.title||"").localeCompare(e.event.title)}function se(n){var i,r,s,o,l=De.dataAttrPrefix;return l&&(l+="-"),i=n.data(l+"event")||null,i&&(i="object"==typeof i?t.extend({},i):{},r=i.start,null==r&&(r=i.time),s=i.duration,o=i.stick,delete i.start,delete i.time,delete i.duration,delete i.stick),null==r&&(r=n.data(l+"start")),null==r&&(r=n.data(l+"time")),null==s&&(s=n.data(l+"duration")),null==o&&(o=n.data(l+"stick")),r=null!=r?e.duration(r):null,s=null!=s?e.duration(s):null,o=Boolean(o),{eventProps:i,startTime:r,duration:s,stick:o}}function oe(t,e){var n,i;for(n=0;e.length>n;n++)if(i=e[n],i.leftCol<=t.rightCol&&i.rightCol>=t.leftCol)return!0;return!1}function le(t,e){return t.leftCol-e.leftCol}function ae(t){var e,n,i;if(t.sort(re),e=ue(t),de(e),n=e[0]){for(i=0;n.length>i;i++)ce(n[i]);for(i=0;n.length>i;i++)he(n[i],0,0)}}function ue(t){var e,n,i,r=[];for(e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&fe(n,r[i]).length;i++);n.level=i,(r[i]||(r[i]=[])).push(n)}return r}function de(t){var e,n,i,r,s;for(e=0;t.length>e;e++)for(n=t[e],i=0;n.length>i;i++)for(r=n[i],r.forwardSegs=[],s=e+1;t.length>s;s++)fe(r,t[s],r.forwardSegs)}function ce(t){var e,n,i=t.forwardSegs,r=0;if(void 0===t.forwardPressure){for(e=0;i.length>e;e++)n=i[e],ce(n),r=Math.max(r,1+n.forwardPressure);t.forwardPressure=r}}function he(t,e,n){var i,r=t.forwardSegs;if(void 0===t.forwardCoord)for(r.length?(r.sort(pe),he(r[0],e+1,n),t.forwardCoord=r[0].backwardCoord):t.forwardCoord=1,t.backwardCoord=t.forwardCoord-(t.forwardCoord-n)/(e+1),i=0;r.length>i;i++)he(r[i],0,t.forwardCoord)}function fe(t,e,n){n=n||[];for(var i=0;e.length>i;i++)ge(t,e[i])&&n.push(e[i]);return n}function ge(t,e){return t.bottom>e.top&&t.top").prependTo(n),ie=new ve(Q,te),re=ie.render(),re&&n.prepend(re),c(te.defaultView),te.handleWindowResize&&(ue=G(E,te.windowResizeDelay),t(window).resize(ue))}function u(){le&&le.destroyView(),ie.destroy(),se.remove(),n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),t(window).unbind("resize",ue)}function d(){return n.is(":visible")}function c(t){h(0,t)}function h(e,n){pe++,le&&n&&le.type!==n&&(ie.deactivateButton(le.type),j(),le.start&&le.destroyView(),le.el.remove(),le=null),!le&&n&&(le=f(n),le.el=t("
").appendTo(se),ie.activateButton(n)),le&&(0>e?de=le.computePrevDate(de):e>0&&(de=le.computeNextDate(de)),le.start&&!e&&de.isWithin(le.intervalStart,le.intervalEnd)||d()&&(j(),le.start&&le.destroyView(),le.setDate(de),le.renderView(),X(),F(),z(),H())),X(),pe--}function f(t){var e=g(t);return new e["class"](Q,e.options,t)}function g(n){function i(e){"function"==typeof e?s=e:"object"==typeof e&&t.extend(r,e)}var r,s,l,a,u,d=te.defaultButtonText||{},c=te.buttonText||{},h=te.views||{},f=n,g=[],p=!1;if(ge[n])return ge[n];for(;f&&!s;)r={},i(Ce[f]),i(h[f]),g.unshift(r),f=r.type;return g.unshift({}),r=t.extend.apply(t,g),s?(l=r.duration||s.duration,l&&(l=e.duration(l),a=b(l),p=1===D(a,l)),p&&h[a]&&(r=t.extend({},h[a],r)),u=c[n]||(p?c[a]:null)||d[n]||(p?d[a]:null)||r.buttonText||s.buttonText||(l?o(l):null)||n,ge[n]={"class":s,options:r,buttonText:u}):void 0}function p(t){return Boolean(g(t))}function m(t){var e=g(t);return e?e.buttonText:void 0}function v(t){return d()?(t&&w(),pe++,le.updateSize(!0),pe--,!0):void 0}function y(){d()&&w()}function w(){ae="number"==typeof te.contentHeight?te.contentHeight:"number"==typeof te.height?te.height-(re?re.outerHeight(!0):0):Math.round(se.width()/Math.max(te.aspectRatio,.5))}function E(t){!pe&&t.target===window&&le.start&&v(!0)&&le.trigger("windowResize",fe)}function S(){T(),R()}function C(){d()&&(j(),le.destroyViewEvents(),le.renderViewEvents(me),X())}function T(){j(),le.destroyViewEvents(),X()}function H(){!te.lazyFetching||ce(le.start,le.end)?R():C()}function R(){he(le.start,le.end)}function k(t){me=t,C()}function M(){C()}function F(){ie.updateTitle(le.computeTitle())}function z(){var t=Q.getNow();t.isWithin(le.intervalStart,le.intervalEnd)?ie.disableButton("today"):ie.enableButton("today")}function L(t,e){t=Q.moment(t),e=e?Q.moment(e):t.hasTime()?t.clone().add(Q.defaultTimedEventDuration):t.clone().add(Q.defaultAllDayEventDuration),le.select({start:t,end:e})}function V(){le&&le.unselect()}function _(){h(-1)}function A(){h(1)}function N(){de.add(-1,"years"),h()}function Y(){de.add(1,"years"),h()}function O(){de=Q.getNow(),h()}function B(t){de=Q.moment(t),h()}function Z(t){de.add(e.duration(t)),h()}function I(t,e){var n,i;e&&p(e)||(e=e||"day",n=ie.getViewsWithButtons().join(" "),i=n.match(RegExp("\\w+"+P(e))),i||(i=n.match(/\w+Day/)),e=i?i[0]:"agendaDay"),de=t,c(e)}function W(){return de.clone()}function j(){se.css({width:"100%",height:se.height(),overflow:"hidden"})}function X(){se.css({width:"",height:"",overflow:""})}function $(){return Q}function U(){return le}function q(t,e){return void 0===e?te[t]:(("height"==t||"contentHeight"==t||"aspectRatio"==t)&&(te[t]=e,v(!0)),void 0)}function K(t,e){return te[t]?te[t].apply(e||fe,Array.prototype.slice.call(arguments,2)):void 0}var Q=this;r=r||{};var J,te=i({},Ee,r);J=te.lang in Te?Te[te.lang]:Te[Ee.lang],J&&(te=i({},Ee,J,r)),te.isRTL&&(te=i({},Ee,be,J||{},r)),Q.options=te,Q.render=l,Q.destroy=u,Q.refetchEvents=S,Q.reportEvents=k,Q.reportEventChange=M,Q.rerenderEvents=C,Q.changeView=c,Q.select=L,Q.unselect=V,Q.prev=_,Q.next=A,Q.prevYear=N,Q.nextYear=Y,Q.today=O,Q.gotoDate=B,Q.incrementDate=Z,Q.zoomTo=I,Q.getDate=W,Q.getCalendar=$,Q.getView=U,Q.option=q,Q.trigger=K,Q.isValidViewType=p,Q.getViewButtonText=m;var ee=x(s(te.lang));if(te.monthNames&&(ee._months=te.monthNames),te.monthNamesShort&&(ee._monthsShort=te.monthNamesShort),te.dayNames&&(ee._weekdays=te.dayNames),te.dayNamesShort&&(ee._weekdaysShort=te.dayNamesShort),null!=te.firstDay){var ne=x(ee._week);ne.dow=te.firstDay,ee._week=ne}Q.defaultAllDayEventDuration=e.duration(te.defaultAllDayEventDuration),Q.defaultTimedEventDuration=e.duration(te.defaultTimedEventDuration),Q.moment=function(){var t;return"local"===te.timezone?(t=De.moment.apply(null,arguments),t.hasTime()&&t.local()):t="UTC"===te.timezone?De.moment.utc.apply(null,arguments):De.moment.parseZone.apply(null,arguments),"_locale"in t?t._locale=ee:t._lang=ee,t},Q.getIsAmbigTimezone=function(){return"local"!==te.timezone&&"UTC"!==te.timezone},Q.rezoneDate=function(t){return Q.moment(t.toArray())},Q.getNow=function(){var t=te.now;return"function"==typeof t&&(t=t()),Q.moment(t)},Q.calculateWeekNumber=function(t){var e=te.weekNumberCalculation;return"function"==typeof e?e(t):"local"===e?t.week():"ISO"===e.toUpperCase()?t.isoWeek():void 0},Q.getEventEnd=function(t){return t.end?t.end.clone():Q.getDefaultEventEnd(t.allDay,t.start)},Q.getDefaultEventEnd=function(t,e){var n=e.clone();return t?n.stripTime().add(Q.defaultAllDayEventDuration):n.add(Q.defaultTimedEventDuration),Q.getIsAmbigTimezone()&&n.stripZone(),n},ye.call(Q,te);var ie,re,se,oe,le,ae,ue,de,ce=Q.isFetchNeeded,he=Q.fetchEvents,fe=n[0],ge={},pe=0,me=[];de=null!=te.defaultDate?Q.moment(te.defaultDate):Q.getNow(),Q.getSuggestedViewHeight=function(){return void 0===ae&&y(),ae},Q.isHeightAuto=function(){return"auto"===te.contentHeight||"auto"===te.height}}function ve(e,n){function i(){var e=n.header;return f=n.theme?"ui":"fc",e?g=t("
").append(s("left")).append(s("right")).append(s("center")).append('
'):void 0}function r(){g.remove()}function s(i){var r=t('
'),s=n.header[i];return s&&t.each(s.split(" "),function(){var i,s=t(),o=!0;t.each(this.split(","),function(i,r){var l,a,u,d,c,h,g,m,v;"title"==r?(s=s.add(t("

 

")),o=!1):(e[r]?l=function(){e[r]()}:e.isValidViewType(r)&&(l=function(){e.changeView(r)},p.push(r),c=e.getViewButtonText(r)),l&&(a=w(n.themeButtonIcons,r),u=w(n.buttonIcons,r),d=w(n.defaultButtonText,r),h=w(n.buttonText,r),g=c||h?z(c||h):a&&n.theme?"":u&&!n.theme?"":z(d||r),m=["fc-"+r+"-button",f+"-button",f+"-state-default"],v=t('").click(function(){v.hasClass(f+"-state-disabled")||(l(),(v.hasClass(f+"-state-active")||v.hasClass(f+"-state-disabled"))&&v.removeClass(f+"-state-hover"))}).mousedown(function(){v.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-down")}).mouseup(function(){v.removeClass(f+"-state-down")}).hover(function(){v.not("."+f+"-state-active").not("."+f+"-state-disabled").addClass(f+"-state-hover")},function(){v.removeClass(f+"-state-hover").removeClass(f+"-state-down")}),s=s.add(v)))}),o&&s.first().addClass(f+"-corner-left").end().last().addClass(f+"-corner-right").end(),s.length>1?(i=t("
"),o&&i.addClass("fc-button-group"),i.append(s),r.append(i)):r.append(s)}),r}function o(t){g.find("h2").text(t)}function l(t){g.find(".fc-"+t+"-button").addClass(f+"-state-active")}function a(t){g.find(".fc-"+t+"-button").removeClass(f+"-state-active")}function u(t){g.find(".fc-"+t+"-button").attr("disabled","disabled").addClass(f+"-state-disabled")}function d(t){g.find(".fc-"+t+"-button").removeAttr("disabled").removeClass(f+"-state-disabled")}function c(){return p}var h=this;h.render=i,h.destroy=r,h.updateTitle=o,h.activateButton=l,h.deactivateButton=a,h.disableButton=u,h.enableButton=d,h.getViewsWithButtons=c;var f,g=t(),p=[]}function ye(n){function i(t,e){return!B||t.clone().stripZone()Z.clone().stripZone()}function r(t,e){B=t,Z=e,Q=[];var n=++U,i=$.length;q=i;for(var r=0;i>r;r++)s($[r],n)}function s(e,n){o(e,function(i){var r,s,o,l=t.isArray(e.events);if(n==U){if(i)for(r=0;i.length>r;r++)s=i[r],o=l?s:b(s,e),o&&Q.push.apply(Q,H(o));q--,q||j(Q)}})}function o(e,i){var r,s,l=De.sourceFetchers;for(r=0;l.length>r;r++){if(s=l[r].call(O,e,B.clone(),Z.clone(),n.timezone,i),s===!0)return;if("object"==typeof s)return o(s,i),void 0}var a=e.events;if(a)t.isFunction(a)?(y(),a.call(O,B.clone(),Z.clone(),n.timezone,function(t){i(t),w()})):t.isArray(a)?i(a):i();else{var u=e.url;if(u){var d,c=e.success,h=e.error,f=e.complete;d=t.isFunction(e.data)?e.data():e.data;var g=t.extend({},d||{}),p=F(e.startParam,n.startParam),m=F(e.endParam,n.endParam),v=F(e.timezoneParam,n.timezoneParam);p&&(g[p]=B.format()),m&&(g[m]=Z.format()),n.timezone&&"local"!=n.timezone&&(g[v]=n.timezone),y(),t.ajax(t.extend({},Ke,e,{data:g,success:function(e){e=e||[];var n=M(c,this,arguments);t.isArray(n)&&(e=n),i(e)},error:function(){M(h,this,arguments),i()},complete:function(){M(f,this,arguments),w()}}))}else i()}}function l(t){var e=a(t);e&&($.push(e),q++,s(e,U))}function a(e){var n,i,r=De.sourceNormalizers;if(t.isFunction(e)||t.isArray(e)?n={events:e}:"string"==typeof e?n={url:e}:"object"==typeof e&&(n=t.extend({},e)),n){for(n.className?"string"==typeof n.className&&(n.className=n.className.split(/\s+/)):n.className=[],t.isArray(n.events)&&(n.origArray=n.events,n.events=t.map(n.events,function(t){return b(t,n)})),i=0;r.length>i;i++)r[i].call(O,n);return n}}function u(e){$=t.grep($,function(t){return!d(t,e)}),Q=t.grep(Q,function(t){return!d(t.source,e)}),j(Q)}function d(t,e){return t&&e&&c(t)==c(e)}function c(t){return("object"==typeof t?t.origArray||t.googleCalendarId||t.url||t.events:null)||t}function h(t){t.start=O.moment(t.start),t.end=t.end?O.moment(t.end):null,R(t,f(t)),j(Q)}function f(e){var n={};return t.each(e,function(t,e){g(t)&&void 0!==e&&k(e)&&(n[t]=e)}),n}function g(t){return!/^_|^(id|allDay|start|end)$/.test(t)}function p(t,e){var n,i,r,s=b(t);if(s){for(n=H(s),i=0;n.length>i;i++)r=n[i],r.source||(e&&(X.events.push(r),r.source=X),Q.push(r));return j(Q),n}return[]}function m(e){var n,i;for(null==e?e=function(){return!0}:t.isFunction(e)||(n=e+"",e=function(t){return t._id==n}),Q=t.grep(Q,e,!0),i=0;$.length>i;i++)t.isArray($[i].events)&&($[i].events=t.grep($[i].events,e,!0));j(Q)}function v(e){return t.isFunction(e)?t.grep(Q,e):null!=e?(e+="",t.grep(Q,function(t){return t._id==e})):Q}function y(){K++||I("loading",null,!0,W())}function w(){--K||I("loading",null,!1,W())}function b(i,r){var s,o,l,a={};if(n.eventDataTransform&&(i=n.eventDataTransform(i)),r&&r.eventDataTransform&&(i=r.eventDataTransform(i)),t.extend(a,i),r&&(a.source=r),a._id=i._id||(void 0===i.id?"_fc"+Qe++:i.id+""),a.className=i.className?"string"==typeof i.className?i.className.split(/\s+/):i.className:[],s=i.start||i.date,o=i.end,T(s)&&(s=e.duration(s)),T(o)&&(o=e.duration(o)),i.dow||e.isDuration(s)||e.isDuration(o))a.start=s?e.duration(s):null,a.end=o?e.duration(o):null,a._recurring=!0;else{if(s&&(s=O.moment(s),!s.isValid()))return!1;o&&(o=O.moment(o),o.isValid()||(o=null)),l=i.allDay,void 0===l&&(l=F(r?r.allDayDefault:void 0,n.allDayDefault)),D(s,o,l,a)}return a}function D(t,e,n,i){i.start=t,i.end=e,i.allDay=n,C(i),we(i)}function C(t){null==t.allDay&&(t.allDay=!(t.start.hasTime()||t.end&&t.end.hasTime())),t.allDay?(t.start.stripTime(),t.end&&t.end.stripTime()):(t.start.hasTime()||(t.start=O.rezoneDate(t.start)),t.end&&!t.end.hasTime()&&(t.end=O.rezoneDate(t.end))),t.end&&!t.end.isAfter(t.start)&&(t.end=null),t.end||(t.end=n.forceEventDuration?O.getDefaultEventEnd(t.allDay,t.start):null)}function x(t){var e;return t.end||(e=t.allDay,null==e&&(e=!t.start.hasTime()),t={start:t.start,end:O.getDefaultEventEnd(e,t.start)}),t}function H(e,n,i){var r,s,o,l,a,u,d,c,h,f=[];if(n=n||B,i=i||Z,e)if(e._recurring){if(s=e.dow)for(r={},o=0;s.length>o;o++)r[s[o]]=!0;for(l=n.clone().stripTime();l.isBefore(i);)(!r||r[l.day()])&&(a=e.start,u=e.end,d=l.clone(),c=null,a&&(d=d.time(a)),u&&(c=l.clone().time(u)),h=t.extend({},e),D(d,c,!a&&!u,h),f.push(h)),l.add(1,"days")}else f.push(e);return f}function R(e,n){var i,r,s,o,l={};return n=n||{},n.start||(n.start=e.start.clone()),void 0===n.end&&(n.end=e.end?e.end.clone():null),null==n.allDay&&(n.allDay=e.allDay),C(n),i=null!==e._end&&null===n.end,r=n.allDay?S(n.start,e._start):E(n.start,e._start),!i&&n.end&&(s=E(n.end,n.start).subtract(E(e._end||O.getDefaultEventEnd(e._allDay,e._start),e._start))),t.each(n,function(t,e){g(t)&&void 0!==e&&(l[t]=e)}),o=z(v(e._id),i,n.allDay,r,s,l),{dateDelta:r,durationDelta:s,undo:o}}function z(e,n,i,r,s,o){var l=O.getIsAmbigTimezone(),a=[];return r&&!r.valueOf()&&(r=null),s&&!s.valueOf()&&(s=null),t.each(e,function(e,u){var d,c;d={start:u.start.clone(),end:u.end?u.end.clone():null,allDay:u.allDay},t.each(o,function(t){d[t]=u[t]}),c={start:u._start,end:u._end,allDay:u._allDay},n&&(c.end=null),c.allDay=i,C(c),r&&(c.start.add(r),c.end&&c.end.add(r)),s&&(c.end||(c.end=O.getDefaultEventEnd(c.allDay,c.start)),c.end.add(s)),l&&!c.allDay&&(r||s)&&(c.start.stripZone(),c.end&&c.end.stripZone()),t.extend(u,o,c),we(u),a.push(function(){t.extend(u,d),we(u)})}),function(){for(var t=0;a.length>t;t++)a[t]()}}function L(){var e,i=n.businessHours,r={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},s=O.getView();return i&&(e="object"==typeof i?t.extend({},r,i):r),e?H(b(e),s.start,s.end):[]}function P(t,e){var i=e.source||{},r=F(e.constraint,i.constraint,n.eventConstraint),s=F(e.overlap,i.overlap,n.eventOverlap);return t=x(t),G(t,r,s,e)}function V(t){return G(t,n.selectConstraint,n.selectOverlap)}function _(e,n){var i,r;return n&&(i=t.extend({},n,e),r=H(b(i))[0]),r?P(e,r):(e=x(e),V(e))}function G(t,e,n,i){var r,s,o,l,a;if(t={start:t.start.clone().stripZone(),end:t.end.clone().stripZone()},null!=e){for(r=A(e),s=!1,o=0;r.length>o;o++)if(N(r[o],t)){s=!0;break}if(!s)return!1}for(o=0;Q.length>o;o++)if(l=Q[o],(!i||i._id!==l._id)&&Y(l,t)){if(n===!1)return!1;if("function"==typeof n&&!n(l,i))return!1;if(i){if(a=F(l.overlap,(l.source||{}).overlap),a===!1)return!1;if("function"==typeof a&&!a(i,l))return!1}}return!0}function A(t){return"businessHours"===t?L():"object"==typeof t?H(b(t)):v(t)}function N(t,e){var n=t.start.clone().stripZone(),i=O.getEventEnd(t).stripZone();return e.start>=n&&i>=e.end}function Y(t,e){var n=t.start.clone().stripZone(),i=O.getEventEnd(t).stripZone();return i>e.start&&e.end>n}var O=this;O.isFetchNeeded=i,O.fetchEvents=r,O.addEventSource=l,O.removeEventSource=u,O.updateEvent=h,O.renderEvent=p,O.removeEvents=m,O.clientEvents=v,O.mutateEvent=R,O.normalizeEventDateProps=C,O.ensureVisibleEventRange=x;var B,Z,I=O.trigger,W=O.getView,j=O.reportEvents,X={events:[]},$=[X],U=0,q=0,K=0,Q=[];t.each((n.events?[n.events]:[]).concat(n.eventSources||[]),function(t,e){var n=a(e);n&&$.push(n)}),O.getBusinessHoursEvents=L,O.isEventRangeAllowed=P,O.isSelectionRangeAllowed=V,O.isExternalDropRangeAllowed=_}function we(t){t._allDay=t.allDay,t._start=t.start.clone(),t._end=t.end?t.end.clone():null}var Ee={titleRangeSeparator:" — ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,defaultButtonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200},Se={dayPopoverFormat:"dddd, MMMM D"},be={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}},De=t.fullCalendar={version:"2.2.5"},Ce=De.views={};t.fn.fullCalendar=function(e){var n=Array.prototype.slice.call(arguments,1),i=this;return this.each(function(r,s){var o,l=t(s),a=l.data("fullCalendar");"string"==typeof e?a&&t.isFunction(a[e])&&(o=a[e].apply(a,n),r||(i=o),"destroy"===e&&l.removeData("fullCalendar")):a||(a=new me(l,e),l.data("fullCalendar",a),a.render())}),i};var Te=De.langs={};De.datepickerLang=function(e,n,i){var r=Te[e]||(Te[e]={});r.isRTL=i.isRTL,r.weekNumberTitle=i.weekHeader,t.each(xe,function(t,e){r[t]=e(i)}),t.datepicker&&(t.datepicker.regional[n]=t.datepicker.regional[e]=i,t.datepicker.regional.en=t.datepicker.regional[""],t.datepicker.setDefaults(i))},De.lang=function(e,n){var r,o;r=Te[e]||(Te[e]={}),n&&i(r,n),o=s(e),t.each(He,function(t,e){void 0===r[t]&&(r[t]=e(o,r))}),Ee.lang=e};var xe={defaultButtonText:function(t){return{prev:L(t.prevText),next:L(t.nextText),today:L(t.currentText)}},monthYearFormat:function(t){return t.showMonthAfterYear?"YYYY["+t.yearSuffix+"] MMMM":"MMMM YYYY["+t.yearSuffix+"]"}},He={dayOfMonthFormat:function(t,e){var n=t.longDateFormat("l");return n=n.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),e.isRTL?n+=" ddd":n="ddd "+n,n},smallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(t){return t.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},noMeridiemTimeFormat:function(t){return t.longDateFormat("LT").replace(/\s*a$/i,"")}};De.lang("en",Se),De.intersectionToSeg=y,De.applyAll=M,De.debounce=G;var Re,ke,Me,Fe=["sun","mon","tue","wed","thu","fri","sat"],ze=["year","month","week","day","hour","minute","second","millisecond"],Le={}.hasOwnProperty,Pe=/^\s*\d{4}-\d\d$/,Ve=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,_e=e.fn,Ge=t.extend({},_e);De.moment=function(){return A(arguments)},De.moment.utc=function(){var t=A(arguments,!0);return t.hasTime()&&t.utc(),t},De.moment.parseZone=function(){return A(arguments,!0,!0)},_e.clone=function(){var t=Ge.clone.apply(this,arguments);return Y(this,t),this._fullCalendar&&(t._fullCalendar=!0),t},_e.time=function(t){if(!this._fullCalendar)return Ge.time.apply(this,arguments);if(null==t)return e.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,e.isDuration(t)||e.isMoment(t)||(t=e.duration(t));var n=0;return e.isDuration(t)&&(n=24*Math.floor(t.asDays())),this.hours(n+t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds())},_e.stripTime=function(){var t;return this._ambigTime||(t=this.toArray(),this.utc(),ke(this,t.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},_e.hasTime=function(){return!this._ambigTime},_e.stripZone=function(){var t,e;return this._ambigZone||(t=this.toArray(),e=this._ambigTime,this.utc(),ke(this,t),e&&(this._ambigTime=!0),this._ambigZone=!0),this},_e.hasZone=function(){return!this._ambigZone},_e.zone=function(t){return null!=t&&(this._ambigTime=!1,this._ambigZone=!1),Ge.zone.apply(this,arguments)},_e.local=function(){var t=this.toArray(),e=this._ambigZone;return Ge.local.apply(this,arguments),e&&Me(this,t),this},_e.format=function(){return this._fullCalendar&&arguments[0]?Z(this,arguments[0]):this._ambigTime?B(this,"YYYY-MM-DD"):this._ambigZone?B(this,"YYYY-MM-DD[T]HH:mm:ss"):Ge.format.apply(this,arguments)},_e.toISOString=function(){return this._ambigTime?B(this,"YYYY-MM-DD"):this._ambigZone?B(this,"YYYY-MM-DD[T]HH:mm:ss"):Ge.toISOString.apply(this,arguments)},_e.isWithin=function(t,e){var n=N([this,t,e]);return n[0]>=n[1]&&n[0]').addClass(n.className||"").css({top:0,left:0}).append(n.content).appendTo(n.parentEl),this.el.on("click",".fc-close",function(){e.hide()}),n.autoHide&&t(document).on("mousedown",this.documentMousedownProxy=t.proxy(this,"documentMousedown"))},documentMousedown:function(e){this.el&&!t(e.target).closest(this.el).length&&this.hide()},destroy:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),t(document).off("mousedown",this.documentMousedownProxy)},position:function(){var e,n,i,r,s,o=this.options,l=this.el.offsetParent().offset(),a=this.el.outerWidth(),u=this.el.outerHeight(),d=t(window),c=p(this.el);r=o.top||0,s=void 0!==o.left?o.left:void 0!==o.right?o.right-a:0,c.is(window)||c.is(document)?(c=d,e=0,n=0):(i=c.offset(),e=i.top,n=i.left),e+=d.scrollTop(),n+=d.scrollLeft(),o.viewportConstrain!==!1&&(r=Math.min(r,e+c.outerHeight()-u-this.margin),r=Math.max(r,e+this.margin),s=Math.min(s,n+c.outerWidth()-a-this.margin),s=Math.max(s,n+this.margin)),this.el.css({top:r-l.top,left:s-l.left})},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))}}),Be=K.extend({grid:null,rowCoords:null,colCoords:null,containerEl:null,minX:null,maxX:null,minY:null,maxY:null,constructor:function(t){this.grid=t},build:function(){this.rowCoords=this.grid.computeRowCoords(),this.colCoords=this.grid.computeColCoords(),this.computeBounds()},clear:function(){this.rowCoords=null,this.colCoords=null},getCell:function(t,e){var n,i,r,s=this.rowCoords,o=this.colCoords,l=null,a=null;if(this.inBounds(t,e)){for(n=0;s.length>n;n++)if(i=s[n],e>=i.top&&i.bottom>e){l=n;break}for(n=0;o.length>n;n++)if(i=o[n],t>=i.left&&i.right>t){a=n;break}if(null!==l&&null!==a)return r=this.grid.getCell(l,a),r.grid=this.grid,r}return null},computeBounds:function(){var t;this.containerEl&&(t=this.containerEl.offset(),this.minX=t.left,this.maxX=t.left+this.containerEl.outerWidth(),this.minY=t.top,this.maxY=t.top+this.containerEl.outerHeight()) +},inBounds:function(t,e){return this.containerEl?t>=this.minX&&this.maxX>t&&e>=this.minY&&this.maxY>e:!0}}),Ze=K.extend({coordMaps:null,constructor:function(t){this.coordMaps=t},build:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].build()},getCell:function(t,e){var n,i=this.coordMaps,r=null;for(n=0;i.length>n&&!r;n++)r=i[n].getCell(t,e);return r},clear:function(){var t,e=this.coordMaps;for(t=0;e.length>t;t++)e[t].clear()}}),Ie=K.extend({coordMap:null,options:null,isListening:!1,isDragging:!1,origCell:null,cell:null,mouseX0:null,mouseY0:null,mousemoveProxy:null,mouseupProxy:null,scrollEl:null,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollHandlerProxy:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,constructor:function(t,e){this.coordMap=t,this.options=e||{}},mousedown:function(t){v(t)&&(t.preventDefault(),this.startListening(t),this.options.distance||this.startDrag(t))},startListening:function(e){var n,i;this.isListening||(e&&this.options.scroll&&(n=p(t(e.target)),n.is(window)||n.is(document)||(this.scrollEl=n,this.scrollHandlerProxy=G(t.proxy(this,"scrollHandler"),100),this.scrollEl.on("scroll",this.scrollHandlerProxy))),this.computeCoords(),e&&(i=this.getCell(e),this.origCell=i,this.mouseX0=e.pageX,this.mouseY0=e.pageY),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")).on("mouseup",this.mouseupProxy=t.proxy(this,"mouseup")).on("selectstart",this.preventDefault),this.isListening=!0,this.trigger("listenStart",e))},computeCoords:function(){this.coordMap.build(),this.computeScrollBounds()},mousemove:function(t){var e,n;this.isDragging||(e=this.options.distance||1,n=Math.pow(t.pageX-this.mouseX0,2)+Math.pow(t.pageY-this.mouseY0,2),n>=e*e&&this.startDrag(t)),this.isDragging&&this.drag(t)},startDrag:function(t){var e;this.isListening||this.startListening(),this.isDragging||(this.isDragging=!0,this.trigger("dragStart",t),e=this.getCell(t),e&&this.cellOver(e))},drag:function(t){var e;this.isDragging&&(e=this.getCell(t),Q(e,this.cell)||(this.cell&&this.cellOut(),e&&this.cellOver(e)),this.dragScroll(t))},cellOver:function(t){this.cell=t,this.trigger("cellOver",t,Q(t,this.origCell))},cellOut:function(){this.cell&&(this.trigger("cellOut",this.cell),this.cell=null)},mouseup:function(t){this.stopDrag(t),this.stopListening(t)},stopDrag:function(t){this.isDragging&&(this.stopScrolling(),this.trigger("dragStop",t),this.isDragging=!1)},stopListening:function(e){this.isListening&&(this.scrollEl&&(this.scrollEl.off("scroll",this.scrollHandlerProxy),this.scrollHandlerProxy=null),t(document).off("mousemove",this.mousemoveProxy).off("mouseup",this.mouseupProxy).off("selectstart",this.preventDefault),this.mousemoveProxy=null,this.mouseupProxy=null,this.isListening=!1,this.trigger("listenStop",e),this.origCell=this.cell=null,this.coordMap.clear())},getCell:function(t){return this.coordMap.getCell(t.pageX,t.pageY)},trigger:function(t){this.options[t]&&this.options[t].apply(this,Array.prototype.slice.call(arguments,1))},preventDefault:function(t){t.preventDefault()},computeScrollBounds:function(){var t,e=this.scrollEl;e&&(t=e.offset(),this.scrollBounds={top:t.top,left:t.left,bottom:t.top+e.outerHeight(),right:t.left+e.outerWidth()})},dragScroll:function(t){var e,n,i,r,s=this.scrollSensitivity,o=this.scrollBounds,l=0,a=0;o&&(e=(s-(t.pageY-o.top))/s,n=(s-(o.bottom-t.pageY))/s,i=(s-(t.pageX-o.left))/s,r=(s-(o.right-t.pageX))/s,e>=0&&1>=e?l=-1*e*this.scrollSpeed:n>=0&&1>=n&&(l=n*this.scrollSpeed),i>=0&&1>=i?a=-1*i*this.scrollSpeed:r>=0&&1>=r&&(a=r*this.scrollSpeed)),this.setScrollVel(l,a)},setScrollVel:function(e,n){this.scrollTopVel=e,this.scrollLeftVel=n,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(t.proxy(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var t=this.scrollEl;0>this.scrollTopVel?0>=t.scrollTop()&&(this.scrollTopVel=0):this.scrollTopVel>0&&t.scrollTop()+t[0].clientHeight>=t[0].scrollHeight&&(this.scrollTopVel=0),0>this.scrollLeftVel?0>=t.scrollLeft()&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&t.scrollLeft()+t[0].clientWidth>=t[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var t=this.scrollEl,e=this.scrollIntervalMs/1e3;this.scrollTopVel&&t.scrollTop(t.scrollTop()+this.scrollTopVel*e),this.scrollLeftVel&&t.scrollLeft(t.scrollLeft()+this.scrollLeftVel*e),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.stopScrolling()},stopScrolling:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.computeCoords())},scrollHandler:function(){this.scrollIntervalId||this.computeCoords()}}),We=K.extend({options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,mouseY0:null,mouseX0:null,topDelta:null,leftDelta:null,mousemoveProxy:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(e,n){this.options=n=n||{},this.sourceEl=e,this.parentEl=n.parentEl?t(n.parentEl):e.parent()},start:function(e){this.isFollowing||(this.isFollowing=!0,this.mouseY0=e.pageY,this.mouseX0=e.pageX,this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),t(document).on("mousemove",this.mousemoveProxy=t.proxy(this,"mousemove")))},stop:function(e,n){function i(){this.isAnimating=!1,r.destroyEl(),this.top0=this.left0=null,n&&n()}var r=this,s=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,t(document).off("mousemove",this.mousemoveProxy),e&&s&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:s,complete:i})):i())},getEl:function(){var t=this.el;return t||(this.sourceEl.width(),t=this.el=this.sourceEl.clone().css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}).appendTo(this.parentEl)),t},destroyEl:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var t,e;this.getEl(),null===this.top0&&(this.sourceEl.width(),t=this.sourceEl.offset(),e=this.el.offsetParent().offset(),this.top0=t.top-e.top,this.left0=t.left-e.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},mousemove:function(t){this.topDelta=t.pageY-this.mouseY0,this.leftDelta=t.pageX-this.mouseX0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),je=K.extend({view:null,isRTL:null,cellHtml:"",constructor:function(t){this.view=t,this.isRTL=t.opt("isRTL")},rowHtml:function(t,e){var n,i,r=this.getHtmlRenderer("cell",t),s="";for(e=e||0,n=0;this.colCnt>n;n++)i=this.getCell(e,n),s+=r(i);return s=this.bookendCells(s,t,e),""+s+""},bookendCells:function(t,e,n){var i=this.getHtmlRenderer("intro",e)(n||0),r=this.getHtmlRenderer("outro",e)(n||0),s=this.isRTL?r:i,o=this.isRTL?i:r;return"string"==typeof t?s+t+o:t.prepend(s).append(o)},getHtmlRenderer:function(t,e){var n,i,r,s,o=this.view;return n=t+"Html",e&&(i=e+P(t)+"Html"),i&&(s=o[i])?r=o:i&&(s=this[i])?r=this:(s=o[n])?r=o:(s=this[n])&&(r=this),"function"==typeof s?function(){return s.apply(r,arguments)||""}:function(){return s||""}}}),Xe=De.Grid=je.extend({start:null,end:null,rowCnt:0,colCnt:0,rowData:null,colData:null,el:null,coordMap:null,elsByFill:null,documentDragStartProxy:null,colHeadFormat:null,eventTimeFormat:null,displayEventEnd:null,constructor:function(){je.apply(this,arguments),this.coordMap=new Be(this),this.elsByFill={},this.documentDragStartProxy=t.proxy(this,"documentDragStart")},render:function(){this.bindHandlers()},destroy:function(){this.unbindHandlers()},computeColHeadFormat:function(){},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventEnd:function(){return!1},setRange:function(t){var e=this.view;this.start=t.start.clone(),this.end=t.end.clone(),this.rowData=[],this.colData=[],this.updateCells(),this.colHeadFormat=e.opt("columnFormat")||this.computeColHeadFormat(),this.eventTimeFormat=e.opt("timeFormat")||this.computeEventTimeFormat(),this.displayEventEnd=e.opt("displayEventEnd"),null==this.displayEventEnd&&(this.displayEventEnd=this.computeDisplayEventEnd())},updateCells:function(){},rangeToSegs:function(){},getCell:function(e,n){var i;return null==n&&("number"==typeof e?(n=e%this.colCnt,e=Math.floor(e/this.colCnt)):(n=e.col,e=e.row)),i={row:e,col:n},t.extend(i,this.getRowData(e),this.getColData(n)),t.extend(i,this.computeCellRange(i)),i},computeCellRange:function(){},getRowData:function(t){return this.rowData[t]||{}},getColData:function(t){return this.colData[t]||{}},getRowEl:function(){},getColEl:function(){},getCellDayEl:function(t){return this.getColEl(t.col)||this.getRowEl(t.row)},computeRowCoords:function(){var t,e,n,i=[];for(t=0;this.rowCnt>t;t++)e=this.getRowEl(t),n={top:e.offset().top},t>0&&(i[t-1].bottom=n.top),i.push(n);return n.bottom=n.top+e.outerHeight(),i},computeColCoords:function(){var t,e,n,i=[];for(t=0;this.colCnt>t;t++)e=this.getColEl(t),n={left:e.offset().left},t>0&&(i[t-1].right=n.left),i.push(n);return n.right=n.left+e.outerWidth(),i},bindHandlers:function(){var e=this;this.el.on("mousedown",function(n){t(n.target).is(".fc-event-container *, .fc-more")||t(n.target).closest(".fc-popover").length||e.dayMousedown(n)}),this.bindSegHandlers(),t(document).on("dragstart",this.documentDragStartProxy)},unbindHandlers:function(){t(document).off("dragstart",this.documentDragStartProxy)},dayMousedown:function(t){var e,n,i=this,r=this.view,s=r.opt("selectable"),o=new Ie(this.coordMap,{scroll:r.opt("dragScroll"),dragStart:function(){r.unselect()},cellOver:function(t,r){var l=o.origCell;l&&(e=r?t:null,s&&(n=i.computeSelection(l,t),n?i.renderSelection(n):a()))},cellOut:function(){e=null,n=null,i.destroySelection(),u()},listenStop:function(t){e&&r.trigger("dayClick",i.getCellDayEl(e),e.start,t),n&&r.reportSelection(n,t),u()}});o.mousedown(t)},renderRangeHelper:function(t,e){var n;n=e?x(e.event):{},n.start=t.start.clone(),n.end=t.end?t.end.clone():null,n.allDay=null,this.view.calendar.normalizeEventDateProps(n),n.className=(n.className||[]).concat("fc-helper"),e||(n.editable=!1),this.renderHelper(n,e)},renderHelper:function(){},destroyHelper:function(){},renderSelection:function(t){this.renderHighlight(t)},destroySelection:function(){this.destroyHighlight()},computeSelection:function(t,e){var n,i=[t.start,t.end,e.start,e.end];return i.sort(V),n={start:i[0].clone(),end:i[3].clone()},this.view.calendar.isSelectionRangeAllowed(n)?n:null},renderHighlight:function(t){this.renderFill("highlight",this.rangeToSegs(t))},destroyHighlight:function(){this.destroyFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderFill:function(){},destroyFill:function(t){var e=this.elsByFill[t];e&&(e.remove(),delete this.elsByFill[t])},renderFillSegEls:function(e,n){var i,r=this,s=this[e+"SegEl"],o="",l=[];if(n.length){for(i=0;n.length>i;i++)o+=this.fillSegHtml(e,n[i]);t(o).each(function(e,i){var o=n[e],a=t(i);s&&(a=s.call(r,o,a)),a&&(a=t(a),a.is(r.fillSegTag)&&(o.el=a,l.push(o)))})}return l},fillSegTag:"div",fillSegHtml:function(t,e){var n=this[t+"SegClasses"],i=this[t+"SegStyles"],r=n?n.call(this,e):[],s=i?i.call(this,e):"";return"<"+this.fillSegTag+(r.length?' class="'+r.join(" ")+'"':"")+(s?' style="'+s+'"':"")+" />"},headHtml:function(){return'
'+""+""+this.rowHtml("head")+""+"
"+"
"},headCellHtml:function(t){var e=this.view,n=t.start;return''+z(n.format(this.colHeadFormat))+""},bgCellHtml:function(t){var e=this.view,n=t.start,i=this.getDayClasses(n);return i.unshift("fc-day",e.widgetContentClass),'"},getDayClasses:function(t){var e=this.view,n=e.calendar.getNow().stripTime(),i=["fc-"+Fe[t.day()]];return"month"===e.name&&t.month()!=e.intervalStart.month()&&i.push("fc-other-month"),t.isSame(n,"day")?i.push("fc-today",e.highlightStateClass):n>t?i.push("fc-past"):i.push("fc-future"),i}});Xe.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,segs:null,renderEvents:function(t){var e,n,i=this.eventsToSegs(t),r=[],s=[];for(e=0;i.length>e;e++)n=i[e],J(n.event)?r.push(n):s.push(n);r=this.renderBgSegs(r)||r,s=this.renderFgSegs(s)||s,this.segs=r.concat(s)},destroyEvents:function(){this.triggerSegMouseout(),this.destroyFgSegs(),this.destroyBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(){},destroyFgSegs:function(){},renderFgSegEls:function(e,n){var i,r=this.view,s="",o=[];if(e.length){for(i=0;e.length>i;i++)s+=this.fgSegHtml(e[i],n);t(s).each(function(n,i){var s=e[n],l=r.resolveEventEl(s.event,t(i));l&&(l.data("fc-seg",s),s.el=l,o.push(s))})}return o},fgSegHtml:function(){},renderBgSegs:function(t){return this.renderFill("bgEvent",t)},destroyBgSegs:function(){this.destroyFill("bgEvent")},bgEventSegEl:function(t,e){return this.view.resolveEventEl(t.event,e)},bgEventSegClasses:function(t){var e=t.event,n=e.source||{};return["fc-bgevent"].concat(e.className,n.className||[])},bgEventSegStyles:function(t){var e=this.view,n=t.event,i=n.source||{},r=n.color,s=i.color,o=e.opt("eventColor"),l=n.backgroundColor||r||i.backgroundColor||s||e.opt("eventBackgroundColor")||o;return l?"background-color:"+l:""},businessHoursSegClasses:function(){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){var e=this,n=this.view;t.each({mouseenter:function(t,n){e.triggerSegMouseover(t,n)},mouseleave:function(t,n){e.triggerSegMouseout(t,n)},click:function(t,e){return n.trigger("eventClick",this,t.event,e)},mousedown:function(i,r){t(r.target).is(".fc-resizer")&&n.isEventResizable(i.event)?e.segResizeMousedown(i,r):n.isEventDraggable(i.event)&&e.segDragMousedown(i,r)}},function(n,i){e.el.on(n,".fc-event-container > *",function(n){var r=t(this).data("fc-seg");return!r||e.isDraggingSeg||e.isResizingSeg?void 0:i.call(this,r,n)})})},triggerSegMouseover:function(t,e){this.mousedOverSeg||(this.mousedOverSeg=t,this.view.trigger("eventMouseover",t.el[0],t.event,e))},triggerSegMouseout:function(t,e){e=e||{},this.mousedOverSeg&&(t=t||this.mousedOverSeg,this.mousedOverSeg=null,this.view.trigger("eventMouseout",t.el[0],t.event,e))},segDragMousedown:function(t,e){var n,i=this,r=this.view,s=t.el,o=t.event,l=new We(t.el,{parentEl:r.el,opacity:r.opt("dragOpacity"),revertDuration:r.opt("dragRevertDuration"),zIndex:2}),d=new Ie(r.coordMap,{distance:5,scroll:r.opt("dragScroll"),listenStart:function(t){l.hide(),l.start(t)},dragStart:function(e){i.triggerSegMouseout(t,e),i.isDraggingSeg=!0,r.hideEvent(o),r.trigger("eventDragStart",s[0],o,e,{})},cellOver:function(e,s){var u=t.cell||d.origCell;n=i.computeEventDrop(u,e,o),n?(r.renderDrag(n,t)?l.hide():l.show(),s&&(n=null)):(l.show(),a())},cellOut:function(){n=null,r.destroyDrag(),l.show(),u()},dragStop:function(t){l.stop(!n,function(){i.isDraggingSeg=!1,r.destroyDrag(),r.showEvent(o),r.trigger("eventDragStop",s[0],o,t,{}),n&&r.reportEventDrop(o,n,s,t)}),u()},listenStop:function(){l.stop()}});d.mousedown(e)},computeEventDrop:function(t,e,n){var i,r,s,o,l,a=t.start,u=e.start;return a.hasTime()===u.hasTime()?(i=E(u,a),r=n.start.clone().add(i),s=null===n.end?null:n.end.clone().add(i),o=n.allDay):(r=u.clone(),s=null,o=!u.hasTime()),l={start:r,end:s,allDay:o},this.view.calendar.isEventRangeAllowed(l,n)?l:null},documentDragStart:function(e,n){var i,r,s=this.view;s.opt("droppable")&&(i=t(e.target),r=s.opt("dropAccept"),(t.isFunction(r)?r.call(i[0],i):i.is(r))&&this.startExternalDrag(i,e,n))},startExternalDrag:function(e,n){var i,r,s=this,o=se(e);i=new Ie(this.coordMap,{cellOver:function(t){r=s.computeExternalDrop(t,o),r?s.renderDrag(r):a()},cellOut:function(){r=null,s.destroyDrag(),u()}}),t(document).one("dragstop",function(t,n){s.destroyDrag(),u(),r&&s.view.reportExternalDrop(o,r,e,t,n)}),i.startDrag(n)},computeExternalDrop:function(t,e){var n={start:t.start.clone(),end:null};return e.startTime&&!n.start.hasTime()&&n.start.time(e.startTime),e.duration&&(n.end=n.start.clone().add(e.duration)),this.view.calendar.isExternalDropRangeAllowed(n,e.eventProps)?n:null},renderDrag:function(){},destroyDrag:function(){},segResizeMousedown:function(t,e){function n(){s.destroyEventResize(),o.showEvent(c),u()}var i,r,s=this,o=this.view,l=o.calendar,d=t.el,c=t.event,h=c.start,f=l.getEventEnd(c);r=new Ie(this.coordMap,{distance:5,scroll:o.opt("dragScroll"),dragStart:function(e){s.triggerSegMouseout(t,e),s.isResizingSeg=!0,o.trigger("eventResizeStart",d[0],c,e,{})},cellOver:function(e){i=e.end,i.isAfter(h)||(i=h.clone().add(E(e.end,e.start))),i.isSame(f)?i=null:l.isEventRangeAllowed({start:h,end:i},c)?(s.renderEventResize({start:h,end:i},t),o.hideEvent(c)):(i=null,a())},cellOut:function(){i=null,n()},dragStop:function(t){s.isResizingSeg=!1,n(),o.trigger("eventResizeStop",d[0],c,t,{}),i&&o.reportEventResize(c,i,d,t)}}),r.mousedown(e)},renderEventResize:function(){},destroyEventResize:function(){},getEventTimeText:function(t,e){return e=e||this.eventTimeFormat,t.end&&this.displayEventEnd?this.view.formatRange(t,e):t.start.format(e)},getSegClasses:function(t,e,n){var i=t.event,r=["fc-event",t.isStart?"fc-start":"fc-not-start",t.isEnd?"fc-end":"fc-not-end"].concat(i.className,i.source?i.source.className:[]);return e&&r.push("fc-draggable"),n&&r.push("fc-resizable"),r},getEventSkinCss:function(t){var e=this.view,n=t.source||{},i=t.color,r=n.color,s=e.opt("eventColor"),o=t.backgroundColor||i||n.backgroundColor||r||e.opt("eventBackgroundColor")||s,l=t.borderColor||i||n.borderColor||r||e.opt("eventBorderColor")||s,a=t.textColor||n.textColor||e.opt("eventTextColor"),u=[];return o&&u.push("background-color:"+o),l&&u.push("border-color:"+l),a&&u.push("color:"+a),u.join(";")},eventsToSegs:function(t,e){var n,i=this.eventsToRanges(t),r=[];for(n=0;i.length>n;n++)r.push.apply(r,this.eventRangeToSegs(i[n],e));return r},eventsToRanges:function(e){var n=this,i=ne(e),r=[];return t.each(i,function(t,e){e.length&&r.push.apply(r,te(e[0])?n.eventsToInverseRanges(e):n.eventsToNormalRanges(e))}),r},eventsToNormalRanges:function(t){var e,n,i,r,s=this.view.calendar,o=[];for(e=0;t.length>e;e++)n=t[e],i=n.start.clone().stripZone(),r=s.getEventEnd(n).stripZone(),o.push({event:n,start:i,end:r,eventStartMS:+i,eventDurationMS:r-i});return o},eventsToInverseRanges:function(t){var e,n,i=this.view,r=i.start.clone().stripZone(),s=i.end.clone().stripZone(),o=this.eventsToNormalRanges(t),l=[],a=t[0],u=r;for(o.sort(ie),e=0;o.length>e;e++)n=o[e],n.start>u&&l.push({event:a,start:u,end:n.start}),u=n.end;return s>u&&l.push({event:a,start:u,end:s}),l},eventRangeToSegs:function(t,e){var n,i,r;for(n=e?e(t):this.rangeToSegs(t),i=0;n.length>i;i++)r=n[i],r.event=t.event,r.eventStartMS=t.eventStartMS,r.eventDurationMS=t.eventDurationMS;return n}}),De.compareSegs=re,De.dataAttrPrefix="";var $e=Xe.extend({numbersVisible:!1,bottomCoordPadding:0,breakOnWeeks:null,cellDates:null,dayToCellOffsets:null,rowEls:null,dayEls:null,helperEls:null,render:function(t){var e,n,i,r=this.view,s=this.rowCnt,o=this.colCnt,l=s*o,a="";for(e=0;s>e;e++)a+=this.dayRowHtml(e,t);for(this.el.html(a),this.rowEls=this.el.find(".fc-row"),this.dayEls=this.el.find(".fc-day"),n=0;l>n;n++)i=this.getCell(n),r.trigger("dayRender",null,i.start,this.dayEls.eq(n));Xe.prototype.render.call(this)},destroy:function(){this.destroySegPopover(),Xe.prototype.destroy.call(this)},dayRowHtml:function(t,e){var n=this.view,i=["fc-row","fc-week",n.widgetContentClass];return e&&i.push("fc-rigid"),'
'+'
'+""+this.rowHtml("day",t)+"
"+"
"+'
'+""+(this.numbersVisible?""+this.rowHtml("number",t)+"":"")+"
"+"
"+"
"},dayCellHtml:function(t){return this.bgCellHtml(t)},computeColHeadFormat:function(){return this.rowCnt>1?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},updateCells:function(){var t,e,n,i;if(this.updateCellDates(),t=this.cellDates,this.breakOnWeeks){for(e=t[0].day(),i=1;t.length>i&&t[i].day()!=e;i++);n=Math.ceil(t.length/i)}else n=1,i=t.length;this.rowCnt=n,this.colCnt=i},updateCellDates:function(){for(var t=this.view,e=this.start.clone(),n=[],i=-1,r=[];e.isBefore(this.end);)t.isHiddenDay(e)?r.push(i+.5):(i++,r.push(i),n.push(e.clone())),e.add(1,"days");this.cellDates=n,this.dayToCellOffsets=r},computeCellRange:function(t){var e=this.colCnt,n=t.row*e+(this.isRTL?e-t.col-1:t.col),i=this.cellDates[n].clone(),r=i.clone().add(1,"day");return{start:i,end:r}},getRowEl:function(t){return this.rowEls.eq(t)},getColEl:function(t){return this.dayEls.eq(t)},getCellDayEl:function(t){return this.dayEls.eq(t.row*this.colCnt+t.col)},computeRowCoords:function(){var t=Xe.prototype.computeRowCoords.call(this);return t[t.length-1].bottom+=this.bottomCoordPadding,t},rangeToSegs:function(t){var e,n,i,r,s,o,l,a,u,d,c=this.isRTL,h=this.rowCnt,f=this.colCnt,g=[];for(t=this.view.computeDayRange(t),e=this.dateToCellOffset(t.start),n=this.dateToCellOffset(t.end.subtract(1,"days")),i=0;h>i;i++)r=i*f,s=r+f-1,a=Math.max(r,e),u=Math.min(s,n),a=Math.ceil(a),u=Math.floor(u),u>=a&&(o=a===e,l=u===n,a-=r,u-=r,d={row:i,isStart:o,isEnd:l},c?(d.leftCol=f-u-1,d.rightCol=f-a-1):(d.leftCol=a,d.rightCol=u),g.push(d));return g},dateToCellOffset:function(t){var e=this.dayToCellOffsets,n=t.diff(this.start,"days");return 0>n?e[0]-1:n>=e.length?e[e.length-1]+1:e[n]},renderDrag:function(t,e){var n;return this.renderHighlight(this.view.calendar.ensureVisibleEventRange(t)),e&&!e.el.closest(this.el).length?(this.renderRangeHelper(t,e),n=this.view.opt("dragOpacity"),void 0!==n&&this.helperEls.css("opacity",n),!0):void 0},destroyDrag:function(){this.destroyHighlight(),this.destroyHelper()},renderEventResize:function(t,e){this.renderHighlight(t),this.renderRangeHelper(t,e)},destroyEventResize:function(){this.destroyHighlight(),this.destroyHelper()},renderHelper:function(e,n){var i,r=[],s=this.eventsToSegs([e]);s=this.renderFgSegEls(s),i=this.renderSegRows(s),this.rowEls.each(function(e,s){var o,l=t(s),a=t('
');o=n&&n.row===e?n.el.position().top:l.find(".fc-content-skeleton tbody").position().top,a.css("top",o).find("table").append(i[e].tbodyEl),l.append(a),r.push(a[0])}),this.helperEls=t(r)},destroyHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(e,n){var i,r,s,o=[];for(n=this.renderFillSegEls(e,n),i=0;n.length>i;i++)r=n[i],s=this.renderFillRow(e,r),this.rowEls.eq(r.row).append(s),o.push(s[0]);return this.elsByFill[e]=t(o),n},renderFillRow:function(e,n){var i,r,s=this.colCnt,o=n.leftCol,l=n.rightCol+1;return i=t('
'+"
"+"
"),r=i.find("tr"),o>0&&r.append(''),r.append(n.el.attr("colspan",l-o)),s>l&&r.append(''),this.bookendCells(r,e),i}});$e.mixin({rowStructs:null,destroyEvents:function(){this.destroySegPopover(),Xe.prototype.destroyEvents.apply(this,arguments)},getEventSegs:function(){return Xe.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(e){var n=t.grep(e,function(t){return t.event.allDay});return Xe.prototype.renderBgSegs.call(this,n)},renderFgSegs:function(e){var n;return e=this.renderFgSegEls(e),n=this.rowStructs=this.renderSegRows(e),this.rowEls.each(function(e,i){t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl)}),e},destroyFgSegs:function(){for(var t,e=this.rowStructs||[];t=e.pop();)t.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(t){var e,n,i=[];for(e=this.groupSegRows(t),n=0;e.length>n;n++)i.push(this.renderSegRow(n,e[n]));return i},fgSegHtml:function(t,e){var n,i=this.view,r=t.event,s=i.isEventDraggable(r),o=!e&&r.allDay&&t.isEnd&&i.isEventResizable(r),l=this.getSegClasses(t,s,o),a=this.getEventSkinCss(r),u="";return l.unshift("fc-day-grid-event"),!r.allDay&&t.isStart&&(u=''+z(this.getEventTimeText(r))+""),n=''+(z(r.title||"")||" ")+"",'"+'
'+(this.isRTL?n+" "+u:u+" "+n)+"
"+(o?'
':"")+""},renderSegRow:function(e,n){function i(e){for(;e>o;)d=(v[r-1]||[])[o],d?d.attr("rowspan",parseInt(d.attr("rowspan")||1,10)+1):(d=t(""),l.append(d)),m[r][o]=d,v[r][o]=d,o++}var r,s,o,l,a,u,d,c=this.colCnt,h=this.buildSegLevels(n),f=Math.max(1,h.length),g=t(""),p=[],m=[],v=[];for(r=0;f>r;r++){if(s=h[r],o=0,l=t(""),p.push([]),m.push([]),v.push([]),s)for(a=0;s.length>a;a++){for(u=s[a],i(u.leftCol),d=t('').append(u.el),u.leftCol!=u.rightCol?d.attr("colspan",u.rightCol-u.leftCol+1):v[r][o]=d;u.rightCol>=o;)m[r][o]=d,p[r][o]=u,o++;l.append(d)}i(c),this.bookendCells(l,"eventSkeleton"),g.append(l)}return{row:e,tbodyEl:g,cellMatrix:m,segMatrix:p,segLevels:h,segs:n}},buildSegLevels:function(t){var e,n,i,r=[];for(t.sort(re),e=0;t.length>e;e++){for(n=t[e],i=0;r.length>i&&oe(n,r[i]);i++);n.level=i,(r[i]||(r[i]=[])).push(n)}for(i=0;r.length>i;i++)r[i].sort(le);return r},groupSegRows:function(t){var e,n=[];for(e=0;this.rowCnt>e;e++)n.push([]);for(e=0;t.length>e;e++)n[t[e].row].push(t[e]);return n}}),$e.mixin({segPopover:null,popoverSegs:null,destroySegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(t){var e,n,i=this.rowStructs||[];for(e=0;i.length>e;e++)this.unlimitRow(e),n=t?"number"==typeof t?t:this.computeRowLevelLimit(e):!1,n!==!1&&this.limitRow(e,n)},computeRowLevelLimit:function(t){var e,n,i=this.rowEls.eq(t),r=i.height(),s=this.rowStructs[t].tbodyEl.children();for(e=0;s.length>e;e++)if(n=s.eq(e).removeClass("fc-limited"),n.position().top+n.outerHeight()>r)return e;return!1},limitRow:function(e,n){function i(i){for(;i>D;)r=E.getCell(e,D),d=E.getCellSegs(r,n),d.length&&(f=o[n-1][D],w=E.renderMoreLink(r,d),y=t("
").append(w),f.append(y),b.push(y[0])),D++}var r,s,o,l,a,u,d,c,h,f,g,p,m,v,y,w,E=this,S=this.rowStructs[e],b=[],D=0;if(n&&S.segLevels.length>n){for(s=S.segLevels[n-1],o=S.cellMatrix,l=S.tbodyEl.children().slice(n).addClass("fc-limited").get(),a=0;s.length>a;a++){for(u=s[a],i(u.leftCol),h=[],c=0;u.rightCol>=D;)r=this.getCell(e,D),d=this.getCellSegs(r,n),h.push(d),c+=d.length,D++;if(c){for(f=o[n-1][u.leftCol],g=f.attr("rowspan")||1,p=[],m=0;h.length>m;m++)v=t('').attr("rowspan",g),d=h[m],r=this.getCell(e,u.leftCol+m),w=this.renderMoreLink(r,[u].concat(d)),y=t("
").append(w),v.append(y),p.push(v[0]),b.push(v[0]);f.addClass("fc-limited").after(t(p)),l.push(f[0])}}i(this.colCnt),S.moreEls=t(b),S.limitedEls=t(l)}},unlimitRow:function(t){var e=this.rowStructs[t];e.moreEls&&(e.moreEls.remove(),e.moreEls=null),e.limitedEls&&(e.limitedEls.removeClass("fc-limited"),e.limitedEls=null)},renderMoreLink:function(e,n){var i=this,r=this.view;return t('').text(this.getMoreLinkText(n.length)).on("click",function(s){var o=r.opt("eventLimitClick"),l=e.start,a=t(this),u=i.getCellDayEl(e),d=i.getCellSegs(e),c=i.resliceDaySegs(d,l),h=i.resliceDaySegs(n,l);"function"==typeof o&&(o=r.trigger("eventLimitClick",null,{date:l,dayEl:u,moreEl:a,segs:c,hiddenSegs:h},s)),"popover"===o?i.showSegPopover(e,a,c):"string"==typeof o&&r.calendar.zoomTo(l,o)})},showSegPopover:function(t,e,n){var i,r,s=this,o=this.view,l=e.parent();i=1==this.rowCnt?o.el:this.rowEls.eq(t.row),r={className:"fc-more-popover",content:this.renderSegPopoverContent(t,n),parentEl:this.el,top:i.offset().top,autoHide:!0,viewportConstrain:o.opt("popoverViewportConstrain"),hide:function(){s.segPopover.destroy(),s.segPopover=null,s.popoverSegs=null}},this.isRTL?r.right=l.offset().left+l.outerWidth()+1:r.left=l.offset().left-1,this.segPopover=new Oe(r),this.segPopover.show()},renderSegPopoverContent:function(e,n){var i,r=this.view,s=r.opt("theme"),o=e.start.format(r.opt("dayPopoverFormat")),l=t('
'+''+''+z(o)+""+'
'+"
"+'
'+'
'+"
"),a=l.find(".fc-event-container");for(n=this.renderFgSegEls(n,!0),this.popoverSegs=n,i=0;n.length>i;i++)n[i].cell=e,a.append(n[i].el);return l},resliceDaySegs:function(e,n){var i=t.map(e,function(t){return t.event}),r=n.clone().stripTime(),s=r.clone().add(1,"days"),o={start:r,end:s};return this.eventsToSegs(i,function(t){var e=y(t,o);return e?[e]:[]})},getMoreLinkText:function(t){var e=this.view.opt("eventLimitText");return"function"==typeof e?e(t):"+"+t+" "+e},getCellSegs:function(t,e){for(var n,i=this.rowStructs[t.row].segMatrix,r=e||0,s=[];i.length>r;)n=i[r][t.col],n&&s.push(n),r++;return s}});var Ue=Xe.extend({slotDuration:null,snapDuration:null,minTime:null,maxTime:null,axisFormat:null,dayEls:null,slatEls:null,slatTops:null,helperEl:null,businessHourSegs:null,constructor:function(){Xe.apply(this,arguments),this.processOptions()},render:function(){this.el.html(this.renderHtml()),this.dayEls=this.el.find(".fc-day"),this.slatEls=this.el.find(".fc-slats tr"),this.computeSlatTops(),this.renderBusinessHours(),Xe.prototype.render.call(this)},renderBusinessHours:function(){var t=this.view.calendar.getBusinessHoursEvents();this.businessHourSegs=this.renderFill("businessHours",this.eventsToSegs(t),"bgevent")},renderHtml:function(){return'
'+this.rowHtml("slotBg")+"
"+"
"+'
'+""+this.slatRowHtml()+"
"+"
"},slotBgCellHtml:function(t){return this.bgCellHtml(t)},slatRowHtml:function(){for(var t,n,i,r=this.view,s=this.isRTL,o="",l=0===this.slotDuration.asMinutes()%15,a=e.duration(+this.minTime);this.maxTime>a;)t=this.start.clone().time(a),n=t.minutes(),i='"+(l&&n?"":""+z(t.format(this.axisFormat))+"")+"",o+=""+(s?"":i)+''+(s?i:"")+"",a.add(this.slotDuration);return o},processOptions:function(){var t=this.view,n=t.opt("slotDuration"),i=t.opt("snapDuration");n=e.duration(n),i=i?e.duration(i):n,this.slotDuration=n,this.snapDuration=i,this.minTime=e.duration(t.opt("minTime")),this.maxTime=e.duration(t.opt("maxTime")),this.axisFormat=t.opt("axisFormat")||t.opt("smallTimeFormat")},computeColHeadFormat:function(){return this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},updateCells:function(){var t,e=this.view,n=[];for(t=this.start.clone();t.isBefore(this.end);)n.push({day:t.clone()}),t.add(1,"day"),t=e.skipHiddenDays(t);this.isRTL&&n.reverse(),this.colData=n,this.colCnt=n.length,this.rowCnt=Math.ceil((this.maxTime-this.minTime)/this.snapDuration)},computeCellRange:function(t){var e=this.computeSnapTime(t.row),n=this.view.calendar.rezoneDate(t.day).time(e),i=n.clone().add(this.snapDuration);return{start:n,end:i}},getColEl:function(t){return this.dayEls.eq(t)},computeSnapTime:function(t){return e.duration(this.minTime+this.snapDuration*t)},rangeToSegs:function(t){var e,n,i,r,s=this.colCnt,o=[];for(t={start:t.start.clone().stripZone(),end:t.end.clone().stripZone()},n=0;s>n;n++)i=this.colData[n].day,r={start:i.clone().time(this.minTime),end:i.clone().time(this.maxTime)},e=y(t,r),e&&(e.col=n,o.push(e)); +return o},resize:function(){this.computeSlatTops(),this.updateSegVerticals()},computeRowCoords:function(){var t,e,n=this.el.offset().top,i=[];for(t=0;this.rowCnt>t;t++)e={top:n+this.computeTimeTop(this.computeSnapTime(t))},t>0&&(i[t-1].bottom=e.top),i.push(e);return e.bottom=e.top+this.computeTimeTop(this.computeSnapTime(t)),i},computeDateTop:function(t,n){return this.computeTimeTop(e.duration(t.clone().stripZone()-n.clone().stripTime()))},computeTimeTop:function(t){var e,n,i,r,s=(t-this.minTime)/this.slotDuration;return s=Math.max(0,s),s=Math.min(this.slatEls.length,s),e=Math.floor(s),n=s-e,i=this.slatTops[e],n?(r=this.slatTops[e+1],i+(r-i)*n):i},computeSlatTops:function(){var e,n=[];this.slatEls.each(function(i,r){e=t(r).position().top,n.push(e)}),n.push(e+this.slatEls.last().outerHeight()),this.slatTops=n},renderDrag:function(t,e){var n;return e?(this.renderRangeHelper(t,e),n=this.view.opt("dragOpacity"),void 0!==n&&this.helperEl.css("opacity",n),!0):(this.renderHighlight(this.view.calendar.ensureVisibleEventRange(t)),void 0)},destroyDrag:function(){this.destroyHelper(),this.destroyHighlight()},renderEventResize:function(t,e){this.renderRangeHelper(t,e)},destroyEventResize:function(){this.destroyHelper()},renderHelper:function(e,n){var i,r,s,o,l=this.eventsToSegs([e]);for(l=this.renderFgSegEls(l),i=this.renderSegTable(l),r=0;l.length>r;r++)s=l[r],n&&n.col===s.col&&(o=n.el,s.el.css({left:o.css("left"),right:o.css("right"),"margin-left":o.css("margin-left"),"margin-right":o.css("margin-right")}));this.helperEl=t('
').append(i).appendTo(this.el)},destroyHelper:function(){this.helperEl&&(this.helperEl.remove(),this.helperEl=null)},renderSelection:function(t){this.view.opt("selectHelper")?this.renderRangeHelper(t):this.renderHighlight(t)},destroySelection:function(){this.destroyHelper(),this.destroyHighlight()},renderFill:function(e,n,i){var r,s,o,l,a,u,d,c,h,f;if(n.length){for(n=this.renderFillSegEls(e,n),r=this.groupSegCols(n),i=i||e.toLowerCase(),s=t('
'+"
"+"
"),o=s.find("tr"),l=0;r.length>l;l++)if(a=r[l],u=t("").appendTo(o),a.length)for(d=t('
').appendTo(u),c=this.colData[l].day,h=0;a.length>h;h++)f=a[h],d.append(f.el.css({top:this.computeDateTop(f.start,c),bottom:-this.computeDateTop(f.end,c)}));this.bookendCells(o,e),this.el.append(s),this.elsByFill[e]=s}return n}});Ue.mixin({eventSkeletonEl:null,renderFgSegs:function(e){return e=this.renderFgSegEls(e),this.el.append(this.eventSkeletonEl=t('
').append(this.renderSegTable(e))),e},destroyFgSegs:function(){this.eventSkeletonEl&&(this.eventSkeletonEl.remove(),this.eventSkeletonEl=null)},renderSegTable:function(e){var n,i,r,s,o,l,a=t("
"),u=a.find("tr");for(n=this.groupSegCols(e),this.computeSegVerticals(e),s=0;n.length>s;s++){for(o=n[s],ae(o),l=t('
'),i=0;o.length>i;i++)r=o[i],r.el.css(this.generateSegPositionCss(r)),30>r.bottom-r.top&&r.el.addClass("fc-short"),l.append(r.el);u.append(t("").append(l))}return this.bookendCells(u,"eventSkeleton"),a},updateSegVerticals:function(){var t,e=(this.segs||[]).concat(this.businessHourSegs||[]);for(this.computeSegVerticals(e),t=0;e.length>t;t++)e[t].el.css(this.generateSegVerticalCss(e[t]))},computeSegVerticals:function(t){var e,n;for(e=0;t.length>e;e++)n=t[e],n.top=this.computeDateTop(n.start,n.start),n.bottom=this.computeDateTop(n.end,n.start)},fgSegHtml:function(t,e){var n,i,r,s=this.view,o=t.event,l=s.isEventDraggable(o),a=!e&&t.isEnd&&s.isEventResizable(o),u=this.getSegClasses(t,l,a),d=this.getEventSkinCss(o);return u.unshift("fc-time-grid-event"),s.isMultiDayEvent(o)?(t.isStart||t.isEnd)&&(n=this.getEventTimeText(t),i=this.getEventTimeText(t,"LT"),r=this.getEventTimeText({start:t.start})):(n=this.getEventTimeText(o),i=this.getEventTimeText(o,"LT"),r=this.getEventTimeText({start:o.start})),'"+'
'+(n?'
"+""+z(n)+""+"
":"")+(o.title?'
'+z(o.title)+"
":"")+"
"+'
'+(a?'
':"")+""},generateSegPositionCss:function(t){var e,n,i=this.view.opt("slotEventOverlap"),r=t.backwardCoord,s=t.forwardCoord,o=this.generateSegVerticalCss(t);return i&&(s=Math.min(1,r+2*(s-r))),this.isRTL?(e=1-s,n=r):(e=r,n=1-s),o.zIndex=t.level+1,o.left=100*e+"%",o.right=100*n+"%",i&&t.forwardPressure&&(o[this.isRTL?"marginLeft":"marginRight"]=20),o},generateSegVerticalCss:function(t){return{top:t.top,bottom:-t.bottom}},groupSegCols:function(t){var e,n=[];for(e=0;this.colCnt>e;e++)n.push([]);for(e=0;t.length>e;e++)n[t[e].col].push(t[e]);return n}});var qe=De.View=K.extend({type:null,name:null,calendar:null,options:null,coordMap:null,el:null,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isSelected:!1,scrollerEl:null,scrollTop:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,documentMousedownProxy:null,constructor:function(n,i,r){this.calendar=n,this.options=i,this.type=this.name=r,this.nextDayThreshold=e.duration(this.opt("nextDayThreshold")),this.initTheming(),this.initHiddenDays(),this.documentMousedownProxy=t.proxy(this,"documentMousedown"),this.initialize()},initialize:function(){},opt:function(e){var n;return n=this.options[e],void 0!==n?n:(n=this.calendar.options[e],t.isPlainObject(n)&&!r(e)?w(n,this.type):n)},trigger:function(t,e){var n=this.calendar;return n.trigger.apply(n,[t,e||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(t){this.setRange(this.computeRange(t))},setRange:function(e){t.extend(this,e)},computeRange:function(t){var n,i,r=e.duration(this.opt("duration")||this.constructor.duration||{days:1}),s=b(r),o=t.clone().startOf(s),l=o.clone().add(r);return D("days",r)?(o.stripTime(),l.stripTime()):(o.hasTime()||(o=this.calendar.rezoneDate(o)),l.hasTime()||(l=this.calendar.rezoneDate(l))),n=o.clone(),n=this.skipHiddenDays(n),i=l.clone(),i=this.skipHiddenDays(i,-1,!0),{intervalDuration:r,intervalUnit:s,intervalStart:o,intervalEnd:l,start:n,end:i}},computePrevDate:function(t){return this.skipHiddenDays(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(t){return this.skipHiddenDays(t.clone().startOf(this.intervalUnit).add(this.intervalDuration))},computeTitle:function(){return this.formatRange({start:this.intervalStart,end:this.intervalEnd},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(t,e,n){var i=t.end;return i.hasTime()||(i=i.clone().subtract(1)),j(t.start,i,e,n,this.opt("isRTL"))},renderView:function(){this.render(),this.updateSize(),this.initializeScroll(),this.trigger("viewRender",this,this,this.el),t(document).on("mousedown",this.documentMousedownProxy)},render:function(){},destroyView:function(){this.unselect(),this.destroyViewEvents(),this.destroy(),this.trigger("viewDestroy",this,this,this.el),t(document).off("mousedown",this.documentMousedownProxy)},destroy:function(){this.el.empty()},initTheming:function(){var t=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=t+"-widget-header",this.widgetContentClass=t+"-widget-content",this.highlightStateClass=t+"-state-highlight"},updateSize:function(t){t&&this.recordScroll(),this.updateHeight(),this.updateWidth()},updateWidth:function(){},updateHeight:function(){var t=this.calendar;this.setHeight(t.getSuggestedViewHeight(),t.isHeightAuto())},setHeight:function(){},computeScrollerHeight:function(t,e){var n,i;return e=e||this.scrollerEl,n=this.el.add(e),n.css({position:"relative",left:-1}),i=this.el.outerHeight()-e.height(),n.css({position:"",left:""}),t-i},initializeScroll:function(){},recordScroll:function(){this.scrollerEl&&(this.scrollTop=this.scrollerEl.scrollTop())},restoreScroll:function(){null!==this.scrollTop&&this.scrollerEl.scrollTop(this.scrollTop)},renderViewEvents:function(t){this.renderEvents(t),this.eventSegEach(function(t){this.trigger("eventAfterRender",t.event,t.event,t.el)}),this.trigger("eventAfterAllRender")},renderEvents:function(){},destroyViewEvents:function(){this.eventSegEach(function(t){this.trigger("eventDestroy",t.event,t.event,t.el)}),this.destroyEvents()},destroyEvents:function(){},resolveEventEl:function(e,n){var i=this.trigger("eventRender",e,e,n);return i===!1?n=null:i&&i!==!0&&(n=t(i)),n},showEvent:function(t){this.eventSegEach(function(t){t.el.css("visibility","")},t)},hideEvent:function(t){this.eventSegEach(function(t){t.el.css("visibility","hidden")},t)},eventSegEach:function(t,e){var n,i=this.getEventSegs();for(n=0;i.length>n;n++)e&&i[n].event._id!==e._id||t.call(this,i[n])},getEventSegs:function(){return[]},isEventDraggable:function(t){var e=t.source||{};return F(t.startEditable,e.startEditable,this.opt("eventStartEditable"),t.editable,e.editable,this.opt("editable"))},reportEventDrop:function(t,e,n,i){var r=this.calendar,s=r.mutateEvent(t,e),o=function(){s.undo(),r.reportEventChange()};this.triggerEventDrop(t,s.dateDelta,o,n,i),r.reportEventChange()},triggerEventDrop:function(t,e,n,i,r){this.trigger("eventDrop",i[0],t,e,n,r,{})},reportExternalDrop:function(e,n,i,r,s){var o,l,a=e.eventProps;a&&(o=t.extend({},a,n),l=this.calendar.renderEvent(o,e.stick)[0]),this.triggerExternalDrop(l,n,i,r,s)},triggerExternalDrop:function(t,e,n,i,r){this.trigger("drop",n[0],e.start,i,r),t&&this.trigger("eventReceive",null,t)},renderDrag:function(){},destroyDrag:function(){},isEventResizable:function(t){var e=t.source||{};return F(t.durationEditable,e.durationEditable,this.opt("eventDurationEditable"),t.editable,e.editable,this.opt("editable"))},reportEventResize:function(t,e,n,i){var r=this.calendar,s=r.mutateEvent(t,{end:e}),o=function(){s.undo(),r.reportEventChange()};this.triggerEventResize(t,s.durationDelta,o,n,i),r.reportEventChange()},triggerEventResize:function(t,e,n,i,r){this.trigger("eventResize",i[0],t,e,n,r,{})},select:function(t,e){this.unselect(e),this.renderSelection(t),this.reportSelection(t,e)},renderSelection:function(){},reportSelection:function(t,e){this.isSelected=!0,this.trigger("select",null,t.start,t.end,e)},unselect:function(t){this.isSelected&&(this.isSelected=!1,this.destroySelection(),this.trigger("unselect",null,t))},destroySelection:function(){},documentMousedown:function(e){var n;this.isSelected&&this.opt("unselectAuto")&&v(e)&&(n=this.opt("unselectCancel"),n&&t(e.target).closest(n).length||this.unselect(e))},initHiddenDays:function(){var e,n=this.opt("hiddenDays")||[],i=[],r=0;for(this.opt("weekends")===!1&&n.push(0,6),e=0;7>e;e++)(i[e]=-1!==t.inArray(e,n))||r++;if(!r)throw"invalid hiddenDays";this.isHiddenDayHash=i},isHiddenDay:function(t){return e.isMoment(t)&&(t=t.day()),this.isHiddenDayHash[t]},skipHiddenDays:function(t,e,n){var i=t.clone();for(e=e||1;this.isHiddenDayHash[(i.day()+(n?e:0)+7)%7];)i.add(e,"days");return i},computeDayRange:function(t){var e,n=t.start.clone().stripTime(),i=t.end,r=null;return i&&(r=i.clone().stripTime(),e=+i.time(),e&&e>=this.nextDayThreshold&&r.add(1,"days")),(!i||n>=r)&&(r=n.clone().add(1,"days")),{start:n,end:r}},isMultiDayEvent:function(t){var e=this.computeDayRange(t);return e.end.diff(e.start,"days")>1}});De.sourceNormalizers=[],De.sourceFetchers=[];var Ke={dataType:"json",cache:!1},Qe=1,Je=Ce.basic=qe.extend({dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headRowEl:null,initialize:function(){this.dayGrid=new $e(this),this.coordMap=this.dayGrid.coordMap},setRange:function(t){qe.prototype.setRange.call(this,t),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(t)},computeRange:function(t){var e=qe.prototype.computeRange.call(this,t);return/year|month/.test(e.intervalUnit)&&(e.start.startOf("week"),e.start=this.skipHiddenDays(e.start),e.end.weekday()&&(e.end.add(1,"week").startOf("week"),e.end=this.skipHiddenDays(e.end,-1,!0))),e},render:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderHtml()),this.headRowEl=this.el.find("thead .fc-row"),this.scrollerEl=this.el.find(".fc-day-grid-container"),this.dayGrid.coordMap.containerEl=this.scrollerEl,this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(this.hasRigidRows())},destroy:function(){this.dayGrid.destroy(),qe.prototype.destroy.call(this)},renderHtml:function(){return'"+""+""+""+""+'"+""+""+"
'+this.dayGrid.headHtml()+"
'+'
'+'
'+"
"+"
"},headIntroHtml:function(){return this.weekNumbersVisible?'"+""+z(this.opt("weekNumberTitle"))+""+"":void 0},numberIntroHtml:function(t){return this.weekNumbersVisible?'"+""+this.calendar.calculateWeekNumber(this.dayGrid.getCell(t,0).start)+""+"":void 0},dayIntroHtml:function(){return this.weekNumbersVisible?'":void 0},introHtml:function(){return this.weekNumbersVisible?'":void 0},numberCellHtml:function(t){var e,n=t.start;return this.dayNumbersVisible?(e=this.dayGrid.getDayClasses(n),e.unshift("fc-day-number"),''+n.date()+""):""},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var t=this.opt("eventLimit");return t&&"number"!=typeof t},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=h(this.el.find(".fc-week-number")))},setHeight:function(t,e){var n,i=this.opt("eventLimit");g(this.scrollerEl),l(this.headRowEl),this.dayGrid.destroySegPopover(),i&&"number"==typeof i&&this.dayGrid.limitRows(i),n=this.computeScrollerHeight(t),this.setGridHeight(n,e),i&&"number"!=typeof i&&this.dayGrid.limitRows(i),!e&&f(this.scrollerEl,n)&&(o(this.headRowEl,m(this.scrollerEl)),n=this.computeScrollerHeight(t),this.scrollerEl.height(n),this.restoreScroll())},setGridHeight:function(t,e){e?c(this.dayGrid.rowEls):d(this.dayGrid.rowEls,t,!0)},renderEvents:function(t){this.dayGrid.renderEvents(t),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},destroyEvents:function(){this.recordScroll(),this.dayGrid.destroyEvents()},renderDrag:function(t,e){return this.dayGrid.renderDrag(t,e)},destroyDrag:function(){this.dayGrid.destroyDrag()},renderSelection:function(t){this.dayGrid.renderSelection(t)},destroySelection:function(){this.dayGrid.destroySelection()}});n({fixedWeekCount:!0});var tn=Ce.month=Je.extend({computeRange:function(t){var e=Je.prototype.computeRange.call(this,t);return this.isFixedWeeks()&&e.end.add(6-e.end.diff(e.start,"weeks"),"weeks"),e},setGridHeight:function(t,e){e=e||"variable"===this.opt("weekMode"),e&&(t*=this.rowCnt/6),d(this.dayGrid.rowEls,t,!e)},isFixedWeeks:function(){var t=this.opt("weekMode");return t?"fixed"===t:this.opt("fixedWeekCount")}});tn.duration={months:1},Ce.basicWeek={type:"basic",duration:{weeks:1}},Ce.basicDay={type:"basic",duration:{days:1}},n({allDaySlot:!0,allDayText:"all-day",scrollTime:"06:00:00",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0});var en=5;Ce.agenda=qe.extend({timeGrid:null,dayGrid:null,axisWidth:null,noScrollRowEls:null,bottomRuleEl:null,bottomRuleHeight:null,initialize:function(){this.timeGrid=new Ue(this),this.opt("allDaySlot")?(this.dayGrid=new $e(this),this.coordMap=new Ze([this.dayGrid.coordMap,this.timeGrid.coordMap])):this.coordMap=this.timeGrid.coordMap},setRange:function(t){qe.prototype.setRange.call(this,t),this.timeGrid.setRange(t),this.dayGrid&&this.dayGrid.setRange(t)},render:function(){this.el.addClass("fc-agenda-view").html(this.renderHtml()),this.scrollerEl=this.el.find(".fc-time-grid-container"),this.timeGrid.coordMap.containerEl=this.scrollerEl,this.timeGrid.el=this.el.find(".fc-time-grid"),this.timeGrid.render(),this.bottomRuleEl=t('
').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.el=this.el.find(".fc-day-grid"),this.dayGrid.render(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},destroy:function(){this.timeGrid.destroy(),this.dayGrid&&this.dayGrid.destroy(),qe.prototype.destroy.call(this)},renderHtml:function(){return'"+""+""+""+""+'"+""+""+"
'+this.timeGrid.headHtml()+"
'+(this.dayGrid?'

':"")+'
'+'
'+"
"+"
"},headIntroHtml:function(){var t,e,n,i;return this.opt("weekNumbers")?(t=this.timeGrid.getCell(0).start,e=this.calendar.calculateWeekNumber(t),n=this.opt("weekNumberTitle"),i=this.opt("isRTL")?e+n:n+e,'"+""+z(i)+""+""):'"},dayIntroHtml:function(){return'"+""+(this.opt("allDayHtml")||z(this.opt("allDayText")))+""+""},slotBgIntroHtml:function(){return'"},introHtml:function(){return'"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},updateSize:function(t){t&&this.timeGrid.resize(),qe.prototype.updateSize.call(this,t)},updateWidth:function(){this.axisWidth=h(this.el.find(".fc-axis"))},setHeight:function(t,e){var n,i;null===this.bottomRuleHeight&&(this.bottomRuleHeight=this.bottomRuleEl.outerHeight()),this.bottomRuleEl.hide(),this.scrollerEl.css("overflow",""),g(this.scrollerEl),l(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.destroySegPopover(),n=this.opt("eventLimit"),n&&"number"!=typeof n&&(n=en),n&&this.dayGrid.limitRows(n)),e||(i=this.computeScrollerHeight(t),f(this.scrollerEl,i)?(o(this.noScrollRowEls,m(this.scrollerEl)),i=this.computeScrollerHeight(t),this.scrollerEl.height(i),this.restoreScroll()):(this.scrollerEl.height(i).css("overflow","hidden"),this.bottomRuleEl.show()))},initializeScroll:function(){function t(){n.scrollerEl.scrollTop(r)}var n=this,i=e.duration(this.opt("scrollTime")),r=this.timeGrid.computeTimeTop(i);r=Math.ceil(r),r&&r++,t(),setTimeout(t,0)},renderEvents:function(t){var e,n,i=[],r=[],s=[];for(n=0;t.length>n;n++)t[n].allDay?i.push(t[n]):r.push(t[n]);e=this.timeGrid.renderEvents(r),this.dayGrid&&(s=this.dayGrid.renderEvents(i)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},destroyEvents:function(){this.recordScroll(),this.timeGrid.destroyEvents(),this.dayGrid&&this.dayGrid.destroyEvents()},renderDrag:function(t,e){return t.start.hasTime()?this.timeGrid.renderDrag(t,e):this.dayGrid?this.dayGrid.renderDrag(t,e):void 0},destroyDrag:function(){this.timeGrid.destroyDrag(),this.dayGrid&&this.dayGrid.destroyDrag()},renderSelection:function(t){t.start.hasTime()||t.end.hasTime()?this.timeGrid.renderSelection(t):this.dayGrid&&this.dayGrid.renderSelection(t)},destroySelection:function(){this.timeGrid.destroySelection(),this.dayGrid&&this.dayGrid.destroySelection()}}),Ce.agendaWeek={type:"agenda",duration:{weeks:1}},Ce.agendaDay={type:"agenda",duration:{days:1}}}); \ No newline at end of file diff --git a/app/scripts/ucsd/logout.js b/app/scripts/ucsd/logout.js new file mode 100755 index 0000000..8e0b8c5 --- /dev/null +++ b/app/scripts/ucsd/logout.js @@ -0,0 +1,22 @@ +/* initialize login links */ +function initLogout(logoutUrl) { + var url = "https://a4.ucsd.edu/tritON/resources/bugscript.jsp?target=https%3A%2F%2Fwww.ucsd.edu&jsoncallback=?"; + $.getJSON(url, function(data) { + var loginHeader = $('.layout-header'); + var loginStatus = 'isLoggedIn'; + + if (data.eduUcsdActLoggedin) { + var layoutLogin = '.layout-login .layout-container'; + var url = "You are logged in | Log Out"; + $(layoutLogin).empty(); + $(layoutLogin).append(url); + + loginHeader.addClass(loginStatus); + } else { + loginHeader.removeClass(loginStatus); + } + }); +}; \ No newline at end of file diff --git a/app/scripts/ucsd/match-height.js b/app/scripts/ucsd/match-height.js new file mode 100644 index 0000000..30bb379 --- /dev/null +++ b/app/scripts/ucsd/match-height.js @@ -0,0 +1,10 @@ +$(function() { + $('.cta-two-three, .panel-news-title').matchHeight({ + property: 'min-height' + }); + + $('.jumbotron-news .panel.panel-default').matchHeight({ + property: 'min-height' + }); + +}); diff --git a/app/scripts/ucsd/mobile-search.js b/app/scripts/ucsd/mobile-search.js new file mode 100644 index 0000000..07949dc --- /dev/null +++ b/app/scripts/ucsd/mobile-search.js @@ -0,0 +1,24 @@ +$(document).ready(function(){ + resize(); +}); + +function resize(){ + if($(window).width() < 960) + { + //Mobile + $("#search").prependTo(".offcanvas"); + console.log("less than 960px"); + $("#search").css("display", "block").css("position","relative !important"); + } + else if($(window).width() > 960) + { + //Mobile + $("#search").appendTo(".search"); + console.log("less than 960px"); + } + else + {w + //Desktop + //Leave original layout + } +} diff --git a/app/scripts/ucsd/moment.js b/app/scripts/ucsd/moment.js new file mode 100755 index 0000000..266853e --- /dev/null +++ b/app/scripts/ucsd/moment.js @@ -0,0 +1,3043 @@ +//! moment.js +//! version : 2.9.0 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +(function (undefined) { + /************************************ + Constants + ************************************/ + + var moment, + VERSION = '2.9.0', + // the global-scope this is NOT the global object in Node.js + globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this, + oldGlobalMoment, + round = Math.round, + hasOwnProperty = Object.prototype.hasOwnProperty, + i, + + YEAR = 0, + MONTH = 1, + DATE = 2, + HOUR = 3, + MINUTE = 4, + SECOND = 5, + MILLISECOND = 6, + + // internal storage for locale config files + locales = {}, + + // extra moment internal properties (plugins register props here) + momentProperties = [], + + // check for nodeJS + hasModule = (typeof module !== 'undefined' && module && module.exports), + + // ASP.NET json date format regex + aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, + aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, + + // format tokens + formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, + localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, + + // parsing token regexes + parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 + parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 + parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 + parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 + parseTokenDigits = /\d+/, // nonzero number of digits + parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. + parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z + parseTokenT = /T/i, // T (ISO separator) + parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 + parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 + + //strict parsing regexes + parseTokenOneDigit = /\d/, // 0 - 9 + parseTokenTwoDigits = /\d\d/, // 00 - 99 + parseTokenThreeDigits = /\d{3}/, // 000 - 999 + parseTokenFourDigits = /\d{4}/, // 0000 - 9999 + parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 + parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, + + isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', + + isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], + ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], + ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], + ['GGGG-[W]WW', /\d{4}-W\d{2}/], + ['YYYY-DDD', /\d{4}-\d{3}/] + ], + + // iso time formats and regexes + isoTimes = [ + ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], + ['HH:mm', /(T| )\d\d:\d\d/], + ['HH', /(T| )\d\d/] + ], + + // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30'] + parseTimezoneChunker = /([\+\-]|\d\d)/gi, + + // getter and setter names + proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), + unitMillisecondFactors = { + 'Milliseconds' : 1, + 'Seconds' : 1e3, + 'Minutes' : 6e4, + 'Hours' : 36e5, + 'Days' : 864e5, + 'Months' : 2592e6, + 'Years' : 31536e6 + }, + + unitAliases = { + ms : 'millisecond', + s : 'second', + m : 'minute', + h : 'hour', + d : 'day', + D : 'date', + w : 'week', + W : 'isoWeek', + M : 'month', + Q : 'quarter', + y : 'year', + DDD : 'dayOfYear', + e : 'weekday', + E : 'isoWeekday', + gg: 'weekYear', + GG: 'isoWeekYear' + }, + + camelFunctions = { + dayofyear : 'dayOfYear', + isoweekday : 'isoWeekday', + isoweek : 'isoWeek', + weekyear : 'weekYear', + isoweekyear : 'isoWeekYear' + }, + + // format function strings + formatFunctions = {}, + + // default relative time thresholds + relativeTimeThresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year + }, + + // tokens to ordinalize and pad + ordinalizeTokens = 'DDD w W M D d'.split(' '), + paddedTokens = 'M D H h m s w W'.split(' '), + + formatTokenFunctions = { + M : function () { + return this.month() + 1; + }, + MMM : function (format) { + return this.localeData().monthsShort(this, format); + }, + MMMM : function (format) { + return this.localeData().months(this, format); + }, + D : function () { + return this.date(); + }, + DDD : function () { + return this.dayOfYear(); + }, + d : function () { + return this.day(); + }, + dd : function (format) { + return this.localeData().weekdaysMin(this, format); + }, + ddd : function (format) { + return this.localeData().weekdaysShort(this, format); + }, + dddd : function (format) { + return this.localeData().weekdays(this, format); + }, + w : function () { + return this.week(); + }, + W : function () { + return this.isoWeek(); + }, + YY : function () { + return leftZeroFill(this.year() % 100, 2); + }, + YYYY : function () { + return leftZeroFill(this.year(), 4); + }, + YYYYY : function () { + return leftZeroFill(this.year(), 5); + }, + YYYYYY : function () { + var y = this.year(), sign = y >= 0 ? '+' : '-'; + return sign + leftZeroFill(Math.abs(y), 6); + }, + gg : function () { + return leftZeroFill(this.weekYear() % 100, 2); + }, + gggg : function () { + return leftZeroFill(this.weekYear(), 4); + }, + ggggg : function () { + return leftZeroFill(this.weekYear(), 5); + }, + GG : function () { + return leftZeroFill(this.isoWeekYear() % 100, 2); + }, + GGGG : function () { + return leftZeroFill(this.isoWeekYear(), 4); + }, + GGGGG : function () { + return leftZeroFill(this.isoWeekYear(), 5); + }, + e : function () { + return this.weekday(); + }, + E : function () { + return this.isoWeekday(); + }, + a : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), true); + }, + A : function () { + return this.localeData().meridiem(this.hours(), this.minutes(), false); + }, + H : function () { + return this.hours(); + }, + h : function () { + return this.hours() % 12 || 12; + }, + m : function () { + return this.minutes(); + }, + s : function () { + return this.seconds(); + }, + S : function () { + return toInt(this.milliseconds() / 100); + }, + SS : function () { + return leftZeroFill(toInt(this.milliseconds() / 10), 2); + }, + SSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + SSSS : function () { + return leftZeroFill(this.milliseconds(), 3); + }, + Z : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); + }, + ZZ : function () { + var a = this.utcOffset(), + b = '+'; + if (a < 0) { + a = -a; + b = '-'; + } + return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); + }, + z : function () { + return this.zoneAbbr(); + }, + zz : function () { + return this.zoneName(); + }, + x : function () { + return this.valueOf(); + }, + X : function () { + return this.unix(); + }, + Q : function () { + return this.quarter(); + } + }, + + deprecations = {}, + + lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'], + + updateInProgress = false; + + // Pick the first defined of two or three arguments. dfl comes from + // default. + function dfl(a, b, c) { + switch (arguments.length) { + case 2: return a != null ? a : b; + case 3: return a != null ? a : b != null ? b : c; + default: throw new Error('Implement me'); + } + } + + function hasOwnProp(a, b) { + return hasOwnProperty.call(a, b); + } + + function defaultParsingFlags() { + // We need to deep clone this object, and es5 standard is not very + // helpful. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso: false + }; + } + + function printMsg(msg) { + if (moment.suppressDeprecationWarnings === false && + typeof console !== 'undefined' && console.warn) { + console.warn('Deprecation warning: ' + msg); + } + } + + function deprecate(msg, fn) { + var firstTime = true; + return extend(function () { + if (firstTime) { + printMsg(msg); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); + } + + function deprecateSimple(name, msg) { + if (!deprecations[name]) { + printMsg(msg); + deprecations[name] = true; + } + } + + function padToken(func, count) { + return function (a) { + return leftZeroFill(func.call(this, a), count); + }; + } + function ordinalizeToken(func, period) { + return function (a) { + return this.localeData().ordinal(func.call(this, a), period); + }; + } + + function monthDiff(a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + return -(wholeMonthDiff + adjust); + } + + while (ordinalizeTokens.length) { + i = ordinalizeTokens.pop(); + formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + } + while (paddedTokens.length) { + i = paddedTokens.pop(); + formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + } + formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + + + function meridiemFixWrap(locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // thie is not supposed to happen + return hour; + } + } + + /************************************ + Constructors + ************************************/ + + function Locale() { + } + + // Moment prototype object + function Moment(config, skipOverflow) { + if (skipOverflow !== false) { + checkOverflow(config); + } + copyConfig(this, config); + this._d = new Date(+config._d); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + moment.updateOffset(this); + updateInProgress = false; + } + } + + // Duration Constructor + function Duration(duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 36e5; // 1000 * 60 * 60 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = moment.localeData(); + + this._bubble(); + } + + /************************************ + Helpers + ************************************/ + + + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; + } + + function copyConfig(to, from) { + var i, prop, val; + + if (typeof from._isAMomentObject !== 'undefined') { + to._isAMomentObject = from._isAMomentObject; + } + if (typeof from._i !== 'undefined') { + to._i = from._i; + } + if (typeof from._f !== 'undefined') { + to._f = from._f; + } + if (typeof from._l !== 'undefined') { + to._l = from._l; + } + if (typeof from._strict !== 'undefined') { + to._strict = from._strict; + } + if (typeof from._tzm !== 'undefined') { + to._tzm = from._tzm; + } + if (typeof from._isUTC !== 'undefined') { + to._isUTC = from._isUTC; + } + if (typeof from._offset !== 'undefined') { + to._offset = from._offset; + } + if (typeof from._pf !== 'undefined') { + to._pf = from._pf; + } + if (typeof from._locale !== 'undefined') { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i in momentProperties) { + prop = momentProperties[i]; + val = from[prop]; + if (typeof val !== 'undefined') { + to[prop] = val; + } + } + } + + return to; + } + + function absRound(number) { + if (number < 0) { + return Math.ceil(number); + } else { + return Math.floor(number); + } + } + + // left zero fill a number + // see http://jsperf.com/left-zero-filling for performance comparison + function leftZeroFill(number, targetLength, forceSign) { + var output = '' + Math.abs(number), + sign = number >= 0; + + while (output.length < targetLength) { + output = '0' + output; + } + return (sign ? (forceSign ? '+' : '') : '-') + output; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + other = makeAs(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = moment.duration(val, period); + addOrSubtractDurationFromMoment(this, dur, direction); + return this; + }; + } + + function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = duration._days, + months = duration._months; + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(+mom._d + milliseconds * isAdding); + } + if (days) { + rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); + } + if (months) { + rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + moment.updateOffset(mom, days || months); + } + } + + // check if is an array + function isArray(input) { + return Object.prototype.toString.call(input) === '[object Array]'; + } + + function isDate(input) { + return Object.prototype.toString.call(input) === '[object Date]' || + input instanceof Date; + } + + // compare two arrays, return the number of differences + function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; + } + + function normalizeUnits(units) { + if (units) { + var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); + units = unitAliases[units] || camelFunctions[lowered] || lowered; + } + return units; + } + + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; + } + + function makeList(field) { + var count, setter; + + if (field.indexOf('week') === 0) { + count = 7; + setter = 'day'; + } + else if (field.indexOf('month') === 0) { + count = 12; + setter = 'month'; + } + else { + return; + } + + moment[field] = function (format, index) { + var i, getter, + method = moment._locale[field], + results = []; + + if (typeof format === 'number') { + index = format; + format = undefined; + } + + getter = function (i) { + var m = moment().utc().set(setter, i); + return method.call(moment._locale, m, format || ''); + }; + + if (index != null) { + return getter(index); + } + else { + for (i = 0; i < count; i++) { + results.push(getter(i)); + } + return results; + } + }; + } + + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + if (coercedNumber >= 0) { + value = Math.floor(coercedNumber); + } else { + value = Math.ceil(coercedNumber); + } + } + + return value; + } + + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + } + + function weeksInYear(year, dow, doy) { + return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + } + + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; + } + + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + } + + function checkOverflow(m) { + var overflow; + if (m._a && m._pf.overflow === -2) { + overflow = + m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : + m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : + m._a[HOUR] < 0 || m._a[HOUR] > 24 || + (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || + m._a[SECOND] !== 0 || + m._a[MILLISECOND] !== 0)) ? HOUR : + m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : + m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : + m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + + m._pf.overflow = overflow; + } + } + + function isValid(m) { + if (m._isValid == null) { + m._isValid = !isNaN(m._d.getTime()) && + m._pf.overflow < 0 && + !m._pf.empty && + !m._pf.invalidMonth && + !m._pf.nullInput && + !m._pf.invalidFormat && + !m._pf.userInvalidated; + + if (m._strict) { + m._isValid = m._isValid && + m._pf.charsLeftOver === 0 && + m._pf.unusedTokens.length === 0 && + m._pf.bigHour === undefined; + } + } + return m._isValid; + } + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + if (!locales[name] && hasModule) { + try { + oldLocale = moment.locale(); + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales + moment.locale(oldLocale); + } catch (e) { } + } + return locales[name]; + } + + // Return a moment from input, that is local/utc/utcOffset equivalent to + // model. + function makeAs(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (moment.isMoment(input) || isDate(input) ? + +input : +moment(input)) - (+res); + // Use low-level api, because this fn is low-level api. + res._d.setTime(+res._d + diff); + moment.updateOffset(res, false); + return res; + } else { + return moment(input).local(); + } + } + + /************************************ + Locale + ************************************/ + + + extend(Locale.prototype, { + + set : function (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (typeof prop === 'function') { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + }, + + _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + months : function (m) { + return this._months[m.month()]; + }, + + _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + monthsShort : function (m) { + return this._monthsShort[m.month()]; + }, + + monthsParse : function (monthName, format, strict) { + var i, mom, regex; + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = moment.utc([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } + }, + + _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdays : function (m) { + return this._weekdays[m.day()]; + }, + + _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysShort : function (m) { + return this._weekdaysShort[m.day()]; + }, + + _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + weekdaysMin : function (m) { + return this._weekdaysMin[m.day()]; + }, + + weekdaysParse : function (weekdayName) { + var i, mom, regex; + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + if (!this._weekdaysParse[i]) { + mom = moment([2000, 1]).day(i); + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + }, + + _longDateFormat : { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY LT', + LLLL : 'dddd, MMMM D, YYYY LT' + }, + longDateFormat : function (key) { + var output = this._longDateFormat[key]; + if (!output && this._longDateFormat[key.toUpperCase()]) { + output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + this._longDateFormat[key] = output; + } + return output; + }, + + isPM : function (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + }, + + _meridiemParse : /[ap]\.?m?\.?/i, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + }, + + + _calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + calendar : function (key, mom, now) { + var output = this._calendar[key]; + return typeof output === 'function' ? output.apply(mom, [now]) : output; + }, + + _relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + + relativeTime : function (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (typeof output === 'function') ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); + }, + + pastFuture : function (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); + }, + + ordinal : function (number) { + return this._ordinal.replace('%d', number); + }, + _ordinal : '%d', + _ordinalParse : /\d{1,2}/, + + preparse : function (string) { + return string; + }, + + postformat : function (string) { + return string; + }, + + week : function (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; + }, + + _week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }, + + firstDayOfWeek : function () { + return this._week.dow; + }, + + firstDayOfYear : function () { + return this._week.doy; + }, + + _invalidDate: 'Invalid date', + invalidDate: function () { + return this._invalidDate; + } + }); + + /************************************ + Formatting + ************************************/ + + + function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); + } + + function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = ''; + for (i = 0; i < length; i++) { + output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; + } + return output; + }; + } + + // format date using native date object + function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + + if (!formatFunctions[format]) { + formatFunctions[format] = makeFormatFunction(format); + } + + return formatFunctions[format](m); + } + + function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; + } + + + /************************************ + Parsing + ************************************/ + + + // get the regex to find the next token + function getParseRegexForToken(token, config) { + var a, strict = config._strict; + switch (token) { + case 'Q': + return parseTokenOneDigit; + case 'DDDD': + return parseTokenThreeDigits; + case 'YYYY': + case 'GGGG': + case 'gggg': + return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; + case 'Y': + case 'G': + case 'g': + return parseTokenSignedNumber; + case 'YYYYYY': + case 'YYYYY': + case 'GGGGG': + case 'ggggg': + return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; + case 'S': + if (strict) { + return parseTokenOneDigit; + } + /* falls through */ + case 'SS': + if (strict) { + return parseTokenTwoDigits; + } + /* falls through */ + case 'SSS': + if (strict) { + return parseTokenThreeDigits; + } + /* falls through */ + case 'DDD': + return parseTokenOneToThreeDigits; + case 'MMM': + case 'MMMM': + case 'dd': + case 'ddd': + case 'dddd': + return parseTokenWord; + case 'a': + case 'A': + return config._locale._meridiemParse; + case 'x': + return parseTokenOffsetMs; + case 'X': + return parseTokenTimestampMs; + case 'Z': + case 'ZZ': + return parseTokenTimezone; + case 'T': + return parseTokenT; + case 'SSSS': + return parseTokenDigits; + case 'MM': + case 'DD': + case 'YY': + case 'GG': + case 'gg': + case 'HH': + case 'hh': + case 'mm': + case 'ss': + case 'ww': + case 'WW': + return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; + case 'M': + case 'D': + case 'd': + case 'H': + case 'h': + case 'm': + case 's': + case 'w': + case 'W': + case 'e': + case 'E': + return parseTokenOneOrTwoDigits; + case 'Do': + return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; + default : + a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); + return a; + } + } + + function utcOffsetFromString(string) { + string = string || ''; + var possibleTzMatches = (string.match(parseTokenTimezone) || []), + tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], + parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], + minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // function to convert string input to date + function addTimeToArrayFromToken(token, input, config) { + var a, datePartArray = config._a; + + switch (token) { + // QUARTER + case 'Q': + if (input != null) { + datePartArray[MONTH] = (toInt(input) - 1) * 3; + } + break; + // MONTH + case 'M' : // fall through to MM + case 'MM' : + if (input != null) { + datePartArray[MONTH] = toInt(input) - 1; + } + break; + case 'MMM' : // fall through to MMMM + case 'MMMM' : + a = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (a != null) { + datePartArray[MONTH] = a; + } else { + config._pf.invalidMonth = input; + } + break; + // DAY OF MONTH + case 'D' : // fall through to DD + case 'DD' : + if (input != null) { + datePartArray[DATE] = toInt(input); + } + break; + case 'Do' : + if (input != null) { + datePartArray[DATE] = toInt(parseInt( + input.match(/\d{1,2}/)[0], 10)); + } + break; + // DAY OF YEAR + case 'DDD' : // fall through to DDDD + case 'DDDD' : + if (input != null) { + config._dayOfYear = toInt(input); + } + + break; + // YEAR + case 'YY' : + datePartArray[YEAR] = moment.parseTwoDigitYear(input); + break; + case 'YYYY' : + case 'YYYYY' : + case 'YYYYYY' : + datePartArray[YEAR] = toInt(input); + break; + // AM / PM + case 'a' : // fall through to A + case 'A' : + config._meridiem = input; + // config._isPm = config._locale.isPM(input); + break; + // HOUR + case 'h' : // fall through to hh + case 'hh' : + config._pf.bigHour = true; + /* falls through */ + case 'H' : // fall through to HH + case 'HH' : + datePartArray[HOUR] = toInt(input); + break; + // MINUTE + case 'm' : // fall through to mm + case 'mm' : + datePartArray[MINUTE] = toInt(input); + break; + // SECOND + case 's' : // fall through to ss + case 'ss' : + datePartArray[SECOND] = toInt(input); + break; + // MILLISECOND + case 'S' : + case 'SS' : + case 'SSS' : + case 'SSSS' : + datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); + break; + // UNIX OFFSET (MILLISECONDS) + case 'x': + config._d = new Date(toInt(input)); + break; + // UNIX TIMESTAMP WITH MS + case 'X': + config._d = new Date(parseFloat(input) * 1000); + break; + // TIMEZONE + case 'Z' : // fall through to ZZ + case 'ZZ' : + config._useUTC = true; + config._tzm = utcOffsetFromString(input); + break; + // WEEKDAY - human + case 'dd': + case 'ddd': + case 'dddd': + a = config._locale.weekdaysParse(input); + // if we didn't get a weekday name, mark the date as invalid + if (a != null) { + config._w = config._w || {}; + config._w['d'] = a; + } else { + config._pf.invalidWeekday = input; + } + break; + // WEEK, WEEK DAY - numeric + case 'w': + case 'ww': + case 'W': + case 'WW': + case 'd': + case 'e': + case 'E': + token = token.substr(0, 1); + /* falls through */ + case 'gggg': + case 'GGGG': + case 'GGGGG': + token = token.substr(0, 2); + if (input) { + config._w = config._w || {}; + config._w[token] = toInt(input); + } + break; + case 'gg': + case 'GG': + config._w = config._w || {}; + config._w[token] = moment.parseTwoDigitYear(input); + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); + week = dfl(w.W, 1); + weekday = dfl(w.E, 1); + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); + week = dfl(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < dow) { + ++week; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + } else { + // default to begining of week + weekday = dow; + } + } + temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function dateFromConfig(config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + config._pf._overflowDayOfYear = true; + } + + date = makeUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dateFromObject(config) { + var normalizedInput; + + if (config._d) { + return; + } + + normalizedInput = normalizeObjectUnits(config._i); + config._a = [ + normalizedInput.year, + normalizedInput.month, + normalizedInput.day || normalizedInput.date, + normalizedInput.hour, + normalizedInput.minute, + normalizedInput.second, + normalizedInput.millisecond + ]; + + dateFromConfig(config); + } + + function currentDateArray(config) { + var now = new Date(); + if (config._useUTC) { + return [ + now.getUTCFullYear(), + now.getUTCMonth(), + now.getUTCDate() + ]; + } else { + return [now.getFullYear(), now.getMonth(), now.getDate()]; + } + } + + // date from string and format string + function makeDateFromStringAndFormat(config) { + if (config._f === moment.ISO_8601) { + parseISO(config); + return; + } + + config._a = []; + config._pf.empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + config._pf.unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + config._pf.empty = false; + } + else { + config._pf.unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + config._pf.unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + config._pf.charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + config._pf.unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._pf.bigHour === true && config._a[HOUR] <= 12) { + config._pf.bigHour = undefined; + } + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], + config._meridiem); + dateFromConfig(config); + checkOverflow(config); + } + + function unescapeFormat(s) { + return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + }); + } + + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function regexpEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + + // date from string and array of format strings + function makeDateFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + config._pf.invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._pf = defaultParsingFlags(); + tempConfig._f = config._f[i]; + makeDateFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += tempConfig._pf.charsLeftOver; + + //or tokens + currentScore += tempConfig._pf.unusedTokens.length * 10; + + tempConfig._pf.score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + // date from iso format + function parseISO(config) { + var i, l, + string = config._i, + match = isoRegex.exec(string); + + if (match) { + config._pf.iso = true; + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(string)) { + // match[5] should be 'T' or undefined + config._f = isoDates[i][0] + (match[6] || ' '); + break; + } + } + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(string)) { + config._f += isoTimes[i][0]; + break; + } + } + if (string.match(parseTokenTimezone)) { + config._f += 'Z'; + } + makeDateFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function makeDateFromString(config) { + parseISO(config); + if (config._isValid === false) { + delete config._isValid; + moment.createFromInputFallback(config); + } + } + + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; + } + + function makeDateFromInput(config) { + var input = config._i, matched; + if (input === undefined) { + config._d = new Date(); + } else if (isDate(input)) { + config._d = new Date(+input); + } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { + config._d = new Date(+matched[1]); + } else if (typeof input === 'string') { + makeDateFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + dateFromConfig(config); + } else if (typeof(input) === 'object') { + dateFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + moment.createFromInputFallback(config); + } + } + + function makeDate(y, m, d, h, M, s, ms) { + //can't just apply() to create a date: + //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply + var date = new Date(y, m, d, h, M, s, ms); + + //the date constructor doesn't accept years < 1970 + if (y < 1970) { + date.setFullYear(y); + } + return date; + } + + function makeUTCDate(y) { + var date = new Date(Date.UTC.apply(null, arguments)); + if (y < 1970) { + date.setUTCFullYear(y); + } + return date; + } + + function parseWeekday(input, locale) { + if (typeof input === 'string') { + if (!isNaN(input)) { + input = parseInt(input, 10); + } + else { + input = locale.weekdaysParse(input); + if (typeof input !== 'number') { + return null; + } + } + } + return input; + } + + /************************************ + Relative Time + ************************************/ + + + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + + function relativeTime(posNegDuration, withoutSuffix, locale) { + var duration = moment.duration(posNegDuration).abs(), + seconds = round(duration.as('s')), + minutes = round(duration.as('m')), + hours = round(duration.as('h')), + days = round(duration.as('d')), + months = round(duration.as('M')), + years = round(duration.as('y')), + + args = seconds < relativeTimeThresholds.s && ['s', seconds] || + minutes === 1 && ['m'] || + minutes < relativeTimeThresholds.m && ['mm', minutes] || + hours === 1 && ['h'] || + hours < relativeTimeThresholds.h && ['hh', hours] || + days === 1 && ['d'] || + days < relativeTimeThresholds.d && ['dd', days] || + months === 1 && ['M'] || + months < relativeTimeThresholds.M && ['MM', months] || + years === 1 && ['y'] || ['yy', years]; + + args[2] = withoutSuffix; + args[3] = +posNegDuration > 0; + args[4] = locale; + return substituteTimeAgo.apply({}, args); + } + + + /************************************ + Week of Year + ************************************/ + + + // firstDayOfWeek 0 = sun, 6 = sat + // the day of the week that starts the week + // (usually sunday or monday) + // firstDayOfWeekOfYear 0 = sun, 6 = sat + // the first week is the week that contains the first + // of this day of the week + // (eg. ISO weeks use thursday (4)) + function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { + var end = firstDayOfWeekOfYear - firstDayOfWeek, + daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), + adjustedMoment; + + + if (daysToDayOfWeek > end) { + daysToDayOfWeek -= 7; + } + + if (daysToDayOfWeek < end - 7) { + daysToDayOfWeek += 7; + } + + adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); + return { + week: Math.ceil(adjustedMoment.dayOfYear() / 7), + year: adjustedMoment.year() + }; + } + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { + var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + + d = d === 0 ? 7 : d; + weekday = weekday != null ? weekday : firstDayOfWeek; + daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); + dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + + return { + year: dayOfYear > 0 ? year : year - 1, + dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear + }; + } + + /************************************ + Top Level Functions + ************************************/ + + function makeMoment(config) { + var input = config._i, + format = config._f, + res; + + config._locale = config._locale || moment.localeData(config._l); + + if (input === null || (format === undefined && input === '')) { + return moment.invalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (moment.isMoment(input)) { + return new Moment(input, true); + } else if (format) { + if (isArray(format)) { + makeDateFromStringAndArray(config); + } else { + makeDateFromStringAndFormat(config); + } + } else { + makeDateFromInput(config); + } + + res = new Moment(config); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + moment = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._i = input; + c._f = format; + c._l = locale; + c._strict = strict; + c._isUTC = false; + c._pf = defaultParsingFlags(); + + return makeMoment(c); + }; + + moment.suppressDeprecationWarnings = false; + + moment.createFromInputFallback = deprecate( + 'moment construction falls back to js Date. This is ' + + 'discouraged and will be removed in upcoming major ' + + 'release. Please refer to ' + + 'https://github.com/moment/moment/issues/1407 for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return moment(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + moment.min = function () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + }; + + moment.max = function () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + }; + + // creating with utc + moment.utc = function (input, format, locale, strict) { + var c; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c = {}; + c._isAMomentObject = true; + c._useUTC = true; + c._isUTC = true; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + c._pf = defaultParsingFlags(); + + return makeMoment(c).utc(); + }; + + // creating with unix timestamp (in seconds) + moment.unix = function (input) { + return moment(input * 1000); + }; + + // duration + moment.duration = function (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + parseIso, + diffRes; + + if (moment.isDuration(input)) { + duration = { + ms: input._milliseconds, + d: input._days, + M: input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y: 0, + d: toInt(match[DATE]) * sign, + h: toInt(match[HOUR]) * sign, + m: toInt(match[MINUTE]) * sign, + s: toInt(match[SECOND]) * sign, + ms: toInt(match[MILLISECOND]) * sign + }; + } else if (!!(match = isoDurationRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + parseIso = function (inp) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + }; + duration = { + y: parseIso(match[2]), + M: parseIso(match[3]), + d: parseIso(match[4]), + h: parseIso(match[5]), + m: parseIso(match[6]), + s: parseIso(match[7]), + w: parseIso(match[8]) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && + ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + }; + + // version number + moment.version = VERSION; + + // default format + moment.defaultFormat = isoFormat; + + // constant that refers to the ISO standard + moment.ISO_8601 = function () {}; + + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + moment.momentProperties = momentProperties; + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + moment.updateOffset = function () {}; + + // This function allows you to set a threshold for relative time strings + moment.relativeTimeThreshold = function (threshold, limit) { + if (relativeTimeThresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return relativeTimeThresholds[threshold]; + } + relativeTimeThresholds[threshold] = limit; + return true; + }; + + moment.lang = deprecate( + 'moment.lang is deprecated. Use moment.locale instead.', + function (key, value) { + return moment.locale(key, value); + } + ); + + // This function will load locale and then set the global locale. If + // no arguments are passed in, it will simply return the current global + // locale key. + moment.locale = function (key, values) { + var data; + if (key) { + if (typeof(values) !== 'undefined') { + data = moment.defineLocale(key, values); + } + else { + data = moment.localeData(key); + } + + if (data) { + moment.duration._locale = moment._locale = data; + } + } + + return moment._locale._abbr; + }; + + moment.defineLocale = function (name, values) { + if (values !== null) { + values.abbr = name; + if (!locales[name]) { + locales[name] = new Locale(); + } + locales[name].set(values); + + // backwards compat for now: also set the locale + moment.locale(name); + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } + }; + + moment.langData = deprecate( + 'moment.langData is deprecated. Use moment.localeData instead.', + function (key) { + return moment.localeData(key); + } + ); + + // returns locale data + moment.localeData = function (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return moment._locale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + }; + + // compare moment object + moment.isMoment = function (obj) { + return obj instanceof Moment || + (obj != null && hasOwnProp(obj, '_isAMomentObject')); + }; + + // for typechecking Duration objects + moment.isDuration = function (obj) { + return obj instanceof Duration; + }; + + for (i = lists.length - 1; i >= 0; --i) { + makeList(lists[i]); + } + + moment.normalizeUnits = function (units) { + return normalizeUnits(units); + }; + + moment.invalid = function (flags) { + var m = moment.utc(NaN); + if (flags != null) { + extend(m._pf, flags); + } + else { + m._pf.userInvalidated = true; + } + + return m; + }; + + moment.parseZone = function () { + return moment.apply(null, arguments).parseZone(); + }; + + moment.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + moment.isDate = isDate; + + /************************************ + Moment Prototype + ************************************/ + + + extend(moment.fn = Moment.prototype, { + + clone : function () { + return moment(this); + }, + + valueOf : function () { + return +this._d - ((this._offset || 0) * 60000); + }, + + unix : function () { + return Math.floor(+this / 1000); + }, + + toString : function () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + }, + + toDate : function () { + return this._offset ? new Date(+this) : this._d; + }, + + toISOString : function () { + var m = moment(this).utc(); + if (0 < m.year() && m.year() <= 9999) { + if ('function' === typeof Date.prototype.toISOString) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + }, + + toArray : function () { + var m = this; + return [ + m.year(), + m.month(), + m.date(), + m.hours(), + m.minutes(), + m.seconds(), + m.milliseconds() + ]; + }, + + isValid : function () { + return isValid(this); + }, + + isDSTShifted : function () { + if (this._a) { + return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; + } + + return false; + }, + + parsingFlags : function () { + return extend({}, this._pf); + }, + + invalidAt: function () { + return this._pf.overflow; + }, + + utc : function (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + }, + + local : function (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(this._dateUtcOffset(), 'm'); + } + } + return this; + }, + + format : function (inputString) { + var output = formatMoment(this, inputString || moment.defaultFormat); + return this.localeData().postformat(output); + }, + + add : createAdder(1, 'add'), + + subtract : createAdder(-1, 'subtract'), + + diff : function (input, units, asFloat) { + var that = makeAs(input, this), + zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4, + anchor, diff, output, daysAdjust; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + diff = this - that; + output = units === 'second' ? diff / 1e3 : // 1000 + units === 'minute' ? diff / 6e4 : // 1000 * 60 + units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + diff; + } + return asFloat ? output : absRound(output); + }, + + from : function (time, withoutSuffix) { + return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + }, + + fromNow : function (withoutSuffix) { + return this.from(moment(), withoutSuffix); + }, + + calendar : function (time) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're locat/utc/offset + // or not. + var now = time || moment(), + sod = makeAs(now, this).startOf('day'), + diff = this.diff(sod, 'days', true), + format = diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + return this.format(this.localeData().calendar(format, this, moment(now))); + }, + + isLeapYear : function () { + return isLeapYear(this.year()); + }, + + isDST : function () { + return (this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset()); + }, + + day : function (input) { + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } + }, + + month : makeAccessor('Month', true), + + startOf : function (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + /* falls through */ + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } else if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + }, + + endOf: function (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + }, + + isAfter: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return inputMs < +this.clone().startOf(units); + } + }, + + isBefore: function (input, units) { + var inputMs; + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + inputMs = moment.isMoment(input) ? +input : +moment(input); + return +this.clone().endOf(units) < inputMs; + } + }, + + isBetween: function (from, to, units) { + return this.isAfter(from, units) && this.isBefore(to, units); + }, + + isSame: function (input, units) { + var inputMs; + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + inputMs = +moment(input); + return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); + } + }, + + min: deprecate( + 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other < this ? this : other; + } + ), + + max: deprecate( + 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', + function (other) { + other = moment.apply(null, arguments); + return other > this ? this : other; + } + ), + + zone : deprecate( + 'moment().zone is deprecated, use moment().utcOffset instead. ' + + 'https://github.com/moment/moment/issues/1779', + function (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + ), + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + utcOffset : function (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (input != null) { + if (typeof input === 'string') { + input = utcOffsetFromString(input); + } + if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = this._dateUtcOffset(); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addOrSubtractDurationFromMoment(this, + moment.duration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + moment.updateOffset(this, true); + this._changeInProgress = null; + } + } + + return this; + } else { + return this._isUTC ? offset : this._dateUtcOffset(); + } + }, + + isLocal : function () { + return !this._isUTC; + }, + + isUtcOffset : function () { + return this._isUTC; + }, + + isUtc : function () { + return this._isUTC && this._offset === 0; + }, + + zoneAbbr : function () { + return this._isUTC ? 'UTC' : ''; + }, + + zoneName : function () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + }, + + parseZone : function () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + this.utcOffset(utcOffsetFromString(this._i)); + } + return this; + }, + + hasAlignedHourOffset : function (input) { + if (!input) { + input = 0; + } + else { + input = moment(input).utcOffset(); + } + + return (this.utcOffset() - input) % 60 === 0; + }, + + daysInMonth : function () { + return daysInMonth(this.year(), this.month()); + }, + + dayOfYear : function (input) { + var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + }, + + quarter : function (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + }, + + weekYear : function (input) { + var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + isoWeekYear : function (input) { + var year = weekOfYear(this, 1, 4).year; + return input == null ? year : this.add((input - year), 'y'); + }, + + week : function (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + isoWeek : function (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + }, + + weekday : function (input) { + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + }, + + isoWeekday : function (input) { + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); + }, + + isoWeeksInYear : function () { + return weeksInYear(this.year(), 1, 4); + }, + + weeksInYear : function () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units](); + }, + + set : function (units, value) { + var unit; + if (typeof units === 'object') { + for (unit in units) { + this.set(unit, units[unit]); + } + } + else { + units = normalizeUnits(units); + if (typeof this[units] === 'function') { + this[units](value); + } + } + return this; + }, + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + locale : function (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = moment.localeData(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + }, + + lang : deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ), + + localeData : function () { + return this._locale; + }, + + _dateUtcOffset : function () { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(this._d.getTimezoneOffset() / 15) * 15; + } + + }); + + function rawMonthSetter(mom, value) { + var dayOfMonth; + + // TODO: Move this out of here! + if (typeof value === 'string') { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } + + dayOfMonth = Math.min(mom.date(), + daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } + + function rawGetter(mom, unit) { + return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + } + + function rawSetter(mom, unit, value) { + if (unit === 'Month') { + return rawMonthSetter(mom, value); + } else { + return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } + + function makeAccessor(unit, keepTime) { + return function (value) { + if (value != null) { + rawSetter(this, unit, value); + moment.updateOffset(this, keepTime); + return this; + } else { + return rawGetter(this, unit); + } + }; + } + + moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); + moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); + moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); + // moment.fn.month is defined separately + moment.fn.date = makeAccessor('Date', true); + moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); + moment.fn.year = makeAccessor('FullYear', true); + moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + + // add plural methods + moment.fn.days = moment.fn.day; + moment.fn.months = moment.fn.month; + moment.fn.weeks = moment.fn.week; + moment.fn.isoWeeks = moment.fn.isoWeek; + moment.fn.quarters = moment.fn.quarter; + + // add aliased format methods + moment.fn.toJSON = moment.fn.toISOString; + + // alias isUtc for dev-friendliness + moment.fn.isUTC = moment.fn.isUtc; + + /************************************ + Duration Prototype + ************************************/ + + + function daysToYears (days) { + // 400 years have 146097 days (taking into account leap year rules) + return days * 400 / 146097; + } + + function yearsToDays (years) { + // years * 365 + absRound(years / 4) - + // absRound(years / 100) + absRound(years / 400); + return years * 146097 / 400; + } + + extend(moment.duration.fn = Duration.prototype, { + + _bubble : function () { + var milliseconds = this._milliseconds, + days = this._days, + months = this._months, + data = this._data, + seconds, minutes, hours, years = 0; + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absRound(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absRound(seconds / 60); + data.minutes = minutes % 60; + + hours = absRound(minutes / 60); + data.hours = hours % 24; + + days += absRound(hours / 24); + + // Accurately convert days to years, assume start from year 0. + years = absRound(daysToYears(days)); + days -= absRound(yearsToDays(years)); + + // 30 days to a month + // TODO (iskren): Use anchor date (like 1st Jan) to compute this. + months += absRound(days / 30); + days %= 30; + + // 12 months -> 1 year + years += absRound(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + }, + + abs : function () { + this._milliseconds = Math.abs(this._milliseconds); + this._days = Math.abs(this._days); + this._months = Math.abs(this._months); + + this._data.milliseconds = Math.abs(this._data.milliseconds); + this._data.seconds = Math.abs(this._data.seconds); + this._data.minutes = Math.abs(this._data.minutes); + this._data.hours = Math.abs(this._data.hours); + this._data.months = Math.abs(this._data.months); + this._data.years = Math.abs(this._data.years); + + return this; + }, + + weeks : function () { + return absRound(this.days() / 7); + }, + + valueOf : function () { + return this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6; + }, + + humanize : function (withSuffix) { + var output = relativeTime(this, !withSuffix, this.localeData()); + + if (withSuffix) { + output = this.localeData().pastFuture(+this, output); + } + + return this.localeData().postformat(output); + }, + + add : function (input, val) { + // supports only 2.0-style add(1, 's') or add(moment) + var dur = moment.duration(input, val); + + this._milliseconds += dur._milliseconds; + this._days += dur._days; + this._months += dur._months; + + this._bubble(); + + return this; + }, + + subtract : function (input, val) { + var dur = moment.duration(input, val); + + this._milliseconds -= dur._milliseconds; + this._days -= dur._days; + this._months -= dur._months; + + this._bubble(); + + return this; + }, + + get : function (units) { + units = normalizeUnits(units); + return this[units.toLowerCase() + 's'](); + }, + + as : function (units) { + var days, months; + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + this._milliseconds / 864e5; + months = this._months + daysToYears(days) * 12; + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(yearsToDays(this._months / 12)); + switch (units) { + case 'week': return days / 7 + this._milliseconds / 6048e5; + case 'day': return days + this._milliseconds / 864e5; + case 'hour': return days * 24 + this._milliseconds / 36e5; + case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; + case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } + }, + + lang : moment.fn.lang, + locale : moment.fn.locale, + + toIsoString : deprecate( + 'toIsoString() is deprecated. Please use toISOString() instead ' + + '(notice the capitals)', + function () { + return this.toISOString(); + } + ), + + toISOString : function () { + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var years = Math.abs(this.years()), + months = Math.abs(this.months()), + days = Math.abs(this.days()), + hours = Math.abs(this.hours()), + minutes = Math.abs(this.minutes()), + seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + + if (!this.asSeconds()) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (this.asSeconds() < 0 ? '-' : '') + + 'P' + + (years ? years + 'Y' : '') + + (months ? months + 'M' : '') + + (days ? days + 'D' : '') + + ((hours || minutes || seconds) ? 'T' : '') + + (hours ? hours + 'H' : '') + + (minutes ? minutes + 'M' : '') + + (seconds ? seconds + 'S' : ''); + }, + + localeData : function () { + return this._locale; + }, + + toJSON : function () { + return this.toISOString(); + } + }); + + moment.duration.fn.toString = moment.duration.fn.toISOString; + + function makeDurationGetter(name) { + moment.duration.fn[name] = function () { + return this._data[name]; + }; + } + + for (i in unitMillisecondFactors) { + if (hasOwnProp(unitMillisecondFactors, i)) { + makeDurationGetter(i.toLowerCase()); + } + } + + moment.duration.fn.asMilliseconds = function () { + return this.as('ms'); + }; + moment.duration.fn.asSeconds = function () { + return this.as('s'); + }; + moment.duration.fn.asMinutes = function () { + return this.as('m'); + }; + moment.duration.fn.asHours = function () { + return this.as('h'); + }; + moment.duration.fn.asDays = function () { + return this.as('d'); + }; + moment.duration.fn.asWeeks = function () { + return this.as('weeks'); + }; + moment.duration.fn.asMonths = function () { + return this.as('M'); + }; + moment.duration.fn.asYears = function () { + return this.as('y'); + }; + + /************************************ + Default Locale + ************************************/ + + + // Set default locale, other locale will inherit from English. + moment.locale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); + + /* EMBED_LOCALES */ + + /************************************ + Exposing Moment + ************************************/ + + function makeGlobal(shouldDeprecate) { + /*global ender:false */ + if (typeof ender !== 'undefined') { + return; + } + oldGlobalMoment = globalScope.moment; + if (shouldDeprecate) { + globalScope.moment = deprecate( + 'Accessing Moment through the global scope is ' + + 'deprecated, and will be removed in an upcoming ' + + 'release.', + moment); + } else { + globalScope.moment = moment; + } + } + + // CommonJS module is defined + if (hasModule) { + module.exports = moment; + } else if (typeof define === 'function' && define.amd) { + define(function (require, exports, module) { + if (module.config && module.config() && module.config().noGlobal === true) { + // release the global variable + globalScope.moment = oldGlobalMoment; + } + + return moment; + }); + makeGlobal(true); + } else { + makeGlobal(); + } +}).call(this); \ No newline at end of file diff --git a/app/scripts/ucsd/nav-ie.js b/app/scripts/ucsd/nav-ie.js new file mode 100755 index 0000000..ab1b6e5 --- /dev/null +++ b/app/scripts/ucsd/nav-ie.js @@ -0,0 +1,116 @@ +/** + * Created by jkchang on 4/1/2015. + */ +(function(document) { + var mainNav = function() { + var navBtn = $('.btn-nav')[0]; + var navList = $('.navdrawer-container')[0]; + var layoutHeader = $('.layout-header')[0]; // for menu button transition + var layoutMain = $('.layout-main')[0]; + var layoutFooter = $('.layout-footer')[0]; + var navIsOpenedClass = 'navbar-is-opened'; + var menuOpen = 'open'; + var navListIsOpened = false; + + var toggleMainNav = function() { + if (!navListIsOpened) { + addClass(navList, navIsOpenedClass); + + addClass(layoutHeader, menuOpen); + addClass(layoutMain, menuOpen); + addClass(layoutFooter, menuOpen); + navListIsOpened = true; + } else { + removeClass(navList, navIsOpenedClass); + + removeClass(layoutHeader, menuOpen); + removeClass(layoutMain, menuOpen); + removeClass(layoutFooter, menuOpen); + navListIsOpened = false; + } + }; + + navBtn.attachEvent("onclick", function() { + toggleMainNav(); + }); + }; + + var mainSubNav = function() { + var subNav = $('.navbar-subnav')[0]; + var subList = $('.navbar-sublist')[0]; + var subNavList = 'subnav-is-opened'; + var subNavHover = 'subnav-hover'; + var subNavIsOpened = false; + + var toggleSubNav = function() { + if(!subNavIsOpened) { + addClass(subList, subNavList); + subNavIsOpened = !subNavIsOpened; + } else { + removeClass(subList, subNavList); + subNavIsOpened = !subNavIsOpened; + } + }; + + subNav.attachEvent("onclick", function() { + toggleSubNav(); + }); + + subNav.attachEvent("onmouseover", function() { + if(!isMobileView()) { + addClass(subNav, subNavHover); + subNavIsOpened = true; + } + }); + subNav.attachEvent("onmouseout", function() { + if(!isMobileView()) { + removeClass(subNav, subNavHover); + subNavIsOpened = false; + } + }); + }; + + var mainSearch = function() { + var searchBtn = $('.search-toggle')[0]; + var searchContent = $('.search-content')[0]; + var searchOpen = 'search-is-open'; + var isSearchOpen = false; + + var toggleSearch = function() { + if(!isSearchOpen) { + addClass(searchContent, searchOpen); + addClass(searchBtn, searchOpen); + isSearchOpen = true; + } else { + removeClass(searchContent, searchOpen); + removeClass(searchBtn, searchOpen); + isSearchOpen = false; + } + }; + + searchBtn.attachEvent("onclick", function() { + toggleSearch(); + }); + }; + + var isMobileView = function() { + var browserWidth = window.innerWidth; + var mobileDesktopBorder = 960; + + return (browserWidth < (mobileDesktopBorder+1)); + }; + + var addClass = function (element, className) { + if (!element) { return; } + element.className = element.className.replace(/\s+$/gi, '') + ' ' + className; + }; + + var removeClass = function(element, className) { + if (!element) { return; } + element.className = element.className.replace(className, ''); + }; + + mainNav(); + mainSubNav(); + mainSearch(); +})(document); \ No newline at end of file diff --git a/app/scripts/ucsd/nav-search.js b/app/scripts/ucsd/nav-search.js new file mode 100755 index 0000000..35bad6a --- /dev/null +++ b/app/scripts/ucsd/nav-search.js @@ -0,0 +1,103 @@ +$(document).ready(function() { + + var $body = $('body'), + desktopBreak = 768, + maxNavHeight = 38, + $topNav = $('#tdr_nav'), + $window = $(window), + $search = $topNav.find('.tdr_search'), + $searchBtn = $topNav.find('.btn-default'), + $navList = $('.tdr_nav_list'), + + /* do we have a nav menu? */ + hasNav = false; + + + if ($navList.find('> li').length > 0) { + hasNav = true; + } + + if (hasNav) { + /* init nav menu */ + $navList.superfish({ + cssArrows: false + }); + } else { + /* hide menu icon */ + $("#tdr_title_menu_link").attr("style", "display: none"); + $("#tdr_title_content").addClass("noMenu"); + } + + /* search link */ + $("#tdr_search_toggle").click(function(event) { + $search.toggleClass("show"); + }); + + $("#tdr_search_toggle").click(function(event) { + $searchBtn.toggleClass("btn-s"); + }); + + $(".navbar-toggle").on("click", function() { + $body.toggleClass("active"); + if ($('#tdr_search_content>form').length) { + $('#tdr_search_content>form').appendTo($('.nav-offcanvas>.tdr_search')); + $('#tdr_nav .tdr_nav_list').appendTo('#tdr_side_nav'); + } else { + $('.nav-offcanvas>.tdr_search>form').appendTo($('#tdr_search_content')); + $('#tdr_side_nav>.tdr_nav_list').prependTo('#tdr_nav_content'); + } + /* init nav menu */ + $navList.superfish({ + cssArrows: false + }); + }); + + function navMover() { + if ($window.width() >= desktopBreak) { + + if ($body.hasClass("active")) { + + $body.removeClass("active"); + + if ($('#tdr_search_content>form').length) { + // + } else { + $('.nav-offcanvas>.tdr_search>form').appendTo($('#tdr_search_content')); + $('#tdr_side_nav>.tdr_nav_list').prependTo('#tdr_nav_content'); + /* init nav menu */ + $navList.superfish({ + cssArrows: false + }); + } + + } + + if ($topNav.height() > maxNavHeight ) { + $body.addClass('collapse-nav'); + } else { + $body.removeClass('collapse-nav'); + } + } + + if ($window.width() < desktopBreak && $body.hasClass("collapse-nav")) { + $body.removeClass("collapse-nav"); + } + + + } + + + FastClick.attach(document.body); + + // Detecting IE 7 + var oldIE = false; + if(navigator.appVersion.indexOf("MSIE 7.")!=-1) { + oldIE = true; + } + + if (!oldIE) { + $window.on('load orientationchange resize', navMover); + } + + +}); \ No newline at end of file diff --git a/app/scripts/ucsd/nav.js b/app/scripts/ucsd/nav.js new file mode 100755 index 0000000..21ebc22 --- /dev/null +++ b/app/scripts/ucsd/nav.js @@ -0,0 +1,323 @@ +$(document).ready(function() { + $('.js-activated').dropdownHover().dropdown(); + FastClick.attach(document.body); +}); + +$('.dropdown-menu > li:last-child').on('focusout', function(){ + $('.dropdown').removeClass('open'); + $('.dropdown-toggle').attr('aria-expanded', 'false'); + +}); + +$('.dropdown').on('focusin', function(){ + $(this).addClass('open'); + $('.dropdown-toggle').attr('aria-expanded', 'true'); + +}); + + +(function(document) { + var desktop = 960; + var mobileBreakpoint = 640; + var navListIsOpened = undefined; +/* + var mainNav = function() { + var navBtn = $('.btn-nav')[0]; + var navList = $('.navdrawer-container')[0]; + var layoutHeader = $('.layout-header')[0]; // for menu button transition + var layoutMain = $('.layout-main')[0]; + var layoutFooter = $('.layout-footer')[0]; + var navIsOpenedClass = 'navbar-is-opened'; + var menuOpen = 'open'; + + + var toggleMainNav = function() { + if (navListIsOpened == undefined || !navListIsOpened) { + addClass(navList, navIsOpenedClass); + + addClass(layoutHeader, menuOpen); + addClass(layoutMain, menuOpen); + addClass(layoutFooter, menuOpen); + navListIsOpened = true; + + // min-height is for Safari 9.0.3 where bottom nav item is cut off + $('body').css('width', '100%').css('min-height', '100%'); + $('.navdrawer-container').css('z-index', '100').css('opacity', '1').css('overflow-y', 'scroll'); + $('.search-content').css('position', 'relative').css('width', '100%'); + + $('.layout-navbar .navbar-list>li:first-child').css('border-left', 'solid 1px #C8CFD3'); + $('.navdrawer-container.navbar-is-opened .navbar-list>li>a').css('border', '0').css('font-weight', '700').css('background', '#ECECEC').css('padding', '10px 10px 10px 20px').css('border-bottom', '1px solid #ccc'); + $('.navdrawer-container ul.navbar-sublist').css('display', 'block').css('position', 'relative').css('border-left', '0').css('border-top', '0'); + $('.navdrawer-container .navbar-sublist a').css('border', '0').css('margin', '0').css('display', 'block').css('background', '#FFF').css('color', '#004b6e').css('padding', '9px 2.5em 8px'); + + if (!isMobileView()) { + $('.navdrawer-container').css('width', '42%'); + } else { + $('.navdrawer-container').css('width', '83%'); + $('body').css('position', 'fixed'); + } + + } else { + removeClass(navList, navIsOpenedClass); + + removeClass(layoutHeader, menuOpen); + removeClass(layoutMain, menuOpen); + removeClass(layoutFooter, menuOpen); + navListIsOpened = false; + + $('body').css('position', '').css('width', '').css('min-height', ''); + $('.navdrawer-container').css('z-index', '').css('opacity', '0').css('overflow-y', '').css('width', ''); + $('.search-content').css('position', 'absolute').css('width', ''); + } + }; + + if (navBtn.addEventListener) { // ie8 conditional + navBtn.addEventListener('click', function(e) { + e.preventDefault(); + + toggleMainNav(); + }); + } else { + navBtn.attachEvent("onclick", function() { + toggleMainNav(); + }) + } + };*/ +/* + var mainSubNav = function() { + var subNavArray = $('.navbar-subnav'), + subListArray = $('.navbar-sublist'), + subNavList = 'subnav-is-opened', + subNavHover = 'subnav-hover', + subNavIsOpened = false; + var preIndex; + + // if there are subNav elements run + if (subNavArray) { + subNavArray.each(function(index) { + var subNav = subNavArray[index], + subList = subListArray[index]; + + // relocated toggleSubNav function due to variable scoping issues + var toggleSubNav = function() { + // check if subList opened, reset if antoher is already opened + checkToggleSubNav(); + + if (!subNavIsOpened) { + addClass(subList, subNavList); + subNavIsOpened = !subNavIsOpened; + preIndex = index; + } else { + removeClass(subList, subNavList); + subNavIsOpened = !subNavIsOpened; + } + }; + + var checkToggleSubNav = function() { + var checkSubNav = $('.subnav-is-opened')[0]; + + if (checkSubNav) { + removeClass(checkSubNav, subNavList); + if (preIndex != index) + subNavIsOpened = false; + } + }; + + if (subNav.addEventListener) { + + + if (subList != undefined) { + subList.addEventListener('click', function(e) { + e.stopPropagation(); + }); + } + + subNav.addEventListener('mouseover', function(e) { + e.preventDefault(); + + if (!isMobileView()) { + addClass(subNav, subNavHover); + subNavIsOpened = !subNavIsOpened; + } + }); + + subNav.addEventListener('mouseout', function(e) { + e.preventDefault(); + + if (!isMobileView()) { + removeClass(subNav, subNavHover); + subNavIsOpened = !subNavIsOpened; + } + }); + } else { // ie 7/8 fix + subNav.attachEvent("onclick", function() { + toggleSubNav(); + }); + + subNav.attachEvent("onmouseover", function() { + if (!isMobileView()) { + addClass(subNav, subNavHover); + subNavIsOpened = true; + } + }); + subNav.attachEvent("onmouseout", function() { + if (!isMobileView()) { + removeClass(subNav, subNavHover); + subNavIsOpened = false; + } + }); + } + }); + } + };*/ + + var mainSearch = function() { + + + var searchBtn = $('.navbar-static-top .search-toggle')[0]; + var searchContent = $('.navbar-static-top .search-content')[0]; + var searchOpen = 'search-is-open'; + var isSearchOpen = false; + + var toggleSearch = function() { + if (!isSearchOpen) { + addClass(searchContent, searchOpen); + addClass(searchBtn, searchOpen); + isSearchOpen = true; + } else { + removeClass(searchContent, searchOpen); + removeClass(searchBtn, searchOpen); + isSearchOpen = false; + } + }; + + if (searchBtn.addEventListener) { + searchBtn.addEventListener('click', function(e) { + e.preventDefault(); + toggleSearch(); + }); + } else { + searchBtn.attachEvent("onclick", function() { + toggleSearch(); + }) + } + }; + + var isMobileView = function() { + var browserWidth = window.innerWidth; + return (browserWidth < (mobileBreakpoint + 1)); + }; + + var addClass = function(element, className) { + if (!element) { + return; + } + element.className = element.className.replace(/\s+$/gi, '') + ' ' + className; + }; + + var removeClass = function(element, className) { + if (!element) { + return; + } + element.className = element.className.replace(className, ''); + }; + + var isMenuWrapped = false; + var menuWrappedWindowWidth = 0; + + var checkMenuHeight = function() { + + if (menuWrappedWindowWidth != 0 && $(window).width() > menuWrappedWindowWidth) { + // page width has expanded to a point where menu is no longer wrapping + isMenuWrapped = false; + menuWrappedWindowWidth = 0; + $('.layout-header button.btn-nav').css('display', 'none'); + $('.navdrawer-container').css('width', '100%').css('z-index', '100').css('opacity', '1').css('overflow-y', ''); + $('.navdrawer-container ul.navbar-sublist').css('display', '').css('position', '').css('border-left', '').css('border-top', ''); + } + + // check to see if the first menu item and last menu item are on the same row + //var t1 = $('nav .navbar-list>li:first').offset().top; + //var t2 = $('nav .navbar-list>li:last').offset().top; + + /*if (t1 != t2) { + if (!isMenuWrapped) { + // menu items are now wrapping + isMenuWrapped = true; + menuWrappedWindowWidth = $(window).width(); + + $('.layout-header button.btn-nav').css('display', 'block'); + $('.navdrawer-container').css('position', 'absolute').css('z-index', '-1').css('opacity', '0').css('overflow-y', 'scroll'); + //$('.navdrawer-container').css('z-index', '-1').css('opacity', '0').css('overflow-y', 'scroll'); + } + }*/ + } + + //mainNav(); + //mainSubNav(); + + mainSearch(); + + document.addEventListener('DOMContentLoaded', function(e) { + if (isMobileView()) { + $(".form-control").removeAttr("autofocus") + } else { + if ($(window).width() > desktop) { + checkMenuHeight(); + } + } + }); +/* + $(window).resize(function() { + if ($(window).width() > desktop && navListIsOpened !== undefined) { + // reset css to be compatible with media queries + $('.layout-header button.btn-nav').css('display', 'none'); + $('.navdrawer-container').css('width', '100%').css('z-index', '100').css('opacity', '1').css('overflow-y', '').css('position', ''); + $('.navdrawer-container ul.navbar-sublist').css('display', '').css('position', '').css('border-left', '').css('border-top', ''); + $('.layout-navbar .navbar-list>li>a').css('color', '#004b6e').css('background-color', '#FDFDFD').css('border-bottom', 'solid 3px rgba(255,255,255,.4)').css('border-right', 'solid 1px #C8CFD3').css('border-left', 'solid 1px rgba(255,255,255,.6)').css('text-decoration', 'none').css('padding', '9px 15px').css('line-height', '1.3').css('font-weight', '').css('border-bottom-color', ''); + $('.navdrawer-container .navbar-sublist a').css('display', 'block').css('background', '#FFF').css('border-bottom', 'solid 1px #C8CFD3').css('border-right', 'solid 1px #C8CFD3').css('border-left', 'solid 1px rgba(255,255,255,.6)').css('color', '#004b6e').css('padding', '9px 15px 8px').css('text-decoration', 'none'); + + $('.navbar-subnav').hover(function() { + $(this).addClass('subnav-hover'); + $('.navdrawer-container .navbar-subnav:hover>a').css('border-bottom', 'solid 3px #9FB3BF'); + }, function() { + $(this).removeClass('subnav-hover'); + $('.navdrawer-container .navbar-subnav>a').css('border-bottom', ''); + }); + + $('.navbar-subnav .navbar-sublist li').hover(function() { + $(this).css('background-color', '#EAEAEA'); + }, function() { + $('.navbar-subnav .navbar-sublist li>a').css('background-color', ''); + }); + + } else if (navListIsOpened !== undefined) { + $('.layout-header button.btn-nav').css('display', 'block'); + //$('.navdrawer-container').css('position', 'fixed').css('z-index', '-1').css('overflow-y', 'scroll'); + $('.navdrawer-container').css('z-index', '-1').css('overflow-y', 'scroll'); + } + + if ($(window).width() > desktop) { + checkMenuHeight(); + } + });*/ +})(document); + + +/*$('.navbar-toggle').click(function() { + //$('.mobile-search-input').focus(); + + if($('div.offcanvas').hasClass('canvas-slid')) { + + }; + +});*/ + +$('.offcanvas').on('shown.bs.offcanvas ', function (e) { + $('.search-scope').focus(); + $(".navbar-toggle").attr("aria-expanded","true"); +}) + +$('.offcanvas').on('hidden.bs.offcanvas', function (e) { + $(".navbar-toggle").attr("aria-expanded","false"); +}) \ No newline at end of file diff --git a/app/scripts/ucsd/profile-template.js b/app/scripts/ucsd/profile-template.js new file mode 100755 index 0000000..a7fe908 --- /dev/null +++ b/app/scripts/ucsd/profile-template.js @@ -0,0 +1,162 @@ +// Easy Responsive Tabs Plugin +// Author: Samson.Onna , Jonathan Chang + +var isMobileView = function() { + var browserWidth = window.innerWidth; + var mobileBreakpoint = 640; + + return (browserWidth < (mobileBreakpoint+1)); +}; + +(function ($) { + $.fn.extend({ + easyResponsiveTabs: function (options) { + //Set the default values, use comma to separate the settings, example: + var defaults = { + type: 'default', //default, vertical, accordion; + width: 'auto', + fit: true, + closed: false, + activate: function(){} + } + //Variables + var options = $.extend(defaults, options); + var opt = options, + jtype = opt.type, + jfit = opt.fit, + jwidth = opt.width, + vtabs = 'vertical', + accord = 'accordion'; + + + //Update: ttessema@ucsd.edu + /** Auto Select the first tab and tab container **/ + var init = function(){ + if($(".resp-tab-item").length > 0 && $(".resp-tab-content").length > 0) + { + $(".resp-tab-item").first().addClass("resp-tab-active"); + $(".resp-tab-content").first().addClass("resp-content-active"); + } + }; + + //Events + $(this).bind('tabactivate', function(e, currentTab) { + if(typeof options.activate === 'function') { + options.activate.call(currentTab, e) + } + }); + + //Main function + this.each(function () { + var $respTabs = $(this); + var $respTabsList = $respTabs.find('ul.resp-tabs-list'); + + + $respTabs.find('ul.resp-tabs-list li').addClass('resp-tab-item'); + $respTabs.css({ + 'display': 'block', + 'width': jwidth + }); + + $respTabs.find('.resp-tabs-container > div').addClass('resp-tab-content'); + jtab_options(); + //Properties Function + function jtab_options() { + if (jtype == vtabs) { + $respTabs.addClass('resp-vtabs'); + } + if (jfit == true) { + $respTabs.css({ width: '72%', margin: '0px' }); + + if(isMobileView()) { + $respTabs.css({width: '100%'}) + } + } + if (jtype == accord) { + $respTabs.addClass('resp-easy-accordion'); + $respTabs.find('.resp-tabs-list').css('display', 'none'); + } + } + + //Assigning the 'aria-controls' to Tab items + var count = 0, + $tabContent; + $respTabs.find('.resp-tab-item').each(function () { + $tabItem = $(this); + $tabItem.attr('aria-controls', 'tab_item-' + (count)); + $tabItem.attr('role', 'tab'); + + //First active tab, keep closed if option = 'closed' or option is 'accordion' and the element is in accordion mode + if(options.closed !== true && !(options.closed === 'accordion' && !$respTabsList.is(':visible')) && !(options.closed === 'tabs' && $respTabsList.is(':visible'))) { + $respTabs.find('.resp-tab-item').first().addClass('resp-tab-active'); + $respTabs.find('.resp-accordion').first().addClass('resp-tab-active'); + $respTabs.find('.resp-tab-content').first().addClass('resp-tab-content-active').attr('style', 'display:block'); + } + + //Assigning the 'aria-labelledby' attr to tab-content + var tabcount = 0; + $respTabs.find('.resp-tab-content').each(function () { + $tabContent = $(this); + $tabContent.attr('aria-labelledby', 'tab_item-' + (tabcount)); + tabcount++; + }); + count++; + }); + + //Tab Click action function + $respTabs.find("[role=tab]").each(function () { + var $currentTab = $(this); + $currentTab.click(function () { + + var $tabAria = $currentTab.attr('aria-controls'); + + if ($currentTab.hasClass('resp-accordion') && $currentTab.hasClass('resp-tab-active')) { + $respTabs.find('.resp-tab-content-active').slideUp(200, function () { $(this).addClass('resp-accordion-closed'); }); + $currentTab.removeClass('resp-tab-active'); + return false; + } + if (!$currentTab.hasClass('resp-tab-active') && $currentTab.hasClass('resp-accordion')) { + $respTabs.find('.resp-tab-active').removeClass('resp-tab-active'); + $respTabs.find('.resp-tab-content-active').slideUp(200).removeClass('resp-tab-content-active resp-accordion-closed'); + $respTabs.find("[aria-controls=" + $tabAria + "]").addClass('resp-tab-active'); + + $respTabs.find('.resp-tab-content[aria-labelledby = ' + $tabAria + ']').slideDown(200).addClass('resp-tab-content-active'); + } else { + $respTabs.find('.resp-tab-active').removeClass('resp-tab-active'); + $respTabs.find('.resp-tab-content-active').removeAttr('style').removeClass('resp-tab-content-active').removeClass('resp-accordion-closed'); + $respTabs.find("[aria-controls=" + $tabAria + "]").addClass('resp-tab-active'); + $respTabs.find('.resp-tab-content[aria-labelledby = ' + $tabAria + ']').addClass('resp-tab-content-active').attr('style', 'display:block'); + } + //Trigger tab activation event + $currentTab.trigger('tabactivate', $currentTab); + }); + //Window resize function + $(window).resize(function () { + $respTabs.find('.resp-accordion-closed').removeAttr('style'); + }); + }); + }); + } + }); +})(jQuery); + +var loadProfile = function() { + $(document).ready(function () { + $('#profileTab').easyResponsiveTabs({ + type: 'default', //Types: default, vertical, accordion + width: 'auto', //auto or any width like 600px + fit: true // 100% fit in a container + }); + + function responsiveTab() { + if(isMobileView()) { + $('#profileTab').css({ width: '100%' }); + + } else { + $('#profileTab').css({ width: '72%' }); + } + } + + $(window).bind('load orientationchange resize', responsiveTab); + }); +}; \ No newline at end of file diff --git a/app/scripts/ucsd/respond-proxy.js b/app/scripts/ucsd/respond-proxy.js new file mode 100755 index 0000000..c880d02 --- /dev/null +++ b/app/scripts/ucsd/respond-proxy.js @@ -0,0 +1,129 @@ +/*! Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ +(function(win, doc, undefined){ + var docElem = doc.documentElement, + proxyURL = doc.getElementById("respond-proxy").href, + redirectURL = (doc.getElementById("respond-redirect") || location).href, + baseElem = doc.getElementsByTagName("base")[0], + urls = [], + refNode; + + function encode(url){ + return win.encodeURIComponent(url); + } + + function fakejax( url, callback ){ + + var iframe, + AXO; + + // All hail Google http://j.mp/iKMI19 + // Behold, an iframe proxy without annoying clicky noises. + if ( "ActiveXObject" in win ) { + AXO = new ActiveXObject( "htmlfile" ); + AXO.open(); + AXO.write( '' ); + AXO.close(); + iframe = AXO.getElementById( "x" ); + } else { + iframe = doc.createElement( "iframe" ); + iframe.style.cssText = "position:absolute;top:-99em"; + docElem.insertBefore(iframe, docElem.firstElementChild || docElem.firstChild ); + } + + iframe.src = checkBaseURL(proxyURL) + "?url=" + encode(redirectURL) + "&css=" + encode(checkBaseURL(url)); + + function checkFrameName() { + var cssText; + + try { + cssText = iframe.contentWindow.name; + } + catch (e) { } + + if (cssText) { + // We've got what we need. Stop the iframe from loading further content. + iframe.src = "about:blank"; + iframe.parentNode.removeChild(iframe); + iframe = null; + + + // Per http://j.mp/kn9EPh, not taking any chances. Flushing the ActiveXObject + if (AXO) { + AXO = null; + + if (win.CollectGarbage) { + win.CollectGarbage(); + } + } + + callback(cssText); + } + else{ + win.setTimeout(checkFrameName, 100); + } + } + + win.setTimeout(checkFrameName, 500); + } + + // http://stackoverflow.com/a/472729 + function checkBaseURL(href) { + var el = document.createElement('div'), + escapedURL = href.split('&').join('&'). + split('<').join('<'). + split('"').join('"'); + + el.innerHTML = 'x'; + return el.firstChild.href; + } + + function checkRedirectURL() { + // IE6 & IE7 don't build out absolute urls in attributes. + // So respond.proxy.gif remains relative instead of http://example.com/respond.proxy.gif. + // This trickery resolves that issue. + if (~ !redirectURL.indexOf(location.host)) { + + var fakeLink = doc.createElement("div"); + + fakeLink.innerHTML = ''; + docElem.insertBefore(fakeLink, docElem.firstElementChild || docElem.firstChild ); + + // Grab the parsed URL from that dummy object + redirectURL = fakeLink.firstChild.href; + + // Clean up + fakeLink.parentNode.removeChild(fakeLink); + fakeLink = null; + } + } + + function buildUrls(){ + var links = doc.getElementsByTagName( "link" ); + + for( var i = 0, linkl = links.length; i < linkl; i++ ){ + + var thislink = links[i], + href = links[i].href, + extreg = (/^([a-zA-Z:]*\/\/(www\.)?)/).test( href ), + ext = (baseElem && !extreg) || extreg; + + //make sure it's an external stylesheet + if( thislink.rel.indexOf( "stylesheet" ) >= 0 && ext ){ + (function( link ){ + fakejax( href, function( css ){ + link.styleSheet.rawCssText = css; + respond.update(); + } ); + })( thislink ); + } + } + + + } + + if( !respond.mediaQueriesSupported ){ + checkRedirectURL(); + buildUrls(); + } + +})( window, document ); diff --git a/app/scripts/ucsd/rotator.js b/app/scripts/ucsd/rotator.js new file mode 100644 index 0000000..bb30350 --- /dev/null +++ b/app/scripts/ucsd/rotator.js @@ -0,0 +1,23 @@ +$(function() { + /* Initialize Carousel */ + var paused = 0; + $('.carousel').carousel({ + interval: 8000, + pause: 0 + }); + + /* Play trigger */ + $('#toggleCarousel,#toggleCarouselAria').click(function() { + var state = (paused) ? 'cycle' : 'pause'; + paused = (paused) ? 0 : 1; + $('.carousel').carousel(state); + $(this).find('span').toggleClass('glyphicon-play glyphicon-pause'); + $('#toggleCarousel,#toggleCarouselAria').attr('aria-label',$(this).attr('aria-label')==='carousel is playing, click to pause'?'carousel is paused, click to play':'carousel is playing, click to pause' ); + }); +}); + +$('.carousel').on('slid.bs.carousel', function () { + var carouselData = $(this).data('bs.carousel'); + var currentIndex = carouselData.$element.find('.carousel-indicators li').removeAttr("aria-current"); + var currentIndex = carouselData.$element.find('.carousel-indicators li.active').attr("aria-current","true"); +}); \ No newline at end of file diff --git a/app/scripts/ucsd/site-specific.js b/app/scripts/ucsd/site-specific.js new file mode 100755 index 0000000..8574eaf --- /dev/null +++ b/app/scripts/ucsd/site-specific.js @@ -0,0 +1,11 @@ +$(function() { + // this should work for 'n' permanent info sections + // where n is the number of sections added/copied unto the page + $('[id^="perm-desc-link-"]').on('click', function() { // id's and selects the permanent information section + + var id = this.id; // stores the id of the section clicked + var num = id.charAt(id.length-1); // extracts the section number which was clicked on + $('#perm-desc-detail-'+num).toggleClass('hidden'); // selects the section + the section number and toggles the show/hide + return false; + }); +}); \ No newline at end of file diff --git a/app/scripts/ucsd/social.js b/app/scripts/ucsd/social.js new file mode 100755 index 0000000..311bf8b --- /dev/null +++ b/app/scripts/ucsd/social.js @@ -0,0 +1,3 @@ +$('.social-list li').click(function(e) { + window.location.href = $(this).find('a').attr('href'); +}); \ No newline at end of file diff --git a/app/scripts/ucsd/title.js b/app/scripts/ucsd/title.js new file mode 100755 index 0000000..98bfa29 --- /dev/null +++ b/app/scripts/ucsd/title.js @@ -0,0 +1,57 @@ +(function(document) { + var title = $(".title-header"), + titleShort = $(".title-header-short"), + titleWidth = title[0].offsetWidth, + logoWidth = 229, + menuWidth = 62, + titleOverflow, + titleWrapper; + + var removeLongTitle = function () { + title.toggle( false ); + titleShort.toggle( true ); + }; + + var showLongTitle = function () { + title.toggle( true ); + titleShort.toggle( false ); + }; + + var checkOverflow = function( titleOverflow, titleWrapper ) { + if ( titleOverflow > titleWrapper ) { + removeLongTitle(); + } else { + showLongTitle(); + } + }; + + var checkTitleOverflow = function () { + // titleWrapper initialized here to dynamically + titleWrapper = $(".layout-title .layout-container")[0].offsetWidth; + + // NO hamburger menu & logo on right + if ( titleWrapper >= 960 ) { + titleOverflow = titleWidth + logoWidth + 1; + checkOverflow( titleOverflow, titleWrapper); + } + // hamburger menu & logo on right + else if( titleWrapper > 768 ) { + titleOverflow = titleWidth + logoWidth + menuWidth + 1; + checkOverflow( titleOverflow, titleWrapper); + } + // hamburger menu & logo on left + else if( titleWrapper <= 768 ) { + titleOverflow = titleWidth + menuWidth + 1; + checkOverflow( titleOverflow, titleWrapper); + } + }; + + // ToDo: function callback only registers twice + $(window).resize( function () { + checkTitleOverflow(); + }); + + $(window).ready( function () { + checkTitleOverflow(); + }); +})(document); \ No newline at end of file diff --git a/app/styles/.sass-cache/105206f376a69088a5453d042dc16647f01ea37a/_drawer.scssc b/app/styles/.sass-cache/105206f376a69088a5453d042dc16647f01ea37a/_drawer.scssc new file mode 100644 index 0000000..7ac500e Binary files /dev/null and b/app/styles/.sass-cache/105206f376a69088a5453d042dc16647f01ea37a/_drawer.scssc differ diff --git a/app/styles/.sass-cache/105206f376a69088a5453d042dc16647f01ea37a/_overwrite.scssc b/app/styles/.sass-cache/105206f376a69088a5453d042dc16647f01ea37a/_overwrite.scssc new file mode 100644 index 0000000..c35826c Binary files /dev/null and b/app/styles/.sass-cache/105206f376a69088a5453d042dc16647f01ea37a/_overwrite.scssc differ diff --git a/app/styles/.sass-cache/194da58ac2be09985e813b361c5574ffcfe86032/base.scssc b/app/styles/.sass-cache/194da58ac2be09985e813b361c5574ffcfe86032/base.scssc new file mode 100644 index 0000000..175a86f Binary files /dev/null and b/app/styles/.sass-cache/194da58ac2be09985e813b361c5574ffcfe86032/base.scssc differ diff --git a/app/styles/.sass-cache/a31f7e51e8bc09fc482c111c2b6010f0d112fb3a/_styling.scssc b/app/styles/.sass-cache/a31f7e51e8bc09fc482c111c2b6010f0d112fb3a/_styling.scssc new file mode 100644 index 0000000..afcfe54 Binary files /dev/null and b/app/styles/.sass-cache/a31f7e51e8bc09fc482c111c2b6010f0d112fb3a/_styling.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/_custom-variables.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/_custom-variables.scssc new file mode 100644 index 0000000..fe2b8b9 Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/_custom-variables.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/_variables.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/_variables.scssc new file mode 100644 index 0000000..7cb3f97 Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/_variables.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/layout.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/layout.scssc new file mode 100644 index 0000000..eddfb96 Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/layout.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/modules.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/modules.scssc new file mode 100644 index 0000000..b0d90b0 Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/modules.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/navbar.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/navbar.scssc new file mode 100644 index 0000000..237c96d Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/navbar.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/print.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/print.scssc new file mode 100644 index 0000000..0fc3b5b Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/print.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/reference.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/reference.scssc new file mode 100644 index 0000000..65c3da8 Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/reference.scssc differ diff --git a/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/vitro-modules.scssc b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/vitro-modules.scssc new file mode 100644 index 0000000..a30973c Binary files /dev/null and b/app/styles/.sass-cache/d910829efadceb850fa9adfdec3b63d0e4cea92b/vitro-modules.scssc differ diff --git a/app/styles/.sass-cache/e363f9723b22130c35ec86a2dc7b241919efa632/_flexslider.scssc b/app/styles/.sass-cache/e363f9723b22130c35ec86a2dc7b241919efa632/_flexslider.scssc new file mode 100644 index 0000000..9152b02 Binary files /dev/null and b/app/styles/.sass-cache/e363f9723b22130c35ec86a2dc7b241919efa632/_flexslider.scssc differ diff --git a/app/styles/base.css b/app/styles/base.css new file mode 100755 index 0000000..cf7be96 --- /dev/null +++ b/app/styles/base.css @@ -0,0 +1,1981 @@ +/********************* VARIABLES & MIXINS */ +/* BREAKPOINTS */ +/* COLORS */ +/* LAYOUT VALUES */ +/* FONTS */ +/* MIXINS */ +/**/ +/*$container-large-desktop: (1140px + $grid-gutter-width) !default;*/ +/********************* GOOGLE FONT */ +@import url("https://fonts.googleapis.com/css?family=Roboto"); +/********************* BASE */ +/* + * Consolidating image references + * to a singular location + * + * minimizes number of calls sent to reference images + */ +.title-logo, +.layout-footer > .layout-container { + background: url(img/sprite_base.png) no-repeat transparent; } + @media screen and (-webkit-min-device-pixel-ratio: 2) { + .title-logo, + .layout-footer > .layout-container { + background-image: url(img/sprite_base2x.png); + background-size: 500px 120px; } } + +.social-list li { + background: url(img/sprite_social.png) no-repeat transparent; } + +.msg h4, +.icon { + background: url(img/sprite_icon.png) no-repeat transparent; } + +.drawer-toggle a, .drawer h2 a, +.flex-pauseplay a { + background: url(img/sprite_icon_widget.svg) no-repeat transparent; + background-size: 16px 300px; } + +div.loading { + background: url(img/icon_loading.gif) no-repeat transparent; } + +span.loading { + background: url(img/icon_loading_inline.gif) no-repeat transparent; } + +.icon.asterisk, +.field .required, +.field_top .required, +.field_left .required { + background: url(img/asterisk.png) no-repeat transparent; } + +/* *********************************************** + * Layout + * + * Components: + * - base layout + * - header + * - footer + * - nav + * - more(?) + * + * ***************/ +/* *********************************************** + * BASE + * ***************/ +html, body { + background: #fff; + overflow-x: hidden; + color: #333; + font: normal normal normal 16px/1.7 'Roboto', sans-serif; } + +/* container will have media queries for sizing*/ +.layout-container { + max-width: 1200px; + width: 98%; + margin: 0px auto; + overflow: hidden; } + @media only screen and (max-width: 768px) { + .layout-container { + width: 94%; } } + @media only screen and (max-width: 1200px) { + .layout-container { + max-width: 960px; } } + +.layout-navbar .layout-container { + overflow: visible; } + +.layout-header { + /* to incorporate new navbar button*/ + display: block; + width: 100%; + background-color: #2b92b9; + /* + @media only screen and (min-width: $desktop-small + 1) { + height: 78px; + }*/ } + @media only screen and (min-width: 320px) and (max-width: 768px) { + .layout-header { + height: 105px; } } + +.layout-header, .isLoggedIn { + height: 100%; } + +.layout-login { + width: 100%; + background: #0B4A67; + overflow: hidden; } + +.login-content { + color: #fff; + font-size: 85%; + padding: .4em 0; + float: right; } + .login-content a { + color: #fff; + font-weight: 700; + text-transform: uppercase; } + +.layout-title { + font-family: 'Roboto', sans-serif; + box-sizing: border-box; + height: 92px; + width: 100%; + background: #fff; + padding: 1.5em 0; } + @media only screen and (max-width: 360px) { + .layout-title { + padding: 0.5em 0; } } + @media only screen and (max-width: 768px) { + .layout-title { + padding: 1em 0; + height: 115px; } } + +.layout-navbar { + min-height: 50px; + width: 100%; + background-color: #006A96; + border: 0; + border-bottom: 1px solid #006A96; + margin-bottom: 0; + z-index: 100; } + .layout-navbar .layout-container { + overflow: visible; } + +.layout-main { + width: 100%; } + +.layout-footer { + width: 100%; + color: #fff; + font-size: 90%; + border-top: 1px solid #ccc; + padding: 1em 0; + line-height: 1.5; } + .layout-footer > .layout-container { + background-position: right -74px; } + @media only screen and (max-width: 640px) { + .layout-footer > .layout-container { + background: none; } } + +h1, h2, h3, h4, h5, h6 { + color: #333; + font-weight: 400; + line-height: 1.1; + margin: 0 0 .25em; } + +h1 { + color: #006A96; + letter-spacing: .5px; } + +.h2, h2 { + font-size: 28px; } + +hr { + background-color: #ccc; + color: #ccc; + height: 1px; } + +a { + color: #016691; } + +/* *********************************************** + * HEADER + * **************/ +/* *********************************************** +* NAV +* **************/ +nav .container { + padding: 0; } + +.navbar-list { + list-style: none; + font-size: 16px; + padding: 9px 0 0 0; + margin: 0; } + +.navbar .caret { + margin-left: 7px; } + +.layout-navbar .navbar-list > li { + float: left; } + .layout-navbar .navbar-list > li > a { + display: block; + color: #fff; + background-color: #006A96; + padding: 9px 15px; + text-decoration: none; + line-height: 1.3; } + .layout-navbar .navbar-list > li.active > a { + border-bottom: #ffcd00 solid 3px; } + +.navbar { + margin-bottom: 0; } + +.navbar-default { + background-color: #006a96; + border-bottom: none; } + +.navbar-default .navbar-nav > li > a { + color: #fff; } + +.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { + background-color: #004663; + color: #fff; } + +.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { + background-color: #004663; + color: #fff; } + +.dropdown-menu { + background-color: #004663; } + +.dropdown-menu > li > a { + color: #fff; } + +.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { + background-color: #004663; + color: #fff; } + +.navbar-toggle { + background-color: #006A96; + float: left; + margin-left: 15px; } + +.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { + background-color: #004663; } + +.navbar-default .navbar-toggle .icon-bar { + background-color: #fff; } + +#search { + position: absolute !important; + width: 385px; } + +.navmenu-default .navmenu-nav > .active > a, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a, .navmenu-default .navmenu-nav > .active > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover, .navmenu-default .navmenu-nav > .active > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus { + color: #fff; + background-color: #004663; } + +.navmenu-default .navmenu-nav > li > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover, .navmenu-default .navmenu-nav > li > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus { + color: #fff; + background-color: #006a96; } + +.navmenu-nav { + padding-bottom: 0; } + +.navmenu-nav > li { + border-bottom: 1px solid #ccc; } + +.navmenu-default .navmenu-nav > li > a { + color: #333; } + +.open .navmenu-nav > li > a { + padding: 10px 20px 10px 30px; + color: #006a96; } + .open .navmenu-nav > li > a:hover { + color: #333; + background-color: transparent; + text-decoration: underline; } + +li.open { + border-bottom: none; } + +/* *********************************************** +* MAIN +* **************/ +.main-section { + line-height: 1.5; + padding: 0 0 1em 0; + /* space for smaller viewports */ + margin-bottom: 1em; } + @media only screen and (max-width: 768px) { + .main-section { + width: 100%; + padding: 0 0 1em; } } + +.main-section-content { + position: relative; } + +@media only screen and (max-width: 975px) { + .main-section-content img { + max-width: 100% !important; + height: auto !important; } } + +.main-section-supplement { + background-color: #F2F5F7; + border: solid 1px #C8CFD3; + padding: 1em; + margin-bottom: 1em; } + +.main-section-supplement h3 { + font-size: 115%; + color: #738AA3; + text-shadow: 0 1px 1px #FFF; } + +/* *********************************************** + * FOOTER + * **************/ +footer { + background-color: #006A96; } + +.footer-links { + list-style: none; + margin: .5em 0 0; + padding: 0; } + .footer-links > li { + display: inline; + margin-left: 0; + margin-right: .5em; + padding-right: .75em; } + .footer-links > li a { + color: #fff; + text-decoration: underline; } + .footer-links > li:first-child { + border-right: 1px solid #fff; } + +.footer .row { + padding: 1.5em .5em; + color: #fff; + font-size: .9em; } + +.footer-logo { + width: 158px; + height: 30px; + float: right; } + @media only screen and (max-width: 768px) { + .footer-logo { + float: none; + margin-top: 15px; } } + +/* *********************************************** + * Modules + * + * Components: + * - breadcrumbs + * - search + * - title + * - buttons + * - input + * - more(?) + * + * ***************/ +/* *********************************************** + * BREADCRUMBS + * ***************/ +.breadcrumbs-list { + background-color: #fff; + margin-bottom: 0; } + .breadcrumbs-list > li { + color: #666; + display: inline; + font-size: 80%; } + +/* *********************************************** + * NAVBAR + * ***************/ +/* *********************************************** + * SEARCH + * ***************/ +.search { + float: right; + position: relative; + margin-top: 4px; } + +.search-toggle { + color: #fff !important; + max-height: 38px; + background-color: transparent !important; + border-radius: 0; + -webkit-border-radius: 0; + border: none; + border-width: 0 1px; + outline: 0; + padding: 11px; } + .search-toggle:hover, .search-toggle.search-is-open { + color: #d9d9d9; + background-color: transparent; + border-color: none; + text-decoration: none; } + .search-toggle span.caret { + margin-left: 6px; } + +.search-content { + position: absolute; + right: 0; + width: 385px; + padding: 10px; + background-color: #00587d; + border: none; + border-width: 0 1px 2px; + display: none; } + @media only screen and (max-width: 960px) { + .search-content { + position: relative; + width: 100%; } } + +.search-content.search-is-open { + display: block; + z-index: 999; } + +.search-content .search-scope { + max-width: 30%; + font-size: 11px; + padding: 4px 2px 4px 0; + float: left; + height: 27px; } + +.search-content .input-group { + width: 250px; + float: right; } + +.search-content .form-control { + float: right; + -webkit-border-radius: 0; + border-radius: 0; + height: 26px; } + +/* *********************************************** + * TITLE + * ***************/ +.title-header { + float: left; + color: #000; + font-size: 1.35rem; + letter-spacing: 1px; + text-decoration: none; + text-transform: uppercase; } + .title-header.title-header-short { + display: none; } + @media only screen and (max-width: 480px) { + .title-header.title-header-short { + display: block; + margin-top: 2.25em; } } + .title-header:hover, .title-header:focus { + color: #666666; + text-decoration: none; } + @media only screen and (max-width: 480px) { + .title-header { + display: none; + margin-top: 2.25em; } } + @media only screen and (max-width: 360px) { + .title-header { + font-size: 20px; + margin-top: 2em; } } + +.title-header-large { + margin-top: 5px; } + @media only screen and (min-width: 480px) and (max-width: 768px) { + .title-header-large { + display: block; + margin-top: 2.5em; } } + +.title-logo { + float: right; + width: 229px; + height: 65px; + overflow: hidden; + text-indent: -999em; + background-position: 0 -3px; } + @media only screen and (max-width: 480px) { + .title-logo { + background-position: -239px -2px; + height: 45px; + width: 166px; } } + @media only screen and (max-width: 768px) { + .title-logo { + display: block; + position: absolute; } } + +/* *********************************************** + * MAIN CONTENT SIDE NAV + * ***************/ +.sidebar-section { + padding: 0 4em 1em 0; } + @media (max-width: 960px) { + .sidebar-section { + padding: 0 0 3em 0; + width: 100%; } } + +#site-logo img { + max-width: 100%; + height: auto; + margin-top: 0; + margin-bottom: 15px; } + @media (max-width: 768px) { + #site-logo img { + display: none; } } + +.main-content-nav { + background: #eee; + border: solid 1px #D8D7D7; + padding: 1em; + margin-bottom: 1em; } + @media only screen and (max-width: 768px) { + .main-content-nav { + margin-top: 0em; } } + .main-content-nav > h2 { + color: #333; + font-size: 140%; + margin: 0 0 .4em; + text-transform: capitalize; + font-weight: normal; } + .main-content-nav > ul { + /* for borders to line up properly */ + margin: 0 -1em -1em; + /* override navbar-list 14px for main navbar*/ + font-size: 1em; } + .main-content-nav > ul > li.active { + color: #004663; } + .main-content-nav > ul li { + border-top: solid 1px #D8D7D7; + list-style: none; } + .main-content-nav > ul li a { + display: block; + padding: 1em; + color: #333; } + .main-content-nav > ul li a:hover { + background-color: #006a96; + color: #fff; } + .main-content-nav > ul li a:hover, .main-content-nav > ul li a:link, .main-content-nav > ul li a:active { + text-decoration: none; } + .main-content-nav > ul li.active { + background-color: #fff; + padding: 1em 0 1em 1em; + font-weight: bold; } + .main-content-nav > ul li.active > ul li a { + color: #006a96; + padding-left: 0 !important; } + .main-content-nav > ul li.active > a { + color: #006a96; } + .main-content-nav > ul li.active a:hover { + text-decoration: underline; + color: #484949; + background-color: transparent; } + .main-content-nav > ul li ul { + margin: .4em 0 -.4em 1em; + padding: 0; } + .main-content-nav > ul li li { + font-size: 85%; } + +/* *********************************************** + * BUTTONS + * ***************/ +/* *********************************************** + * INPUT + * ***************/ +.form-control { + -webkit-border-radius: 0; + border-radius: 0; + padding: 0.5em; } + +.subhead { + font-size: 120%; } + +.layout-header.open, +.layout-main.open, +.layout-footer.open { + -webkit-transform: translate(42%, 0); + transform: translate(42%, 0); } + @media only screen and (max-width: 640px) { + .layout-header.open, + .layout-main.open, + .layout-footer.open { + -webkit-transform: translate(83%, 0); + transform: translate(83%, 0); } } + +.layout-header button.btn-nav { + position: relative; + float: left; + height: 44px; + color: #fff; + font-size: 24px; + background-image: none; + background-color: #006A96; + border-radius: 1px; + border: 1px solid #006A96; + padding: 9px 10px; + margin-right: 10px; } + @media only screen and (max-width: 360px) { + .layout-header button.btn-nav { + font-size: 20px; } } + @media only screen and (max-width: 960px) { + .layout-header button.btn-nav { + display: block; } } + +/* button iconbar styling */ +button.btn-nav .icon-bar { + display: block; + width: 30px; + height: 2px; + background-color: #fff; + border-radius: 1px; + margin-top: 0.25em; } + @media only screen and (max-width: 360px) { + button.btn-nav .icon-bar { + width: 22px; } } + +.btn-nav .icon-bar:nth-child(2), +.btn-nav .icon-bar:nth-child(3), +.btn-nav .icon-bar:nth-child(4) { + transition: all .2s ease; + transition-delay: .25s; + opacity: 1; } + +.btn-nav .icon-bar:nth-child(2) { + margin: 0; } + +/* button transition code */ +.btn-nav .icon-bar:nth-child(2), +.btn-nav .icon-bar:nth-child(4) { + -webkit-transition: all .2s ease; + -o-transition: all .2s ease; + transition: all .2s ease; + -webkit-transition-delay: .25s; + -o-transition-delay: .25s; + transition-delay: .25s; } + +.layout-header.open .btn-nav .icon-bar:nth-child(2) { + -webkit-transform: translate3d(0, 8px, 0) rotateZ(45deg); + -ms-transform: translate3d(0, 8px, 0) rotateZ(45deg); + -o-transform: translate3d(0, 8px, 0) rotateZ(45deg); + transform: translate3d(0, 8px, 0) rotateZ(45deg); } + +.layout-header.open .btn-nav .icon-bar:nth-child(3) { + opacity: 0; } + +.layout-header.open .btn-nav .icon-bar:nth-child(4) { + -webkit-transform: translate3d(0, -8px, 0) rotateZ(-45deg); + -ms-transform: translate3d(0, -8px, 0) rotateZ(-45deg); + -o-transform: translate3d(0, -8px, 0) rotateZ(-45deg); + transform: translate3d(0, -8px, 0) rotateZ(-45deg); } + +/* end button transition code */ +button:hover { + border-color: transparent; + background-color: rgba(254, 254, 254, 0.4); } + +button:focus { + border-color: transparent; + outline: 0; + background-color: rgba(254, 254, 254, 0.4); } + +button:active { + border-color: transparent; + background-color: rgba(254, 254, 254, 0.6); } + +.layout-navbar.navbar-is-opened .navbar-list > li { + float: none; } + +.navdrawer-container.navbar-is-opened .layout-container { + width: 100%; } + +.navdrawer-container.navbar-is-opened .navbar-list > li.active { + background: #fff; } + +.navdrawer-container.navbar-is-opened .navbar-list > li > a { + border: none; + border-bottom: 1px solid #ccc; + padding: 10px 10px 10px 20px; + background-color: #006a96 !important; + border: none !important; } + .navdrawer-container.navbar-is-opened .navbar-list > li > a:hover { + background-color: #004663 !important; } + @media only screen and (max-width: 960px) { + .navdrawer-container.navbar-is-opened .navbar-list > li > a { + border: 0; + font-weight: bold; + background: #006A96; + border-bottom: 1px solid #ccc; } } + +/* Search bar integration */ +.navdrawer-container.navbar-is-opened button.search-toggle { + display: none; } + +.navdrawer-container.navbar-is-opened .search { + width: 100%; + height: 100%; + float: none; } + +.navdrawer-container.navbar-is-opened .search-content { + display: block; + height: 43px; + padding: 7px; + background-color: #006A96; } + .navdrawer-container.navbar-is-opened .search-content .search-scope { + max-width: 30%; + font-size: 11px; + padding: 4px 2px 4px 0; + float: left; + height: 27px; } + .navdrawer-container.navbar-is-opened .search-content form > .input-group { + width: 55%; + float: right; } + .navdrawer-container.navbar-is-opened .search-content form > .input-group input { + height: 27px; } + +.navdrawer-container ul { + list-style-type: none; } + +/* sub list stylings */ +.navdrawer-container .navbar-subnav:hover > a { + border-bottom: solid 3px #9FB3BF; } + +.navbar-subnav .navbar-sublist li:hover > a { + background-color: #006A96; } + +.navdrawer-container ul.navbar-sublist { + display: none; + position: absolute; + font-size: 14px; + padding: 0; + margin-left: 0; + -webkit-box-shadow: 0 3px 5px 0 rgba(50, 50, 50, 0.2); + box-shadow: 0 3px 5px 0 rgba(50, 50, 50, 0.2); } + @media only screen and (max-width: 960px) { + .navdrawer-container ul.navbar-sublist { + display: block; + position: relative; + border-left: 0; + border-top: 0; + border-bottom: 1px solid #E2E2E2; + box-shadow: none; } } + +.navdrawer-container .subnav-hover ul.navbar-sublist { + display: block; + z-index: 3; } + @media only screen and (max-width: 960px) { + .navdrawer-container .subnav-hover ul.navbar-sublist { + display: block; + position: relative; + border: 0; + border-bottom: 1px solid #ccc; + -webkit-box-shadow: none; + box-shadow: none; } + .navdrawer-container .subnav-hover ul.navbar-sublist a { + border: 0; + padding-left: 3em; } } + +.navdrawer-container .navbar-sublist.subnav-is-opened { + display: block; } + +.navdrawer-container.navbar-is-opened .navbar-sublist.subnav-is-opened a { + border: 0; + padding-left: 3em; } + +.navdrawer-container .navbar-sublist a { + display: block; + background: #00587d; + color: #fff; + padding: 9px 15px 8px; + text-decoration: none; } + +.layout-header, +.layout-main, +.layout-footer { + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; } + +nav.navdrawer-container.navbar-is-opened { + position: fixed; + top: 0; + height: 100%; + opacity: 1; + border-right: 1px solid #DADADA; + -webkit-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; + -webkit-transform: translate(0, 0); + transform: translate(0, 0); + transition-delay: 0.15s; + pointer-events: auto; + z-index: 2; } + +.navbar-is-opened { + display: block; } + +.navbar-is-opened a:hover { + text-decoration: underline !important; } + +@media only screen and (max-width: 640px) { + .navdrawer-container.navbar-is-opened { + width: 83%; } + .navdrawer-container.navbar-is-opened .search { + max-width: none; } } +@media screen and (min-width: 320px) and (max-width: 640px) { + .navdrawer-container.navbar-is-opened .search-content form > .input-group { + width: 60%; } } + +@media only screen and (max-width: 768px) { + .layout-header .btn-nav { + margin-top: 1.7em; } } +@media only screen and (max-width: 960px) { + .navdrawer-container .navbar-sublist a { + border: none; + margin: 0; + padding-left: 2.5em !important; } } +@media only screen and (min-width: 960px) { + .navdrawer-container { + display: block; + width: 100%; + opacity: 1; } + + button.btn-nav { + display: none; } } +@media only screen and (max-width: 960px) { + .navdrawer-container { + position: fixed; + width: 42%; + z-index: -1; + opacity: 0; } + + .navdrawer-container .navbar-subnav .navbar-sublist.subnav-is-opened { + display: block; + position: relative; + border: 0; + border-bottom: 1px solid #ccc; + -webkit-box-shadow: none; + box-shadow: none; } } +.collapse-navbar .navdrawer-container { + position: fixed; + width: 42%; + z-index: -1; + opacity: 0; } + .collapse-navbar .navdrawer-container .subnav-hover ul.navbar-sublist { + display: block; + position: relative; + border: 0; + border-bottom: 1px solid #ccc; + -webkit-box-shadow: none; + box-shadow: none; } + .collapse-navbar .navdrawer-container .subnav-hover ul.navbar-sublist a { + border: 0; + padding-left: 3em; } + +.collapse-navbar .btn-nav { + display: block; } + +.collapse-navbar .search-content { + position: relative; + width: 100%; } + +/* Blink & TL Styles */ +.blink-nav-button { + background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/img/blink_nav.png) 0 6px no-repeat !important; + min-width: 78px; } + .blink-nav-button a { + color: transparent !important; + background-color: transparent !important; } + +.tlink-nav-button { + background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/img/current_students_nav.png) 0 6px no-repeat !important; + min-width: 103px; } + .tlink-nav-button a { + color: transparent !important; + background-color: transparent !important; } + +/********************************************************************** + * Basic CSS styling + */ +.clearfix { + overflow: auto; } + +/* -------------------------------------------------------------------- + * table + */ +table.styled { + margin-bottom: 1em; } + +table.styled th, table.styled td { + padding: .25em 1em; } + +table.styled th { + background-color: #eee; + font-weight: bold; } + +table.styled th, table.styled td { + border: 1px solid #ccc; } + +table.styled tbody tr.even { + background-color: #eff; } + +/* -------------------------------------------------------------------- + * _images + */ +img.left { + float: left; + padding: 0 1em 1em 0; + width: auto; } + +img.right { + float: right; + padding: 0 0 1em 1em; + width: auto; } + +/* -------------------------------------------------------------------- + * * - 360px + */ +@media only screen and (max-width: 360px) { + img.left, + img.right { + float: none; + padding: 1em 0; } } +/********************************************************************** +* Messages +*/ +.msg { + -moz-border-radius: .5em; + -webkit-border-radius: .5em; + border-radius: .5em; + padding: .5em 1em; + margin-bottom: 1em; } + +.msg h4 { + padding-left: 20px; + text-shadow: none; } + +.msg.info { + border: 1px solid #aaa; + background-color: #eee; } + +.msg.info h4 { + background-position: 0 -150px; } + +.msg.alert { + border: 1px solid #fa0; + background-color: #ffe; } + +.msg.alert h4 { + background-position: 0 -249px; + color: #D56A03; } + +.msg.confirm { + border: 1px solid #393; + background-color: #efe; } + +.msg.confirm h4 { + color: #393; + background-position: 0 -200px; } + +.msg.error { + border: 1px solid #c00; + background-color: #fee; } + +.msg.error h4 { + color: #c00; + background-position: 0 -299px; } + +/********************************************************************** +* Button +*/ +.button { + border: none; + color: #333; + display: inline-block; + outline: none; + cursor: pointer; + text-align: center; + text-decoration: none; + text-shadow: rgba(255, 255, 255, 0.5) 0 1px 1px; + margin-right: .5em; + padding: .25em 1em; + -moz-border-radius: .25em; + -webkit-border-radius: .25em; + border-radius: .25em; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } + +.button:hover { + text-decoration: none; } + +.button:active { + position: relative; + top: 1px; } + +.button:disabled { + color: #999; + cursor: default; } + +/*--------------------------------------------------------------------- + * primary button + */ +.primary { + background: #fc0; + background: -moz-linear-gradient(top, #fc0, #fa0); + background: -webkit-gradient(linear, left top, left bottom, from(#fc0), to(#fa0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc00',endColorstr='#ffaa00'); } + +.primary:hover { + background: #f90; } + +.primary:disabled { + background: #fd0; + background: -moz-linear-gradient(top, #fd0, #fc0); + background: -webkit-gradient(linear, left top, left bottom, from(#fd0), to(#fc0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd00',endColorstr='#ffcc00'); } + +/*--------------------------------------------------------------------- + * secondary button + */ +.secondary { + background: #eee; + background: -moz-linear-gradient(top, #eee, #ddd); + background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee',endColorstr='#dddddd'); } + +.secondary:hover { + background: #ccc; } + +.secondary:disabled { + background: #fff; + background: -moz-linear-gradient(top, #fff, #eee); + background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#eeeeee'); } + +/*--------------------------------------------------------------------- + * link button + */ +a.button { + color: #333; } + +/* -------------------------------------------------------------------- + * * - 480px + */ +@media only screen and (max-width: 480px) { + .button { + padding: .5em 1em; } } +/********************************************************************** +* Icon +*/ +.icon { + padding-left: 1.5em; } + +/* ie 7 only hack */ +*:first-child + html .icon { + display: inline-block; } + +.icon.newwin { + background-position: 0 -50px; } + +.icon.info { + background-position: 0 -150px; } + +.icon.confirm { + background-position: 0 -200px; } + +.icon.alert { + background-position: 0 -250px; } + +.icon.error { + background-position: 0 -300px; } + +.icon.invalid { + background-position: 0 -300px; } + +.icon.cal { + background-position: 0 -350px; } + +.icon.check { + background-position: 0 -400px; } + +.icon.check_disabled { + background-position: 0 -450px; } + +.icon.close { + background-position: 0 -500px; } + +.icon.close_disabled { + background-position: 0 -550px; } + +.icon.disable { + background-position: 0 -600px; } + +.icon.disable_disabled { + background-position: 0 -650px; } + +.icon.doc { + background-position: 0 -700px; } + +.icon.doc_disabled { + background-position: 0 -750px; } + +.icon.gear { + background-position: 0 -900px; } + +.icon.mail { + background-position: 0 -950px; } + +.icon.minus { + background-position: 0 -1000px; } + +.icon.minus_disabled { + background-position: 0 -1050px; } + +.icon.pencil { + background-position: 0 -1100px; } + +.icon.pencil_disabled { + background-position: 0 -1150px; } + +.icon.plus { + background-position: 0 -1200px; } + +.icon.plus_disabled { + background-position: 0 -1250px; } + +.icon.print { + background-position: 0 -1300px; } + +.icon.search { + background-position: 0 -1400px; } + +.icon.search_disabled { + background-position: 0 -1450px; } + +.icon.submit { + background-position: 0 -1500px; } + +.icon.submit_disabled { + background-position: 0 -1550px; } + +.icon.trash { + background-position: 0 -1600px; } + +.icon.trash_disabled { + background-position: 0 -1650px; } + +.icon.undo { + background-position: 0 -1700px; } + +.icon.arrow_right { + background-position: 0 -1750px; } + +.icon.arrow_down { + background-position: 0 -1800px; } + +.icon.play { + background-position: 0 -1850px; } + +.icon.stop { + background-position: 0 -1900px; } + +/* Social Media Icons */ +.social-list { + margin-left: 0; + padding-left: 0; + list-style: none; } + +.social-list li { + height: 33px; + margin: 0 0 10px 0; + padding: 0 40px; + cursor: pointer; } + +.social-list li.facebook { + background-position: 0 0; } + +.social-list li.twitter { + background-position: 0 -39px; } + +.social-list li.youtube { + background-position: 0 -80px; } + +.social-list li.linkedin { + background-position: 0 -121px; } + +.social-list li.googleplus { + background-position: 0 -160px; } + +.social-list li.instagram { + background-position: 0 -200px; } + +.social-list li.tumblr { + background-position: 0 -240px; } + +.social-list li.flickr { + background-position: 0 -280px; } + +.social-list li.vine { + background-position: 0 -320px; } + +.social-list li.pinterest { + background-position: 0 -360px; } + +.social-list li.blogger { + background-position: 0 -400px; } + +.social-list li.rss { + background-position: 0 -440px; } + +.social-list li.vimeo { + background-position: 0 -480px; } + +.social-list li.wordpress { + background-position: 0 -520px; } + +/********************************************************************** + * Form Elements + */ +input[type="text"], select, textarea { + border: 1px solid #aaa; } + +.form-control { + border-radius: 0; + padding: .5em; + /* to keep in line with other input paddings */ } + +input[type="text"], textarea { + padding: .5em; } + +select.form-control { + padding: .5em .2em; } + +fieldset { + border: 1px solid #aaa; + padding: .5em; + border: 0; } + +legend { + color: #333; + margin-left: 0; + padding: 0; } + +input[type=radio], input[type=checkbox] { + margin-right: .25em; } + +/*--------------------------------------------------------------------- + * input group addon + */ +/* white background to make it look less like an 'actionable' button */ +.input-group-addon { + background: #fff; } + +/* -------------------------------------------------------------------- + * form fields and font style + */ +div.field, div.field_top, div.field_left, div.label { + clear: both; + padding-bottom: 1em; } + +div.label { + color: #000; } + +.field_top div.label { + padding-bottom: .25em; } + +.label, .input, .output { + display: block; } + +.label label { + font-weight: bold; } + +/* -------------------------------------------------------------------- + * form + */ +form { + margin-bottom: 1em; } + +/* output */ +form .output { + font-weight: normal; } + +/* help text */ +form .help { + color: #999; + display: block; + font-style: italic; + font-size: 85%; } + +/* required field */ +form .help.icon.asterisk { + padding-bottom: 1em; } + +/* multi field */ +.multi { + margin-right: .5em; } + +.input.multi { + margin-right: 0; + padding-bottom: .5em; } + +/* -------------------------------------------------------------------- + * form invalid field + */ +form input.invalid, form textarea.invalid { + border: 1px solid #c00; } + +form .invalid, form .inline_invalid { + color: #c00; } + +form .inline_invalid { + display: block; } + +/* hide from ie */ +html > body form .icon.invalid { + margin-left: .5em; } + +/* -------------------------------------------------------------------- + * form layout - default is left aligned + */ +.field .label { + width: 10em; + float: left; + text-align: right; + padding-right: 1em; } + +.field .input, .field .output, .field select.input, .field textarea.input { + margin-left: 11em; } + +.field .required { + background-position: right 0; } + +.field_top .required, +.field_left .required { + background-position: left 0; + padding-left: 1em; } + +/* top-aligned */ +.field_top .label { + padding-left: 1em; } + +.field_top .input, .field_top .output, .field_top select.input, .field_top textarea.input { + margin-left: 1em; } + +/* left-aligned */ +.field_left .label { + width: 10em; + float: left; + text-align: left; + padding-left: 1em; } + +.field_left .input, .field_left .output, .field_left select.input, .field_left textarea.input { + margin-left: 11.5em; } + +/* -------------------------------------------------------------------- + * * - 640px + */ +@media only screen and (max-width: 640px) { + .field .label, + .field_left .label { + float: none; + text-align: left; + padding-left: 1em; + padding-bottom: .25em; } + + .field .input, .field .output, .field select.input, .field textarea.input, + .field_left .input, .field_left .output, .field_left select.input, .field_left textarea.input { + margin-left: 1em; } + + .field .required, + .field_left .required { + background-position: left 0; + padding-left: 1em; } } +/* -------------------------------------------------------------------- + * * - 480px + */ +@media only screen and (max-width: 480px) { + input[type="text"], textarea { + padding: .5em .25em; } } +/********************************************************************** +* loading styling +*/ +div.loading { + clear: both; + height: 32px; + text-indent: -9999px; + background-position: center; } + +span.loading { + background-position: right; + padding-right: 20px; } + +/********************************************************************** + * CSS Styling for the page nav aside + */ +div.styled { + background: #F2F5F7; + border: 1px solid #C8CFD3; + margin-bottom: 1em; + padding: 1em; } + div.styled h2, div.styled h3, div.styled h4, div.styled h5, div.styled h6 { + color: #738AA3; + text-shadow: 0 1px 1px #FFFFFF; } + div.styled h2 { + font-size: 140%; } + div.styled h3 { + font-size: 115%; } + +#page_nav { + margin: 0 -1em -1em; + padding: 0; } + #page_nav li { + border-top: 1px solid #DBD7D7; + color: #06c; + list-style: none; + margin: 0; + padding: 0; } + #page_nav li.active, #page_nav li a { + color: #016691; + display: block; + padding: 1em 0 1em 1em; } + #page_nav li.active { + background-color: #fff; + color: #D56A03; } + #page_nav li.collapsed ul { + display: none; } + #page_nav li a:hover { + background-color: #fff; + text-decoration: none; } + #page_nav li li { + font-size: 85%; } + #page_nav li li a:hover { + text-decoration: underline; } + #page_nav ul { + margin: .4em 0 -.4em 1em; + padding: 0; } + +#page_nav_title { + margin-bottom: 0.7em; } + +/* CUSTOMIZE THE CAROUSEL +-------------------------------------------------- */ +/* Carousel base class */ +.carousel { + margin-bottom: 60px; } + .carousel .container { + padding: 7% 0; + position: absolute; + top: 0; + left: 10%; } + +/* Since positioning the image, we need to help out the caption */ +.carousel-caption { + z-index: 10; } + +/* Declare heights because of positioning of img element */ +.carousel .item { + background-color: #777; } + +.carousel-inner > .item > img { + top: 0; + left: 0; + width: 100%; + height: auto; } + +/* RESPONSIVE CSS +-------------------------------------------------- */ +@media (min-width: 768px) { + /* Bump up size of carousel content */ + .carousel-caption p { + margin-bottom: 20px; + font-size: 21px; + line-height: 1.4; } + + .featurette-heading { + font-size: 50px; } } +@media (min-width: 992px) { + .featurette-heading { + margin-top: 120px; } } +/********************* VITRO MODULES */ +/* *********************************************** + * Modules + * + * Components: + * - Global styles + * - Buttons & Links + * - Hero Landing Page + * - Text and CTA w/Full Height Image Left + * - News with Images + * - Callout Image Small Inset + * - Callout Content One + * - Callout Content Two + * + * ***************/ +/* Global styles , specific for new templates */ +.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6 { + line-height: 1.1; + margin: 0 0 .25em; } + +.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .jumbotron .h1, .jumbotron .h2, .jumbotron .h3, .jumbotron .h4, .jumbotron .h5, .jumbotron .h6 { + text-transform: uppercase; + font-weight: bold; } + +.jumbotron h1, .jumbotron .h1, .jumbotron h2, .jumbotron .h2, .jumbotron h3, .jumbotron .h3 { + margin-top: 23px; + margin-bottom: 11.5px; } + +.jumbotron .drawer-wrapper ul, .jumbotron .drawer-wrapper ol { + padding-left: 1em; } + +.jumbotron .drawer-wrapper ul li, .jumbotron .drawer-wrapper ol li { + padding-bottom: 10px; } + +.jumbotron a, .jumbotron a:hover { + text-decoration: none; } + +.detail-logo img { + margin-top: 35px; + margin-bottom: 15px; + width: 80%; } + +#site-logo { + margin-top: 0; } + @media (min-width: 768px) { + #site-logo { + margin-top: 0; } } + +@media (min-width: 768px) { + .jumbotron h2 { + font-size: 2.33em; } + + .jumbotron h4 { + font-size: 1.22em; } } +/* Buttons & links */ +.jumbotron .btn-default { + background-color: #FFCD00; + color: #484949; + font-family: inherit; + transition: all 0.3s; + border: 0; + border-radius: 0; } + .jumbotron .btn-default:hover { + background-color: #fff; } + +.jumbotron .btn-primary { + background-color: #006A96; + color: #fff; + font-family: inherit; + transition: all 0.3s; + border: 0; + border-radius: 0; } + .jumbotron .btn-primary:hover { + background-color: #004663; } + +.jumbotron .btn { + font-size: 15px; + text-transform: uppercase; + padding: 0.8em 1.5em; + min-width: 200px; + margin-bottom: 1em; + letter-spacing: 0.08em; + font-weight: normal; } + +.jumbotron .text-link { + text-transform: uppercase; + font-weight: bold; + border-bottom: 1px #006A96 solid; + letter-spacing: 0.08em; } + +/* Hero Landing Page */ +.jumbotron { + background-size: cover !important; + background-repeat: no-repeat; + background-position: center; + color: inherit; + padding: 0 !important; } + +.hm { + padding: 0 0 !important; + color: #fff !important; + margin: 0 !important; } + +.jumbotron-hero-lg { + background-image: url("../img/gps-hero.jpg"); } + +.jumbotron .text-indent-h1 h1 { + text-transform: uppercase; } + @media (max-width: 768px) { + .jumbotron .text-indent-h1 h1 { + font-size: 2.5em; } } + @media (max-width: 480px) { + .jumbotron .text-indent-h1 h1 { + font-size: 2em; } } + +.jumbotron .text-indent-h1 p { + margin-left: 6.75em; } + +.jumbotron .text-indent-h1 a.btn { + margin-left: 7.2em; } + +.jumbotron .text-indent-h2 p { + margin-left: 3.6em; } + +.jumbotron .text-indent-h2 a.btn { + margin-left: 4.4em; } + +.jumbotron .text-indent-h1 p, .jumbotron .text-indent-h2 p { + width: 19em; } + +.jumbotron .text-indent h1 span { + margin-left: 1.65em; } + +.jumbotron-hero .text-indent h1, .jumbotron-hero .text-indent h2, .jumbotron-hero .text-indent h3, .jumbotron-image-bg .text-indent h1, .jumbotron-image-bg .text-indent h2, .jumbotron-image-bg .text-indent h3 { + text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.75); } + +.jumbotron-hero .text-indent p, .jumbotron-image-bg .text-indent p { + text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.75); } + +.jumbotron { + margin: 60px 0; } + +/* Text and CTA w/Full Height Image Left */ +.side-image-white { + background-color: #fff; } + +.jumbotron p { + margin-bottom: 15px; + font-size: 16px; } + +/* News with Images */ +.jumbotron-news { + background: none !important; } + +.jumbotron-news h2 { + margin-bottom: 1em; + margin-top: 0; + text-transform: uppercase; + font-weight: bold; } + +.no-gutter { + padding-left: 0; + padding-right: 0; } + +.jumbotron .panel { + border-radius: 0 !important; } + +.panel-heading { + padding: 10px 30px; } + +.jumbotron-news .panel.panel-default { + border: 1px solid #f2f2f2; + background-color: #f5f5f5; } + +.jumbotron-news .panel.panel-default .panel-heading { + background-color: #f5f5f5; + border: none; } + +.panel-default > .panel-heading { + color: #333; } + +.jumbotron-news .panel .panel-news-date { + text-transform: uppercase; + color: #747678; + font-size: 0.85em; + margin-bottom: 0.25em; + margin-top: 1em; } + +.jumbotron-news .panel .panel-news-title { + text-transform: none; + margin-top: 0; } + +.jumbotron-news .panel.panel-default .panel-body { + padding-top: 0; + padding-right: 2em; } + +@media (min-width: 768px) { + .jumbotron-news .panel.panel-default .panel-heading { + min-height: 135px; } } +/* Callout Image Small Inset */ +.jumbotron-callout-image-small-inset { + background-image: url("../img/callout-content-two-bg.jpg"); + background-position: center center; + background-size: cover; + padding: 48px 0 !important; + border-radius: 0 !important; } + .jumbotron-callout-image-small-inset h2, .jumbotron-callout-image-small-inset h3, .jumbotron-callout-image-small-inset p, .jumbotron-callout-image-small-inset a { + color: #484949; } + .jumbotron-callout-image-small-inset .panel { + margin: 0 15px; } + .jumbotron-callout-image-small-inset .panel.panel-default .panel-body { + padding: 1em 2em; } + .jumbotron-callout-image-small-inset .btn-default:hover { + background-color: #e6b900; } + +/* Callout Content One */ +.jumbotron-callout-content-one { + background-color: #006A96; + padding: 30px 0 !important; + border-radius: 0 !important; } + .jumbotron-callout-content-one h2, .jumbotron-callout-content-one h3, .jumbotron-callout-content-one p, .jumbotron-callout-content-one li, .jumbotron-callout-content-one a, .jumbotron-callout-content-one a:hover { + color: #fff; } + .jumbotron-callout-content-one .panel { + background-color: transparent; + margin: 0 15px 20px 15px; } + .jumbotron-callout-content-one .panel.panel-primary .panel-body { + padding: 0em 1em; } + .jumbotron-callout-content-one .panel.panel-primary .panel-body p { + font-size: 18px; + color: #fff; } + @media (min-width: 992px) { + .jumbotron-callout-content-one h2 { + margin-left: 50px; } } + +/* Callout Content Two */ +.jumbotron-callout-content-two { + background-image: url("../img/callout-content-two-bg.jpg"); + background-position: center center; + background-size: cover; + padding: 48px 0 !important; + border-radius: 0 !important; } + +.jumbotron-callout-content-two h2, .jumbotron-callout-content-two h3, .jumbotron-callout-content-two p { + color: #fff; } + +.panel { + border: none; } + +.panel.panel-primary { + background-color: rgba(0, 106, 150, 0.85); } + +.panel.panel-primary .panel-body { + padding: 1em 2em; } + +.panel.panel-primary .panel-body .btn { + margin-bottom: 0; } + +.panel.panel-primary .text-link { + color: #fff; } + +.panel.panel-primary .text-right { + margin-bottom: 0.25em; } + +.panel-primary .text-link { + border-bottom: 1px #fff solid; } + +/********************* OVERWRITES */ +/******************************************************************* +FLEXSLIDER +************************/ +.flexslider { + border: 0; + border-radius: 0; + margin-bottom: 1em; + width: 100%; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + /* pause and play control */ + /* direction control */ } + .flexslider a { + color: #fff; + -webkit-tap-highlight-color: transparent; } + .flexslider .slides li { + margin: 0; } + .flexslider .flex-control-nav { + float: right; + right: 32px; + bottom: 10px; + height: 12px; + width: auto; + z-index: 5; } + .flexslider .flex-control-nav li { + vertical-align: top; + margin: 0 0 0 5px; + /* shared paging, pause and play control styles */ + /* paging control */ } + .flexslider .flex-control-nav li a { + border: 1px solid #016691; + cursor: pointer; + height: 10px; + margin-left: 8px; + text-indent: -9999px; + width: 20px; } + .flexslider .flex-control-nav li a { + background: #bed4e7; + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + -o-border-radius: 0px; + border-radius: 0px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; } + .flexslider .flex-control-nav li a.flex-active { + background: #eb8626; + border: 1px solid #c15f01; + cursor: default; } + .flexslider .flex-pauseplay a { + border: 0; + display: block; + height: 10px; + width: 20px; + position: static; + text-indent: -9999px; } + .flexslider .flex-pauseplay a.flex-pause { + background-position: 6px -248px; } + .flexslider .flex-pauseplay a.flex-play { + background-position: 8px -232px; } + .flexslider .flex-direction-nav li a { + background: #000; + background: rgba(0, 0, 0, 0.3); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c000000, endColorstr=#4c000000); + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + text-indent: 0; + text-align: center; + margin: 0; + top: 30%; + height: 24px; + width: 24px; + opacity: 0.8; } + .flexslider .flex-direction-nav li a:hover { + text-decoration: none; } + .flexslider .flex-direction-nav li a.flex-prev { + left: 10px; } + .flexslider .flex-direction-nav li a.flex-next { + right: 10px; } + .flexslider .flex-direction-nav a:before { + content: ''; } + .flexslider .flex-direction-nav a.flex-next:before { + content: ''; } + .flexslider .flex-controls { + height: 37px; + z-index: 99; } + .flexslider .flex-controls .flex-pauseplay { + bottom: 10px; + right: 5px; + position: absolute; + z-index: 10; } + +/* Caption style */ +/* IE rgba() hack */ +.flex-caption { + background: none; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000); + zoom: 1; } + +.flex-caption { + width: 100%; + padding: 2%; + margin: 0; + position: absolute; + left: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.3); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); + font-size: 14px; + line-height: 18px; } + .flex-caption a { + -webkit-tap-highlight-color: rgba(88, 166, 203, 0.6); } + +/* control container */ +/* alternative theme */ +.flexslider.alt .flex-direction-nav li a, +.flexslider.alt .flex-caption { + background: #0B638B; + background: rgba(11, 99, 139, 0.8); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4); + zoom: 1; } + +/******************************************************************* +Alerts +************************/ +/********************* CMS */ +/********************************************************************** + * CSS Styling for the drawer widget. + */ +.drawer-wrapper { + margin-bottom: 1em; } + +/* header */ +.drawer h2 { + text-transform: capitalize; + font-weight: normal; + font-size: 20px; + margin-top: 0; + margin-bottom: 0; + padding: .1em 0; + zoom: 1; } + +/* default state */ +.drawer h2 a { + background-position: 5px 12px; + display: block; + padding: 10px 0 10px 30px; + text-decoration: none; + color: #fff; + background-color: #006a96; } + .drawer h2 a:hover { + background-color: #004663; } + +/* ie7 hack */ +*:first-child + html .drawer h2 a { + display: inline-block; } + +/* expanded state */ +.drawer h2.expand a { + background-position: 5px -86px; + padding: 10px 0 10px 30px; + color: #fff; + background-color: #004663; } + +/* hover state */ +.drawer h2:hover, .drawer h2:active { + background-color: transparent; + cursor: pointer; + color: #fff; } + +/* content background */ +.drawer > div, +.drawer > article { + padding: 1em 2em; } + +.drawer > div.cols_wrapper { + padding: 1em 0; } + +/* toggle links */ +.drawer-toggle { + font-size: 90%; + padding: .5em 0; } + +.drawer-toggle a { + color: #666; } + +.drawer-toggle a:hover, .drawer-toggle a:active { + color: #016691; } + +.drawer-toggle a { + background-position: 0 -215px; + padding-left: 16px; } + +.drawer-toggle a.expand { + background-position: 0 -200px; } + +@media print { + /* removes ucsd logo and other background images (glyphicons) */ + html, main, footer *, + .layout-title * { + background-color: transparent !important; + background-image: none !important; + overflow: visible !important; } + + /* title and header font color should be black (readable) */ + .title-header, + h1, h2, h3, h4, h5, h6, p { + color: #000; } + + /* hide login/ emergency/ nav/ search/ footer links/ btn-nav styles */ + #uc-emergency, .layout-login, nav, .search, .footer-links, .btn-nav { + display: none; } + + main { + width: 99.99% !important; } + main section { + left: 0 !important; + margin: 0 !important; + padding: 0 !important; + width: 100% !important; } + + /* reset horizontal ruler */ + hr { + background-color: #ccc !important; } + + .main-content-nav { + background: none; } + + a[href]:after { + content: none !important; } } + +/*# sourceMappingURL=base.css.map */ diff --git a/app/styles/base.css.map b/app/styles/base.css.map new file mode 100644 index 0000000..736dc3e --- /dev/null +++ b/app/styles/base.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["base.scss","partials/_variables.scss","partials/_custom-variables.scss","partials/reference.scss","partials/layout.scss","partials/modules.scss","partials/navbar.scss","partials/ucsd/base/_styling.scss","partials/components.scss","partials/vitro-modules.scss","partials/ucsd/cms/_overwrite.scss","partials/ucsd/cms/_drawer.scss","partials/print.scss"], +"names": [], +"file": "base.css" +} diff --git a/app/styles/base.min.css.map b/app/styles/base.min.css.map new file mode 100644 index 0000000..4422377 --- /dev/null +++ b/app/styles/base.min.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["base.scss","partials/_variables.scss","partials/_custom-variables.scss","partials/reference.scss","partials/layout.scss","partials/modules.scss","partials/navbar.scss","partials/ucsd/base/_styling.scss","partials/components.scss","partials/vitro-modules.scss","partials/ucsd/cms/_overwrite.scss","partials/ucsd/cms/_drawer.scss","partials/print.scss"],"names":[],"mappings":"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;EACA;;AAEF;EACD;;;AAID;EACE;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;AAEA;EAZF;IAaI;IACA;;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;EACE;EACA;EACA;EACA;;;AAGJ;AAAA;AAAA;AAIA;EACE;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AACA;EAFF;IAGG;IACA;;;AAIH;EAEE;EACA;;AAGF;EAvBF;IAwBC;IACG;;;AAEF;EA3BF;IA4BI;IACA;;;;AAIJ;EACC;;AACA;EAFD;IAGI;IACA;;;;AAIJ;EACE;EAEA;EACA;EAEA;EACA;EACA;;AAEA;EAVF;IAWI;IACA;IACA;IACA;;;AAGF;EAjBF;IAkBI;IACA;;;;AAMJ;EAEE;EACA;EACA;;AAEA;EANF;IAOI;;;;AAKJ;AAAA;AAAA;AAIA;EACC;;AACA;EAFD;IAGK;IACA;;;;AAIL;EACI;EACA;EACA;EACA;;AACA;EALJ;IAMK;;;;AAIL;EACE;EACA;EACA;EACA;;AAEA;EANF;IAOI;;;AAGF;EACE;EACA;EAEA;EACA;EACA;;AAEF;AACE;EACA;AACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACH;;AACG;EACE,kBH7PK;EG8PL;;AAEF;EACE;;AAIJ;EACE;EACA;EACA;;AAEH;EACC,OH3QS;EG4QT;;AAGE;EACE,OHhRK;;AGmRV;EACK;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;;;AAMN;AAAA;AAAA;AASA;AAAA;AAAA;AAQA;EACE;EACA;EACA;;;AAOF;EACE;;;AAKF;AAAA;AAAA;AAIC;EACC;EACA;;AAEE;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EANF;IAOI;;;AAMA;EAHF;IAII;;;;AAWV;EACE;EACA;EACA;;;AChYF;AAAA;AAAA;EAGE;EACA;;AAEA;EANF;AAAA;AAAA;IAOI;IACA;;;;AAIJ;EACE;EACA;EAEA;EAEA;EACA;EAEA;EACA,kBJbW;EIcX;EACA;EAEA;EACA;;AAEA;EAjBF;IAkBI;;;AAGF;EArBF;IAsBI;;;;AAGJ;AAGA;EACE;EAEA;EACA;EAEA;EACA;EACA;;AAEA;EAVF;IAWI;;;;AAIJ;AAAA;AAAA;EAGE;EACA;EACA;;;AAEA;EACE;;;AAEF;AACA;AAAA;EAEE;EACA;EACA;EAEA;EACA;EACA;;;AAEA;EACE;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;EACA;EACA;EACA;;;AAEN;AAGA;EACE;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAIF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EATF;IAUI;IACA;IACA,YJ9HS;II+HT;;;;AAIJ;AACA;EACE;;;AAGF;EACE;EACA;EAEA;;;AAGF;EACE;EAEA;EAEA;EACA,kBJrJW;;AIwJT;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;;;AAKR;EACE;;;AAGA;AACA;EACE;;;AAEA;EACE,kBJnLO;;;AIsLX;EACE;EACA;EACA;EAWA;EAIA;EAEA;EACA;;AAhBA;EALF;IAMI;IACA;IACA;IACA;IACA;IACA;;;;AAYF;EACE;EACA;;AAEA;EAJF;IAKI;IACA;IACA;IACA;IACA;IACA;;EAEA;IACE;IACA;;;;AAKN;EACE;;;AAEA;EACE;EACA;;;AAGJ;EACE;EAKA;EAKA;EACA;EACA;;;AAEN;AAAA;AAAA;EAGE;EACA;;;AAGF;EACE;EAEA;EACA;EAEA;EAEA;EAEA;EACA;EAEA;EACA;EAEA;EAEA;EAEA;;;AAIF;EACE;;;AAGF;EACE;;;AAKE;EADF;IAEI;;EAEA;IACE;;;AAIJ;EACE;IACE;;;;AAMR;EACE;IACE;;;AAGJ;EACE;IACE;IACA;IACA;;;AAKJ;EACE;IACE;IACA;IACA;;;EAGF;IACE;;;AAIJ;EACE;IACE;IACA;IACA;IACA;;;EAGA;IACE;IACA;IAEA;IACA;IAEA;IACA;;;AAIN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;;;AAGF;EACE;EACA;;;AAGF;EACI;;;AAGJ;EACE;;;AAGF;AAEA;EACE;EACA;;AAEE;EACE;EACA;;;AAKN;EACE;EACA;;AAEE;EACE;EACA;;;AChaN;AAAA;AAAA;AAIA;EACC;;;AAGD;AAAA;AAAA;AAGA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAGA;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;AAGA;EACC;AAAA;IAEC;IACA;;;AAED;AAAA;AAAA;AAID;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AACA;AAAA;AAAA;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AAAA;AAAA;AAGA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;AAGA;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;AAGA;EACC;;;AAGD;AAAA;AAAA;AAGA;EACC;IACC;;;AAED;AAAA;AAAA;AAGD;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;A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ACE;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMN;AAII;EACE;;AAGF;EACE;EACA;;AAEA;EAJF;IAKM;;;AAKN;EACA;EACA;;;AAMJ;AAII;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;;AAON;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;AAGA;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACE;EACF;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;AAEA;EACI;;;AAGJ;AAEA;EACE;;;AAGF;AAEA;EAGE;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;;AAEA;AACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;AACA;EACA;AACA;AACA;EACA;EACA;EACA;EACA;;;ARzcJ;ASfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeC;AAED;EACC;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EAA+D;;;AAE/D;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;;AACA;EAFD;IAGE;;;;AAIF;EACC;IACC;;;EAGD;IACI;;;AAIL;AAEA;EACI;;;AAGJ;EACE,kBP5DW;EO6DX;EACA;EACA;EACA;EACA;;AACA;EACE,kBPpES;EOqEZ;;;AAID;EACC;EACA,OPpEY;;;AOwEb;EACE,kBP/EW;EOgFX;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;;;AAIJ;EACE,kBPjGW;EOkGX;EACA;EACA;EACA;EACA;;AACA;EACE,kBPpGS;;;AOyGb;EACE,kBP9GW;EO+GX;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACF;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACI;EACA;EACA;EACA;;;AAGJ;AAEA;EACC;EACA;EACA;EACA;EAEA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;AACA;EAFD;IAGE;;;AAED;EALD;IAME;;;;AAGF;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;;;AAED;EACE;;;AAGF;EACC;;;AAGD;AAEA;EACC;;;AAED;EACC;EACA;;;AAGD;EACC;EACG;EACA;AAAwB;EACxB;EACA;EACA;;;AAGJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAEA;EACC;;AAEA;EACI;;;AAKL;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EAAmB;;;AAGnB;EACI;EACA;;AAEF;EACG;;;AAIL;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAIJ;EACC;IACI;;;AAKL;AAEA;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC,kBPnTW;EOoTX;;;AAIF;AAEA;EACC,kBP/TY;EOgUZ;EACE;EACF;EACA;EACA;;AACA;EAAoC;;AAEpC;EAAG;EAAa;;AAEhB;EAAS;EAAa;;AAEtB;EAAO;;AAEP;EAAa;;AAEb;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EACC;EACA;;AAED;EACC;IACC;;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACC;;AAED;EACE;;;AAKJ;EACC;;;AAGD;EACC;;;AAIA;EAEC;;AAIA;EACA;;;AAKF;EACC;;;AAGD;EACI;;;AAIJ;AAEA;EACI;EACA;EACA;EACF;EACE;;;AAGJ;EACI;EACF;EACE;;AAEF;EACC;;;ATzaH;AUlBA;AAAA;AAAA;AAIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAqDA;AAmBA;;AAtEA;EACC;EACA;;AAGD;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;AAEA;AAUA;;AATA;EACC;EACA;EACA;EACA;EACA;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAOH;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;;;AAIH;AACA;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;AAGA;AACA;AAAA;EAEC;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;AAQA;AAAA;AAAA;AAIA;EACC;;;AAGD;AAAA;AAAA;AAIA;EACI;;;AV7KJ;AWrBA;AAAA;AAAA;AAGA;EACC;EACA;;;AAOD;AACA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA,kBTtBY;;ASuBZ;EACC;;;AAIF;AACA;EACC;;;AAGD;AAKA;EACC;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;;;AAOD;AACA;AAAA;EAEC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;AAEC;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;;AC3JF;AACE;EACA;AAAA;IAEE;IACA;IACA;;;AAGF;EACA;AAAA;IAGE;;;AAGF;EACA;IACE;;;EAGF;IACE;;EAEA;IACE;IACA;IACA;IACA;;;AAIJ;EACA;IACE;;;EAGF;IACE;;;EAGF;IACI","file":"base.min.css"} \ No newline at end of file diff --git a/app/styles/base.scss b/app/styles/base.scss new file mode 100755 index 0000000..1162817 --- /dev/null +++ b/app/styles/base.scss @@ -0,0 +1,26 @@ +/********************* VARIABLES & MIXINS */ +@import "partials/variables.scss"; +@import "partials/custom-variables.scss"; //vitro variables + +/********************* GOOGLE FONT */ +@import url('https://fonts.googleapis.com/css?family=Roboto:400,700'); + +/********************* BASE */ +@import "partials/reference.scss"; +@import "partials/layout.scss"; +@import "partials/modules.scss"; +@import "partials/navbar.scss"; +@import "partials/ucsd/base/styling.scss"; +@import "partials/components.scss"; + +/********************* VITRO MODULES */ +@import "partials/vitro-modules.scss"; + +/********************* OVERWRITES */ +@import "partials/ucsd/cms/overwrite.scss"; + +/********************* CMS */ +@import "partials/ucsd/cms/drawer.scss"; + +@import "partials/print.scss"; + diff --git a/app/styles/bootstrap.scss b/app/styles/bootstrap.scss new file mode 100755 index 0000000..7e1df67 --- /dev/null +++ b/app/styles/bootstrap.scss @@ -0,0 +1,3 @@ +@import "partials/variables"; + +@import "../vendor/bootstrap/assets/stylesheets/_bootstrap.scss"; diff --git a/app/styles/homepage-wide.scss b/app/styles/homepage-wide.scss new file mode 100755 index 0000000..f12de02 --- /dev/null +++ b/app/styles/homepage-wide.scss @@ -0,0 +1,158 @@ +/********************* VARIABLES & MIXINS */ +@import "partials/variables"; +@import url(https://fonts.googleapis.com/css?family=Roboto:300); + +.layout-container { + overflow: visible; +} + +.main-section-container { + position: relative; + background: #fff; + overflow: hidden; + + padding-bottom: 20px; + margin-top: -20px; + + z-index: 5; + + -webkit-box-shadow: 0 0 4px 0 rgba(0,0,0,.4); + box-shadow: 0 0 4px 0 rgba(0,0,0,.4); + + @media screen and (max-width: 1200px) { + margin: 0; + padding-top: 20px; + } +} + + +.main-section { + position: relative; + background: #fff; + + overflow: hidden; + padding: 0 15px; + + z-index: 2; +} + +.main-section-header { + padding: 0 0 10px; + margin-bottom: 10px; + + @media screen and (max-width: 1200px) { + margin: 10px 0 0; + } + + h2 { + color: #333; + font-family: Roboto,sans-serif; + font-size: 30px; + font-weight: 400; + margin-top: 30px; + + @media screen and (max-width: 500px) { + margin: 0; + font-size: 20px; + } + } +} + +.main-section-content { + h2 { + padding-bottom: 5px; + } +} + +.sidebar { + background: #f0f0f0; + border: 1px solid #e4e1d8; + border-right: 0; + padding: 12px 20px; + + img { + margin-right: 15px; + margin-top: 5px; + max-width: 125px; + max-height: 125px; + + float: right; + padding: 0 0 1em 1em; + width: auto;; + } + + .side { + font-size: 18px; + font-weight: 400; + } + + h2 { + font-size: 18px; + + a { + color: #0b638b; + text-decoration: none; + + font: normal normal normal 16px/1.2 Helvetica,Arial,sans-serif; + } + } + + article { + border-top: 1px solid #0a7aad; + overflow: auto; + padding: 20px 0 0; + margin: 5px 0 10px; + } +} + +.side-header h2 { + margin-bottom: 25px; + clear: both; +} + +.flexslider { + margin: 0 -40px; + width: 1280px; + overflow: hidden; + height: 400px; + z-index: 1; + + @media screen and (max-width: 500px) { + margin:0 0 25px; + overflow: visible; + + .flex-caption { + font-size: 14px + } + } + + @media screen and (max-width: 1200px) { + margin: 0; + width: 100%; + overflow: hidden; + height: auto; + } + + .flex-controls { + position:relative; + top: -400px; + + @media screen and (max-width: 500px) { + height: 0!important; + position: relative; + top: 130px; + } + + @media screen and (max-width: 1200px) { + position: relative; + top: 0; + } + } +} + +.flex-caption { + bottom: 30px; + @media screen and (max-width: 1200px) { + bottom: 0; + } +} diff --git a/app/styles/homepage.scss b/app/styles/homepage.scss new file mode 100755 index 0000000..7c8a180 --- /dev/null +++ b/app/styles/homepage.scss @@ -0,0 +1,97 @@ +h2, h3 { + color: #484949; +} + +.main-section-module { + h2 { + font-weight: normal; + border-bottom: 1px solid #0b638b; + margin-bottom: 12px; + padding-bottom: 5px; + } + + > .content-module { + margin-bottom: 1em; + } + + @media screen and (max-width: 500px) { + width: 100%; + padding: 0; + } +} + +/*Give Button*/ +#give-button { + margin: 10px 0; + width: 115px; +} + +a.give-button { + -moz-transition: background 0.1s ease-in 0s, -moz-box-shadow 0.1s ease-in 0s; + background-color: #DB7B0F; + background-image: -moz-linear-gradient(90deg, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0.4)); + border-bottom: 1px solid #D9740B; + border-radius: 3px 3px 3px 3px; + border-top: 1px solid #FFDCB4; + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.5), 0 -1px 2px rgba(0, 0, 0, 0.5); + display: block; + height: 30px; + position: relative; + text-align: center; + text-decoration: none; + width: 115px; + z-index: 1000; +} + +a.give-button:hover { + background-color: #C7700E; + border-bottom: 1px solid #C86408; + text-decoration: none; +} + +a.give-button span { + color: #FFFFFF; + font-family: Georgia,Times,serif; + font-size: 20px; + font-style: italic; + font-weight: bold; + line-height: 15px; + position: relative; + text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.5), 0 1px 1px rgba(255, 255, 255, 0.5); + top: 5px; +} + +/* flexslider homepage specific styles */ +.flexslider { + margin-bottom: 0; +} + +.slides li { + margin-top: 0; +} + +.slides img { + width: 100% !important; + max-height: 305px !important; +} + +.controls { + margin: -7px; + position: relative; +} + +.spot-caption {background:none; -ms-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4); zoom: 1;} +.spot-caption { padding: 2%; position: absolute; left: 0; bottom: 0; background: rgba(11, 99, 139, 0.8); color: #fff; text-shadow: 0 -1px 0 rgba(0,0,0,.3); font-size: 14px; line-height: 18px;} + +.alt p { + margin-bottom: 0; +} + +/* module styling */ +.news-item { + img { + width: 100%; + margin-bottom: 1em; + } +} diff --git a/app/styles/ie-support.scss b/app/styles/ie-support.scss new file mode 100755 index 0000000..fd2933c --- /dev/null +++ b/app/styles/ie-support.scss @@ -0,0 +1,118 @@ +/* start of decorator 4.5 support for IE7 and IE8 specifics */ +/* '*+' ie7 specific selector */ +*+section.layout-title { + box-sizing: border-box; + padding: 1em 0; + height: 50px; +} + +.layout-header { + height: 78px; +} + +.layout-login { + display:none; +} + +/* ie will not have mobile nav */ +.navdrawer-container { + display: block !important; + width: 100% !important; + min-height: 40px !important; + position:relative !important; +} +/* Doesn't have padding for ie since no mobile nav */ +.navdrawer-container .navbar-sublist a { + padding: 9px 15px 8px !important; +} +.layout-header button.btn-nav { + display: none !important; +} +/* ie8 fix to reveal search caret */ +button.caret { + border-top-style: solid; +} + +.navdrawer-container .search { + float: right !important; +} +/* search max-height fix */ +button.search-toggle { + display: block !important; + height: 40px; + *width: 50px!important; + *padding: 0 !important; + *background:url(http://ucsd.edu/common/cwp/4.0.0/styles/../img/search_ie_icon.png) no-repeat 0 6px!important; +} + +ol.breadcrumbs-list { + margin: 10px 0 0; + + li { + *margin-right: 7px; + } +} + +/* to deal with added padding + width hard coding to get around media query styling */ +.main-content-container { + padding: 0; + width: 75%; + + .main-section { + &.col-sm-9 { + width: 75%; + } + &.col-sm-3 { + width: 25%; + } + } +} +.main-section { + *padding: 0; + + &.pull-left { + width: 25%; + } + + .main-section-content { + *padding: 0 1em; + } + + /* homepage */ + .main-section-module { + padding: 0; + + &.col-xs-6 { + width: 48%; + } + } + + .main-section-header { + padding: 0 15px 10px; + } + + /* sidebar resize | whitespacing */ + &.col-xs-3 { + width: 23%; + } + + /* homepage-wide col */ + &.col-sm-7 { + width: 51%; + } + &.col-sm-5.sidebar { + width: 45%; + padding: 12px 20px; + } +} + +/* profile template fix */ +.profile-section { + padding-left: .5em; +} + +/* flexslider */ +.flex-caption { + padding: 0; +} diff --git a/app/styles/img/asterisk.png b/app/styles/img/asterisk.png new file mode 100755 index 0000000..d4d041b Binary files /dev/null and b/app/styles/img/asterisk.png differ diff --git a/app/styles/img/bg-dark-blue-trident-full.png b/app/styles/img/bg-dark-blue-trident-full.png new file mode 100644 index 0000000..1fc4ea7 Binary files /dev/null and b/app/styles/img/bg-dark-blue-trident-full.png differ diff --git a/app/styles/img/bg-light-yellow-trident.png b/app/styles/img/bg-light-yellow-trident.png new file mode 100644 index 0000000..b47ab83 Binary files /dev/null and b/app/styles/img/bg-light-yellow-trident.png differ diff --git a/app/styles/img/callout-content-two-bg.jpg b/app/styles/img/callout-content-two-bg.jpg new file mode 100644 index 0000000..061d267 Binary files /dev/null and b/app/styles/img/callout-content-two-bg.jpg differ diff --git a/app/styles/img/icon_loading.gif b/app/styles/img/icon_loading.gif new file mode 100755 index 0000000..3c2f7c0 Binary files /dev/null and b/app/styles/img/icon_loading.gif differ diff --git a/app/styles/img/icon_loading_inline.gif b/app/styles/img/icon_loading_inline.gif new file mode 100755 index 0000000..d42f72c Binary files /dev/null and b/app/styles/img/icon_loading_inline.gif differ diff --git a/app/styles/img/search-teal.png b/app/styles/img/search-teal.png new file mode 100755 index 0000000..e359889 Binary files /dev/null and b/app/styles/img/search-teal.png differ diff --git a/app/styles/img/search.png b/app/styles/img/search.png new file mode 100755 index 0000000..ceb8d6c Binary files /dev/null and b/app/styles/img/search.png differ diff --git a/app/styles/img/social-sprite-20.png b/app/styles/img/social-sprite-20.png new file mode 100755 index 0000000..48d1f28 Binary files /dev/null and b/app/styles/img/social-sprite-20.png differ diff --git a/app/styles/img/sort_asc.png b/app/styles/img/sort_asc.png new file mode 100755 index 0000000..e1ba61a Binary files /dev/null and b/app/styles/img/sort_asc.png differ diff --git a/app/styles/img/sort_asc_disabled.png b/app/styles/img/sort_asc_disabled.png new file mode 100755 index 0000000..fb11dfe Binary files /dev/null and b/app/styles/img/sort_asc_disabled.png differ diff --git a/app/styles/img/sort_both.png b/app/styles/img/sort_both.png new file mode 100755 index 0000000..af5bc7c Binary files /dev/null and b/app/styles/img/sort_both.png differ diff --git a/app/styles/img/sort_desc.png b/app/styles/img/sort_desc.png new file mode 100755 index 0000000..0e156de Binary files /dev/null and b/app/styles/img/sort_desc.png differ diff --git a/app/styles/img/sort_desc_disabled.png b/app/styles/img/sort_desc_disabled.png new file mode 100755 index 0000000..c9fdd8a Binary files /dev/null and b/app/styles/img/sort_desc_disabled.png differ diff --git a/app/styles/img/sprite_base-black-2x.png b/app/styles/img/sprite_base-black-2x.png new file mode 100755 index 0000000..16e6f8d Binary files /dev/null and b/app/styles/img/sprite_base-black-2x.png differ diff --git a/app/styles/img/sprite_base-black.png b/app/styles/img/sprite_base-black.png new file mode 100755 index 0000000..9cadb06 Binary files /dev/null and b/app/styles/img/sprite_base-black.png differ diff --git a/app/styles/img/sprite_base-white-2x.png b/app/styles/img/sprite_base-white-2x.png new file mode 100755 index 0000000..fe88585 Binary files /dev/null and b/app/styles/img/sprite_base-white-2x.png differ diff --git a/app/styles/img/sprite_base-white.png b/app/styles/img/sprite_base-white.png new file mode 100755 index 0000000..dead088 Binary files /dev/null and b/app/styles/img/sprite_base-white.png differ diff --git a/app/styles/img/sprite_base.png b/app/styles/img/sprite_base.png new file mode 100755 index 0000000..d4247d3 Binary files /dev/null and b/app/styles/img/sprite_base.png differ diff --git a/app/styles/img/sprite_base2x.png b/app/styles/img/sprite_base2x.png new file mode 100755 index 0000000..172904d Binary files /dev/null and b/app/styles/img/sprite_base2x.png differ diff --git a/app/styles/img/sprite_icon.png b/app/styles/img/sprite_icon.png new file mode 100755 index 0000000..1972d98 Binary files /dev/null and b/app/styles/img/sprite_icon.png differ diff --git a/app/styles/img/sprite_icon_widget.png b/app/styles/img/sprite_icon_widget.png new file mode 100755 index 0000000..1cf13c1 Binary files /dev/null and b/app/styles/img/sprite_icon_widget.png differ diff --git a/app/styles/img/sprite_icon_widget.svg b/app/styles/img/sprite_icon_widget.svg new file mode 100755 index 0000000..d7f9165 --- /dev/null +++ b/app/styles/img/sprite_icon_widget.svg @@ -0,0 +1 @@ +sprite-icon-widget \ No newline at end of file diff --git a/app/styles/img/sprite_social.png b/app/styles/img/sprite_social.png new file mode 100755 index 0000000..c9529f6 Binary files /dev/null and b/app/styles/img/sprite_social.png differ diff --git a/app/styles/img/ucsd-footer-logo-white.png b/app/styles/img/ucsd-footer-logo-white.png new file mode 100755 index 0000000..fa7c68b Binary files /dev/null and b/app/styles/img/ucsd-footer-logo-white.png differ diff --git a/app/styles/partials/_custom-variables.scss b/app/styles/partials/_custom-variables.scss new file mode 100644 index 0000000..eecf0d0 --- /dev/null +++ b/app/styles/partials/_custom-variables.scss @@ -0,0 +1,902 @@ +// Override Bootstrap variables here + +// +// Variables +// -------------------------------------------------- + +// UCSD Brand Colors + +//primary +$blue: #00629B; +$gray: #747678; + +//secondary +$dark-blue: #182B49; +$yellow: #FFCD00; +$teal: #00C6D7; + +//neutral +$black: #000000; +$beige: #AFA9A0; +$dark-gray: #484949; +$darker-gray: #333333; + +// UCSD School Colors + +$Marshall: #ab2328; +$Muir: #115740; +$Revelle: #003087; +$Roosevelt: #5e8ab4; +$Sixth: #008c95; +$Warren: #862633; + + +//== Colors +// +//## Gray and brand colors for use across Bootstrap. + +$gray-base: #000 !default; +$gray-darker: lighten($gray-base, 13.5%) !default; // #222 +$gray-dark: lighten($gray-base, 20%) !default; // #333 +$gray: #747678; +$gray-light: lighten($gray-base, 46.7%) !default; // #777 +$gray-lighter: lighten($gray-base, 93.5%) !default; // #eee + +$brand-primary: $blue; +$brand-success: #5cb85c !default; +$brand-info: #5bc0de !default; +$brand-warning: #f0ad4e !default; +$brand-danger: #d9534f !default; + + +//== Scaffolding +// +//## Settings for some of the most global styles. + +//** Background color for ``. +$body-bg: #fff !default; +//** Global text color on ``. */ +$text-color: $dark-gray !default; + +//** Global textual link color. +$link-color: $brand-primary !default; +//** Link hover color set via `darken()` function. +$link-hover-color: darken($link-color, 15%) !default; +//** Link hover decoration. +$link-hover-decoration: underline !default; + + +//== Typography +// +//## Font, line-height, and color for body text, headings, and more. */ + +$font-family-sans-serif: "BrixSansRegular", Helvetica, Arial, sans-serif !default; +//** Default monospace fonts for ``, ``, and `
`.
+$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+/**/
+$font-size-base:          16px !default;
+$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
+$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
+
+$font-size-h1:            floor(($font-size-base * 2.375)) !default; // ~38px
+$font-size-h2:            floor(($font-size-base * 1.75)) !default; // ~28px
+$font-size-h3:            ceil(($font-size-base * 1.55)) !default; // ~25px
+$font-size-h4:            ceil(($font-size-base * 1.125)) !default; // ~18px
+$font-size-h5:            $font-size-base !default;
+$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.*/
+$line-height-base:        1.5 !default; // 26/16
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
+
+//** By default, this inherits from the ``. */
+$headings-font-family:    "BrixSansBold", Helvetica, Arial, sans-serif !default;
+$headings-font-weight:    bold;
+$headings-line-height:    0.917 !default;
+$headings-color:          inherit !default;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+
+// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
+// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
+$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
+
+//** File name for all font files.
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+//** Element ID within SVG icon file.
+$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start). */
+
+$padding-base-vertical:     6px !default;
+$padding-base-horizontal:   12px !default;
+
+$padding-large-vertical:    10px !default;
+$padding-large-horizontal:  16px !default;
+
+$padding-small-vertical:    5px !default;
+$padding-small-horizontal:  10px !default;
+
+$padding-xs-vertical:       1px !default;
+$padding-xs-horizontal:     5px !default;
+
+$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
+$line-height-small:         1.5 !default;
+
+$border-radius-base:        0px;
+$border-radius-large:       0px;
+$border-radius-small:       0px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+$component-active-color:    #fff !default;
+//** Global background color for active items (e.g., navs or dropdowns).
+$component-active-bg:       $brand-primary !default;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+$caret-width-base:          4px !default;
+//** Carets increase slightly in size for larger components.
+$caret-width-large:         5px !default;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for ``s and ``s.
+$table-cell-padding:            8px !default;
+//** Padding for cells in `.table-condensed`.
+$table-condensed-cell-padding:  5px !default;
+
+//** Default background color used for all tables.
+$table-bg:                      transparent !default;
+//** Background color used for `.table-striped`.
+$table-bg-accent:               #f9f9f9 !default;
+//** Background color used for `.table-hover`.
+$table-bg-hover:                #f5f5f5 !default;
+$table-bg-active:               $table-bg-hover !default;
+
+//** Border color for table and cell borders.
+$table-border-color:            #ddd !default;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color. */
+
+$btn-font-weight:                bold;
+
+$btn-default-color:              #fff;
+$btn-default-bg:                 $yellow;
+$btn-default-border:             transparent;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             transparent;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             darken($btn-success-bg, 5%) !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                darken($btn-info-bg, 5%) !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+// Allows for customizing button radius independently from global border radius
+$btn-border-radius-base:         $border-radius-base !default;
+$btn-border-radius-large:        $border-radius-large !default;
+$btn-border-radius-small:        $border-radius-small !default;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+$input-bg:                       #fff !default;
+//** `` background color
+$input-bg-disabled:              $gray-lighter !default;
+
+//** Text color for ``s
+$input-color:                    $gray !default;
+//** `` border color
+$input-border:                   #ccc !default;
+
+// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on ``s in CSS.
+$input-border-radius:            $border-radius-base !default;
+//** Large `.form-control` border radius
+$input-border-radius-large:      $border-radius-large !default;
+//** Small `.form-control` border radius
+$input-border-radius-small:      $border-radius-small !default;
+
+//** Border color for inputs on focus
+$input-border-focus:             #66afe9 !default;
+
+//** Placeholder text color */
+$input-color-placeholder:        #7f7f7f;
+
+//** Default `.form-control` height */
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 4) + 2);
+//** Large `.form-control` height
+$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+//** Small `.form-control` height
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+//** `.form-group` margin
+$form-group-margin-bottom:       15px !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+//** Background color for textual input addons
+$input-group-addon-bg:           $gray-lighter !default;
+//** Border color for textual input addons
+$input-group-addon-border-color: $input-border !default;
+
+//** Disabled cursor for form controls and buttons.
+$cursor-disabled:                not-allowed !default;
+
+
+//== Dropdowns
+//
+//## Dropdown menu container and contents.
+
+//** Background for the dropdown menu. */
+$dropdown-bg:                    darken($blue, 8%);
+//** Dropdown menu `border-color`.
+$dropdown-border:                rgba(0,0,0,.15) !default;
+//** Dropdown menu `border-color` **for IE8**.
+$dropdown-fallback-border:       #ccc !default;
+//** Divider color for between dropdown items.
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+//** Dropdown link text color. */
+$dropdown-link-color:            #fff;
+//** Hover color for dropdown links.
+$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
+//** Hover background for dropdown links. */
+$dropdown-link-hover-bg:         #fff;
+
+//** Active dropdown menu item text color.
+$dropdown-link-active-color:     $component-active-color !default;
+//** Active dropdown menu item background color.
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+//** Disabled dropdown menu item background color.
+$dropdown-link-disabled-color:   $gray-light !default;
+
+//** Text color for headers within dropdown menus.
+$dropdown-header-color:          $gray-light !default;
+
+//** Deprecated `$dropdown-caret-color` as of v3.1.0
+$dropdown-caret-color:           #000 !default;
+
+
+//-- Z-index master list
+//
+// Warning: Avoid customizing these values. They're used for a bird's eye view
+// of components dependent on the z-axis and are designed to all work together.
+//
+// Note: These variables are not generated into the Customizer.
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1060 !default;
+$zindex-tooltip:           1070 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+
+//== Media queries breakpoints
+//
+//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
+
+// Extra small screen / phone
+//** Deprecated `$screen-xs` as of v3.0.1
+$screen-xs:                  480px !default;
+//** Deprecated `$screen-xs-min` as of v3.2.0
+$screen-xs-min:              $screen-xs !default;
+//** Deprecated `$screen-phone` as of v3.0.1
+$screen-phone:               $screen-xs-min !default;
+
+// Small screen / tablet
+//** Deprecated `$screen-sm` as of v3.0.1
+$screen-sm:                  768px !default;
+$screen-sm-min:              $screen-sm !default;
+//** Deprecated `$screen-tablet` as of v3.0.1
+$screen-tablet:              $screen-sm-min !default;
+
+// Medium screen / desktop
+//** Deprecated `$screen-md` as of v3.0.1
+$screen-md:                  992px !default;
+$screen-md-min:              $screen-md !default;
+//** Deprecated `$screen-desktop` as of v3.0.1
+$screen-desktop:             $screen-md-min !default;
+
+// Large screen / wide desktop
+//** Deprecated `$screen-lg` as of v3.0.1
+$screen-lg:                  1200px !default;
+$screen-lg-min:              $screen-lg !default;
+//** Deprecated `$screen-lg-desktop` as of v3.0.1
+$screen-lg-desktop:          $screen-lg-min !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm-min - 1) !default;
+$screen-sm-max:              ($screen-md-min - 1) !default;
+$screen-md-max:              ($screen-lg-min - 1) !default;
+
+
+//== Grid system
+//
+//## Define your custom responsive grid.
+
+//** Number of columns in the grid.
+$grid-columns:              12 !default;
+//** Padding between columns. Gets divided in half for the left and right.
+$grid-gutter-width:         30px !default;
+// Navbar collapse
+//** Point at which the navbar becomes uncollapsed.
+$grid-float-breakpoint:     $screen-md-min;
+//** Point at which the navbar begins collapsing.
+$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
+
+
+//== Container sizes
+//
+//## Define the maximum width of `.container` for different screen sizes. 
+
+// Small screen / tablet
+$container-tablet:             (720px + $grid-gutter-width) !default;
+//** For `$screen-sm-min` and up.
+$container-sm:                 $container-tablet !default;
+
+// Medium screen / desktop
+$container-desktop:            (940px + $grid-gutter-width) !default;
+//** For `$screen-md-min` and up.
+$container-md:                 $container-desktop !default;
+
+// Large screen / wide desktop */
+/*$container-large-desktop:      (1140px + $grid-gutter-width) !default;*/
+$container-large-desktop:      (1140px + $grid-gutter-width) !default;
+//** For `$screen-lg-min` and up. **//
+$container-lg:                 $container-large-desktop !default;
+
+
+//== Navbar
+//
+//## */
+
+// Basics of a navbar 
+$navbar-height:                    80px;
+$navbar-margin-bottom:             0;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+$navbar-collapse-max-height:       none;
+
+$navbar-default-color:             #777 !default;
+$navbar-default-bg:                #fff;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+
+// Navbar links
+$navbar-default-link-color:                #fff;
+$navbar-default-link-hover-color:          #fff !default;
+$navbar-default-link-hover-bg:             $blue;
+$navbar-default-link-active-color:         #fff;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-link-active-bg:            transparent;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd !default;
+$navbar-default-toggle-icon-bar-bg:        #888 !default;
+$navbar-default-toggle-border-color:       transparent;
+
+
+//=== Inverted navbar
+// Reset inverted navbar basics
+$navbar-inverse-color:                      lighten($gray-light, 15%) !default;
+$navbar-inverse-bg:                         #222 !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333 !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        #333 !default;
+
+
+//== Navs
+//
+//##
+
+//=== Shared nav styles
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+//== Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+//== Pills
+$nav-pills-border-radius:                   $border-radius-base !default;
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         $component-active-color !default;
+
+
+//== Pagination
+//
+//##
+
+$pagination-color:                     $link-color !default;
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-color:               $link-hover-color !default;
+$pagination-hover-bg:                  $gray-lighter !default;
+$pagination-hover-border:              #ddd !default;
+
+$pagination-active-color:              #fff !default;
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-border:             $brand-primary !default;
+
+$pagination-disabled-color:            $gray-light !default;
+$pagination-disabled-bg:               #fff !default;
+$pagination-disabled-border:           #ddd !default;
+
+
+//== Pager
+//
+//##
+
+$pager-bg:                             $pagination-bg !default;
+$pager-border:                         $pagination-border !default;
+$pager-border-radius:                  15px !default;
+
+$pager-hover-bg:                       $pagination-hover-bg !default;
+
+$pager-active-bg:                      $pagination-active-bg !default;
+$pager-active-color:                   $pagination-active-color !default;
+
+$pager-disabled-color:                 $pagination-disabled-color !default;
+
+
+//== Jumbotron
+//
+//##
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+$jumbotron-heading-color:        inherit !default;
+$jumbotron-font-size:            ceil(($font-size-base * 1));
+$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
+
+
+//== Form states and alerts
+//
+//## Define colors for form feedback states and, by default, alerts.
+
+$state-success-text:             #3c763d !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #31708f !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+$state-warning-text:             #8a6d3b !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;
+
+$state-danger-text:              #a94442 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;
+
+
+//== Tooltips
+//
+//##
+
+//** Tooltip max width
+$tooltip-max-width:           200px !default;
+//** Tooltip text color
+$tooltip-color:               #fff !default;
+//** Tooltip background color
+$tooltip-bg:                  #000 !default;
+$tooltip-opacity:             .9 !default;
+
+//** Tooltip arrow width
+$tooltip-arrow-width:         5px !default;
+//** Tooltip arrow color
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+//== Popovers
+//
+//##
+
+//** Popover body background color
+//$popover-bg:                          $blue-trans;
+//** Popover maximum width
+$popover-max-width:                   276px !default;
+//** Popover border color
+$popover-border-color:                transparent;
+//** Popover fallback border color
+$popover-fallback-border-color:       #ccc !default;
+
+//** Popover title background color
+$popover-title-bg:                    transparent;
+
+//** Popover arrow width
+$popover-arrow-width:                 0px !default;
+//** Popover arrow color
+//$popover-arrow-color:                 $popover-bg !default;
+
+//** Popover outer arrow width
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+//** Popover outer arrow color
+$popover-arrow-outer-color:           fade_in($popover-border-color, 0.05) !default;
+//** Popover outer arrow fallback color
+$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
+
+
+//== Labels
+//
+//##
+
+//** Default label background color
+$label-default-bg:            $gray-light !default;
+//** Primary label background color
+$label-primary-bg:            $brand-primary !default;
+//** Success label background color
+$label-success-bg:            $brand-success !default;
+//** Info label background color
+$label-info-bg:               $brand-info !default;
+//** Warning label background color
+$label-warning-bg:            $brand-warning !default;
+//** Danger label background color
+$label-danger-bg:             $brand-danger !default;
+
+//** Default label text color
+$label-color:                 #fff !default;
+//** Default text color of a linked label
+$label-link-hover-color:      #fff !default;
+
+
+//== Modals
+//
+//##
+
+//** Padding applied to the modal body
+$modal-inner-padding:         15px !default;
+
+//** Padding applied to the modal title
+$modal-title-padding:         15px !default;
+//** Modal title line-height
+$modal-title-line-height:     $line-height-base !default;
+
+//** Background color of modal content area
+$modal-content-bg:                             #fff !default;
+//** Modal content border color
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+//** Modal content border color **for IE8**
+$modal-content-fallback-border-color:          #999 !default;
+
+//** Modal backdrop background color
+$modal-backdrop-bg:           #000 !default;
+//** Modal backdrop opacity
+$modal-backdrop-opacity:      .5 !default;
+//** Modal header border color
+$modal-header-border-color:   #e5e5e5 !default;
+//** Modal footer border color
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+$modal-lg:                    900px !default;
+$modal-md:                    600px !default;
+$modal-sm:                    300px !default;
+
+
+//== Alerts
+//
+//## Define alert colors, border radius, and padding.
+
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+//== Progress bars
+//
+//##
+
+//** Background color of the whole progress component
+$progress-bg:                 #f5f5f5 !default;
+//** Progress bar text color
+$progress-bar-color:          #fff !default;
+//** Variable for setting rounded corners on progress bar.
+$progress-border-radius:      $border-radius-base !default;
+
+//** Default progress bar color
+$progress-bar-bg:             $brand-primary !default;
+//** Success progress bar color
+$progress-bar-success-bg:     $brand-success !default;
+//** Warning progress bar color
+$progress-bar-warning-bg:     $brand-warning !default;
+//** Danger progress bar color
+$progress-bar-danger-bg:      $brand-danger !default;
+//** Info progress bar color
+$progress-bar-info-bg:        $brand-info !default;
+
+
+//== List group
+//
+//##
+
+//** Background color on `.list-group-item`
+$list-group-bg:                 #fff !default;
+//** `.list-group-item` border color
+$list-group-border:             #ddd !default;
+//** List group border radius
+$list-group-border-radius:      $border-radius-base !default;
+
+//** Background color of single list items on hover
+$list-group-hover-bg:           #f5f5f5 !default;
+//** Text color of active list items
+$list-group-active-color:       $component-active-color !default;
+//** Background color of active list items
+$list-group-active-bg:          $component-active-bg !default;
+//** Border color of active list elements
+$list-group-active-border:      $list-group-active-bg !default;
+//** Text color for content within active list items
+$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
+
+//** Text color of disabled list items
+$list-group-disabled-color:      $gray-light !default;
+//** Background color of disabled list items
+$list-group-disabled-bg:         $gray-lighter !default;
+//** Text color for content within disabled list items
+$list-group-disabled-text-color: $list-group-disabled-color !default;
+
+$list-group-link-color:         #555 !default;
+$list-group-link-hover-color:   $list-group-link-color !default;
+$list-group-link-heading-color: #333 !default;
+
+
+//== Panels
+//
+//##
+
+$panel-bg:                    #fff !default;
+$panel-body-padding:          15px !default;
+$panel-heading-padding:       10px 15px !default;
+$panel-footer-padding:        $panel-heading-padding !default;
+$panel-border-radius:         $border-radius-base !default;
+
+//** Border color for elements within panels */
+$panel-inner-border:          none;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        none;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        none;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+
+//== Thumbnails
+//
+//##
+
+//** Padding around the thumbnail image
+$thumbnail-padding:           4px !default;
+//** Thumbnail background color
+$thumbnail-bg:                $body-bg !default;
+//** Thumbnail border color
+$thumbnail-border:            #ddd !default;
+//** Thumbnail border radius
+$thumbnail-border-radius:     $border-radius-base !default;
+
+//** Custom text color for thumbnail captions
+$thumbnail-caption-color:     $text-color !default;
+//** Padding around the thumbnail caption
+$thumbnail-caption-padding:   9px !default;
+
+
+//== Wells
+//
+//##
+
+$well-bg:                     #f5f5f5 !default;
+$well-border:                 darken($well-bg, 7%) !default;
+
+
+//== Badges
+//
+//##
+
+$badge-color:                 #fff !default;
+//** Linked badge text color on hover
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+//** Badge text color in active nav link
+$badge-active-color:          $link-color !default;
+//** Badge background color in active nav link
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+//== Breadcrumbs
+//
+//##
+
+$breadcrumb-padding-vertical:   2em;
+$breadcrumb-padding-horizontal: 0;
+//** Breadcrumb background color
+$breadcrumb-bg:                 #fff !default;
+//** Breadcrumb text color
+$breadcrumb-color:              #4a4a4a;
+//** Text color of current page in the breadcrumb
+$breadcrumb-active-color:       $gray-light !default;
+//** Textual separator for between breadcrumb elements
+$breadcrumb-separator:          "/" !default;
+
+
+//== Carousel
+//
+//##
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+//== Close
+//
+//##
+
+$close-font-weight:           bold !default;
+$close-color:                 #000 !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+//== Code
+//
+//##
+
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$kbd-color:                   #fff !default;
+$kbd-bg:                      #333 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+
+//== Type
+//
+//##
+
+//** Horizontal offset for forms and lists.
+$component-offset-horizontal: 180px !default;
+//** Text muted color
+$text-muted:                  $gray-light !default;
+//** Abbreviations and acronyms border color
+$abbr-border-color:           $gray-light !default;
+//** Headings small color
+$headings-small-color:        $gray-light !default;
+//** Blockquote small color
+$blockquote-small-color:      $gray-light !default;
+//** Blockquote font size
+$blockquote-font-size:        ($font-size-base * 1.25) !default;
+//** Blockquote border color
+$blockquote-border-color:     $gray-lighter !default;
+//** Page header border color
+$page-header-border-color:    $gray-lighter !default;
+//** Width of horizontal description list titles
+$dl-horizontal-offset:        $component-offset-horizontal !default;
+//** Point at which .dl-horizontal becomes horizontal
+$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
+//** Horizontal line color.
+$hr-border:                   $gray-lighter !default;
diff --git a/app/styles/partials/_variables.scss b/app/styles/partials/_variables.scss
new file mode 100755
index 0000000..19eae01
--- /dev/null
+++ b/app/styles/partials/_variables.scss
@@ -0,0 +1,50 @@
+/* BREAKPOINTS */
+$xl-deskotp: 1450px;
+$full: 1200px;
+$desktop: 960px;
+$desktop-small: 768px;
+$desktop-small-after: 767px;
+$tablet: 640px;
+$mobile: 480px;
+$mobile-small: 360px;
+$minimum: 320px;
+
+/* COLORS */
+$blue: #006b95;
+$teal: #2b92b9;
+$orange: #d56a03;
+$search-bg: #DFE2E4;
+
+/* LAYOUT VALUES */
+$slider-offset: 42%;
+$slider-offset-mobile: 83%;
+$nav-height: 35px;
+$trans-time: .2s;
+
+/* FONTS */
+$icon-font-path: "../fonts/";
+
+/* MIXINS */
+@mixin transition($property, $time) {
+	-webkit-transition: $property $time ease;
+	-moz-transition: $property $time ease;
+	-ms-transition-delay: $property $time ease;
+	-o-transition: $property $time ease;
+	transition: $property $time ease;
+}
+
+@mixin menu-transition($offset, $angle) {
+	-webkit-transform: translate3d(0, $offset, 0) rotateZ($angle);
+	-moz-transform: translate3d(0, $offset, 0) rotateZ($angle);
+	-ms-transform: translate3d(0, $offset, 0) rotateZ($angle);
+	-o-transform: translate3d(0, $offset, 0) rotateZ($angle);
+	transform: translate3d(0, $offset, 0) rotateZ($angle);
+}
+
+@mixin transition-delay($time) {
+	-webkit-transition-delay: $time;
+	-moz-transition-delay: $time;
+	-ms-transition-delay: $time;
+	-o-transition-delay: $time;
+	transition-delay: $time;
+}
diff --git a/app/styles/partials/components.scss b/app/styles/partials/components.scss
new file mode 100644
index 0000000..498ccd1
--- /dev/null
+++ b/app/styles/partials/components.scss
@@ -0,0 +1,477 @@
+/* CUSTOMIZE THE CAROUSEL
+-------------------------------------------------- */
+
+.carousel {
+  margin-bottom: 60px;
+
+  .cr-item-container {
+      position: absolute;
+      top:20%;
+      transition:all .2s linear;
+      width: inherit;
+         @media screen and (max-width: $xl-deskotp) {
+           top:10%;
+         }
+
+         @media screen and (max-width: $desktop) {
+           top: 0%;
+         }
+
+         @media screen and (max-width: $desktop-small) {
+           top:20%;
+           margin: 0 5%;
+         }
+
+         @media screen and (max-width: $tablet) {
+            top:10%;
+         }
+
+         @media screen and (max-width: $mobile) {
+           top:5%;
+         }
+
+       h1 {
+          @media screen and (max-width: 1160px) {
+            font-size: 40px;
+          }
+          @media screen and (max-width: $desktop-small) {
+            font-size: 2em !important;
+          }
+
+          @media screen and (max-width: $mobile) {
+            font-size: 1.2em !important;
+          }
+       }
+
+       p {
+           @media screen and (max-width: $desktop-small) {
+             display: none;
+           }
+       }
+
+       a.btn {
+
+         @media screen and (max-width: $desktop-small) {
+           margin-left: 35px !important;
+           padding: 8px;
+           min-width: 150px;
+           font-size: 13px;
+         }
+
+       }
+  }
+
+  /*.container h1 {
+    @media screen and (max-width: 1160px) {
+      font-size: 40px;
+    }
+    @media screen and (max-width: $desktop-small) {
+      font-size: 2em !important;
+    }
+  }*/
+
+}
+/* Since positioning the image, we need to help out the caption */
+.carousel-caption {
+  z-index: 10;
+}
+
+/* Declare heights because of positioning of img element */
+.carousel .item {
+  background-color: #FFF;
+}
+.carousel-inner > .item > img {
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: auto;
+}
+
+
+.carousel-control {
+      width: 10%;
+     @media screen and (max-width: $desktop) {
+       width: 5%;
+     }
+
+}
+
+.carousel-indicators {
+
+     @media screen and (max-width: $tablet) {
+       display: none;
+     }
+
+}
+
+button#toggleCarousel {
+    background: transparent;
+    border: none;
+    color: #FFF;
+    font-size: 14px;
+}
+
+button#toggleCarouselAria {
+  background-color: green;
+  bottom: 20px;
+  margin-left: 50%;
+  padding: 10px 15px;
+  position: absolute;
+  z-index: 20;
+}
+
+a.hero-no-button {
+    display: block;
+    overflow: hidden;
+    width: 100%;
+}
+
+a.hero-no-button > img {
+    width: 100%;
+}
+
+.carousel-inner>.item>a>img {
+  width: 100%;
+}
+
+/* ROTATOR BUILDER
+-------------------------------------------------- */
+
+  /*Center Styles */
+
+  .cntr {
+    width: auto !important;
+    margin: 5% auto !important;
+    display: block;
+    text-align: center;
+    padding: 0;
+
+    @media screen and (max-width: 1277px) {
+      margin-bottom: 2.2% !important;
+    }
+
+  }
+
+  .cntr-btn {
+    margin: 0 auto !important;
+    display: block;
+    text-align: center;
+    width: max-content;
+    width: intrinsic;           /* Safari/WebKit uses a non-standard name */
+    width: -moz-max-content;    /* Firefox/Gecko */
+    width: -webkit-max-content;
+  }
+
+  /* Background color */
+
+  .rt-dark-blue {
+    background-color: #182B49 !important;
+  }
+
+  .rt-light-blue {
+    background-color: $blue !important;
+  }
+
+  .rt-neutral-gray {
+    background-color: #747678 !important;
+  }
+
+
+  /* Accent color */
+
+  .rt-btn-gold {
+    background-color: #C69214 !important;
+    color: #FFF !important;
+  }
+
+  .rt-btn-cyan {
+    background-color: #00C6D7 !important;
+  }
+
+  .rt-btn-yellow {
+    background-color: #FFCD00 !important;
+  }
+
+  .rt-btn-orange {
+    background-color: #FC8900 !important;
+    color: #FFF !important;
+  }
+
+  /* main text font color */
+  .item .rt-text-dark {
+    color: #484949;
+  }
+
+  .jumbotron-hero .text-indent h1.rt-text-dark {
+    text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.25);
+  }
+
+  .jumbotron-hero .text-indent p.rt-text-dark {
+    text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.25);
+  }
+
+@media (min-width: 768px) {
+
+
+  /* Bump up size of carousel content */
+  .carousel-caption p {
+    margin-bottom: 20px;
+    font-size: 21px;
+    line-height: 1.5;
+  }
+
+  .featurette-heading {
+    font-size: 50px;
+  }
+}
+
+@media (min-width: 992px) {
+  .featurette-heading {
+    margin-top: 120px;
+  }
+}
+
+
+.carousel-control.right, .carousel-control.left {
+  background-image: none;
+}
+
+
+/* QuickBlock Carousel
+-------------------------------------------------- */
+
+.qb-carousel {
+
+    #indicators-container {
+      margin-left: 89%;
+
+      #toggleCarousel {
+        float: left;
+      }
+      
+    }
+
+    .carousel-caption {
+
+      bottom: 20px;
+      padding-bottom: 0;
+      padding-top: 0;
+      text-align: left;
+      left: 0;
+      margin-left: 20px;
+
+        h3{
+          color: #FFF;
+        }
+
+        p {
+          font-size: 1em;
+        }
+
+    }
+
+    .carousel-indicators {
+      bottom: 0;
+      left: auto;
+      list-style: none;
+      margin-left: 0;
+      margin-right: 10px;
+      padding-left: 0;
+      right: 0;
+      text-align: right;
+      width: auto;
+    }
+
+
+}
+
+/*Contact Module */
+
+.contact-module {
+
+    h2 {
+      margin-bottom: 15px !important;
+    }
+
+    iframe {
+      width: 100%;
+      height: 300px;
+
+      @media(max-width: 400px) {
+          height: 250px;
+        }
+
+    }
+
+    .contact-lable p {
+    font-weight: bold !important;
+    margin-bottom: 25px;
+    }
+
+
+}
+
+/*Social Media Module */
+
+.social-media-module {
+
+    h2 {
+      text-transform: uppercase;
+      margin-top: 23px;
+      margin-bottom: 23px;
+      font-size: 2em
+    }
+
+    .btn-social-icon {
+      border: 0;
+      border-radius: 0;
+      margin: 0 10px 10px 0
+    }
+
+}
+
+//bootstrap-social button supplements
+
+.btn-youtube {
+    color: #fff;
+    background-color: #dd4b39;
+    border-color: rgba(0,0,0,0.2);
+}
+
+.btn-youtube:hover {
+    color: #fff;
+    background-color: #c23321;
+    border-color: rgba(0,0,0,0.2);
+}
+
+/* Legacy Social Media Icons */
+
+
+.social-list {
+	margin-left: 0;
+	padding-left: 0;
+	list-style: none;
+}
+
+.social-list li {
+	height: 33px;
+	margin: 0 0 10px 0;
+	padding: 0 40px;
+  	cursor: pointer;
+	background: url(../img/sprite_social.png) no-repeat transparent;
+}
+
+.social-list li.facebook {
+	background-position: 0 0;
+}
+
+.social-list li.twitter {
+	background-position: 0 -39px;
+}
+
+.social-list li.youtube {
+	background-position: 0 -80px;
+}
+
+.social-list li.linkedin {
+	background-position: 0 -121px;
+}
+
+.social-list li.googleplus {
+	background-position: 0 -160px;
+}
+
+.social-list li.instagram {
+	background-position: 0 -200px;
+}
+
+.social-list li.tumblr {
+	background-position: 0 -240px;
+}
+
+.social-list li.flickr {
+	background-position: 0 -280px;
+}
+
+.social-list li.vine {
+	background-position: 0 -320px;
+}
+
+.social-list li.pinterest {
+	background-position: 0 -360px;
+}
+
+.social-list li.blogger {
+	background-position: 0 -400px;
+}
+
+.social-list li.rss {
+	background-position: 0 -440px;
+}
+
+.social-list li.vimeo {
+  background-position: 0 -480px;
+}
+
+.social-list li.wordpress {
+  background-position: 0 -520px;
+}
+
+.social-list li.mobile {
+  background-position: 0 -560px;
+}
+
+/* Blockquote Footer Reset*/
+
+blockquote > footer {
+    background-color: transparent;
+}
+
+/* Full Calendar */
+
+#calendar {
+  margin: 20px 0;
+}
+
+/** Accessibility enhancements - July 13, 2021 **/
+
+#indicators-container {
+
+
+  position: absolute;
+  bottom: 20px;
+  width: auto;
+  display: block;
+  /* margin: 0; */
+  padding: 0;
+  margin-left: 50%;
+  min-width: 74px;
+  z-index: 999999;
+  
+  .carousel-indicators {
+    /* min-width: 20px; */
+    margin: 0;
+    padding: 0;
+    position: relative;
+    left: unset;
+    width: auto;
+    display: block;
+    float: left;
+    bottom: 0;
+  }
+
+  #toggleCarousel {
+    min-width: 20px;
+    margin: 0 10px;
+    /* padding: 0; */
+    position: relative;
+    /* left: unset; */
+    /* width: 10px; */
+    display: block;
+    z-index: 9000;
+    float: right;
+    bottom: -1px;
+  }
+
+}
+
diff --git a/app/styles/partials/layout.scss b/app/styles/partials/layout.scss
new file mode 100755
index 0000000..b187ee2
--- /dev/null
+++ b/app/styles/partials/layout.scss
@@ -0,0 +1,540 @@
+/* ***********************************************
+ * Layout
+ *
+ * Components:
+ *  - base layout
+ *  - header
+ *  - footer
+ *  - nav
+ *  - more(?)
+ *
+ * ***************/
+
+/* ***********************************************
+ * BASE
+ * ***************/
+
+html, body
+{
+  background: #FFF;
+  overflow-x: hidden;
+  color: #333;
+  font: normal normal normal 16px/1.5 'Roboto', sans-serif;
+}
+
+/*Accessibility Focus On Keyboard Navigation*/
+
+:focus {
+  outline: thin dotted #333333 !important;
+  outline: 5px auto -webkit-focus-ring-color !important;
+  outline-offset: -2px;
+}
+
+  /* container will have media queries for sizing*/
+
+  .layout-container {
+    max-width: $full;
+    width: 98%;
+    margin: 0px auto;
+    overflow: hidden;
+
+    @media only screen and (max-width: $desktop-small) {
+      width: 94%;
+    }
+
+    @media only screen and (max-width: $full) {
+      max-width: 960px;
+    }
+  }
+
+  .layout-navbar .layout-container {
+    overflow: visible;
+  }
+
+  .layout-header {
+    /* to incorporate new navbar button*/
+    display: block;
+    width: 100%;
+
+    background-color: #2b92b9;
+//
+    @media only screen and (min-width: $minimum) and (max-width: $desktop-small) {
+      height: 105px;
+
+    }
+
+
+
+    //
+   /*
+    @media only screen and (min-width: $desktop-small + 1) {
+      height: 78px;
+    }*/
+  }
+
+  .layout-header,.isLoggedIn {
+    height: 100%;
+  }
+    .layout-login {
+      width: 100%;
+
+      background: #0B4A67;
+      overflow: hidden;
+    }
+    .login-content {
+      color: #fff;
+      font-size: 85%;
+      padding: .4em 0;
+      float: right;
+
+      a {
+        color: #fff;
+        font-weight: 700;
+        text-transform: uppercase;
+      }
+    }
+
+    .layout-title {
+      font-family: 'Roboto', sans-serif;
+      box-sizing: border-box;
+
+      height: 92px;
+      width: 100%;
+      background: #fff;
+      padding: 1.5em 0;
+
+      @media only screen and (max-width: $mobile-small) {
+        padding: 0.5em 0;
+      }
+
+      @media only screen and (max-width: $desktop-small) {
+        padding: 1em 0;
+        height: auto;
+      }
+    }
+
+  .layout-navbar {
+    min-height: 50px;
+    width: 100%;
+
+    background-color: $blue;
+    border: 0;
+    border-bottom: 1px solid $blue;
+    margin-bottom: 0;
+    z-index: 100;
+
+    .layout-container {
+      overflow: visible;
+    }
+  }
+
+  .layout-main {
+    width:100%;
+  }
+
+  .layout-footer {
+    width: 100%;
+
+    color: #fff;
+    font-size: 90%;
+    border-top: 1px solid #ccc;
+    padding: 1em 0;
+    line-height: 1.5;
+
+    > .layout-container {
+      background-position: right -74px;
+
+      @media only screen and (max-width: $tablet) {
+        background: none;
+      }
+    }
+  }
+
+  h1, h2, h3, h4, h5, h6 {
+    color: #333;
+    font-weight: 400;
+
+    line-height: 1.5;
+    /*margin: 0 0 .25em;*/
+  }
+
+  h1 {
+    color: $blue;
+    letter-spacing: .5px;
+    font-size: 39px
+  }
+
+  .h2, h2 {
+    font-size: 28px;
+  }
+
+  .styled-h2 {
+    color: #333;
+  }
+
+
+  hr {
+    background-color: #ccc;
+    color: #ccc;
+    height: 1px;
+  }
+
+  a {
+    color: #016691;
+  }
+
+
+/* ***********************************************
+ * HEADER
+ * **************/
+
+.skip-to-main:focus, .skip-to-main:active {
+  width: auto;
+  height: auto;
+  margin: auto;
+  padding: auto;
+  clip: auto;
+  background-color: green;
+  color: white;
+}
+
+/* ***********************************************
+* NAV
+* **************/
+
+nav
+{
+  .container {
+    padding: 0;
+  }
+}
+
+.navbar-list {
+  list-style: none;
+  font-size: 16px;
+  padding: 9px 0 0 0;
+  margin: 0;
+}
+
+.navbar .caret {
+  margin-left: 7px;
+}
+
+.layout-navbar .navbar-list > li {
+  float: left;
+
+  > a {
+    display: block;
+    color: #fff;
+
+    background-color: $blue;
+    //border-bottom: solid 3px rgba(255,255,255,.4);
+    //border-right: solid 1px #C8CFD3;
+    //border-left: solid 1px rgba(255,255,255,.6);
+
+    padding: 9px 15px;
+    text-decoration: none;
+    line-height: 1.5;
+  }
+
+  &.active > a {
+    border-bottom: #ffcd00 solid 3px;
+  }
+}
+
+.layout-navbar .navbar-list > li:first-child {
+  //border-left: solid 1px #fff;
+}
+
+// Bootstrap Native Navigation Overrides
+.navbar {
+	margin-bottom: 0;
+}
+.navbar-default {
+	background-color: $blue;
+	border-bottom: none;
+}
+.navbar-default .navbar-nav > li > a {
+    color: #fff;
+}
+.navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus {
+    background-color: darken($blue, 10%);
+    color: #fff;
+}
+.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus {
+	background-color: darken($blue, 10%);
+	color: #fff;
+}
+.dropdown-menu {
+	background-color: darken($blue, 10%);
+  border-radius: 0;
+  padding: 0;
+}
+.dropdown-menu > li > a {
+	color: #fff;
+  padding: 6px 20px;
+}
+
+.navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus {
+	background-color: darken($blue, 10%);
+	color: #fff;
+}
+
+.navbar-toggle {
+	background-color: $blue;
+  border: none;
+	float: left;
+	margin: 8px 0 8px 20px;
+}
+
+.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
+    background-color: darken($blue, 10%);
+}
+.navbar-default .navbar-toggle .icon-bar {
+    background-color: #fff;
+}
+
+.mobile-nav-bars {
+  padding: 5px;
+  float: left;
+}
+
+.mobile-nav-icon {
+  font-size: 13px;
+  padding: 2px 0;
+  float: left;
+  color: #FFF;
+}
+
+#search {
+	position: absolute !important;
+	width: 385px;
+}
+
+/*Dropdown Hover Fallback */
+
+@media only screen and (min-width:767px) {
+  #navbar > .navbar-nav > .dropdown:hover .dropdown-menu {
+    display: block;
+ }
+  #navbar > .navbar-nav > li:hover > a {
+    background-color: #004268 !important;
+ }
+}
+
+// offcanvas overrides
+
+.navmenu-default .navmenu-nav > .active > a, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a, .navmenu-default .navmenu-nav > .active > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:hover, .navmenu-default .navmenu-nav > .active > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > .active > a:focus {
+	color: #fff;
+	background-color: darken($blue, 10%);
+}
+
+.navmenu-default .navmenu-nav > li > a:hover, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:hover, .navmenu-default .navmenu-nav > li > a:focus, .navbar-default .navbar-offcanvas .navmenu-nav > li > a:focus {
+	color: #fff;
+	background-color: $blue;
+}
+
+.navmenu-nav {padding-bottom: 0;}
+
+.navmenu-nav > li {
+	border-bottom: 1px solid #ccc;
+}
+
+.navmenu-default .navmenu-nav > li > a {
+	color: #333;
+}
+
+.open .navmenu-nav > li > a {
+	padding: 10px 20px 10px 30px;
+	color: $blue;
+	&:hover {
+		color: #333;
+		background-color: transparent;
+		text-decoration: underline;
+	}
+}
+
+
+
+li.open {border-bottom: none;}
+
+/*************************************************
+* Mobile Nav and search
+* ****************/
+
+.offcanvas > ul.nav.navbar-nav.navbar-right {
+
+  @media only screen and (max-width: $desktop-small-after) {
+    margin: 0;
+
+      .search {
+        width: 100%;
+      }
+
+      .search-toggle {
+        display: none;
+      }
+
+      .search-content {
+        background-color: #ffffff;
+        border-bottom: 2px solid #BDBDBD;
+      }
+
+      #search{
+        display: block !important;
+        position: relative !important;
+        width: 100%;
+        padding: 10px 15px;
+        overflow: hidden;
+      }
+
+      .search-content .input-group {
+        width: 60%;
+      }
+
+      .search-content .search-scope {
+        width: 34%;
+      }
+
+  }
+
+}
+
+
+@media only screen and (max-width: $desktop-small-after) {
+  .navmenu-default .navmenu-nav > li > a {
+    background-color: #e7e7e7;
+    color: $blue !important;
+  }
+
+  .navmenu-default .navmenu-nav > .open > a {
+    color: $blue !important;
+    border-bottom: 1px solid #CCC;
+
+  }
+
+  .dropdown-menu > li > a {
+    background-color: #FFF !important;
+    color: $blue !important;
+  }
+
+  .navmenu-default .navmenu-nav > .active > a {
+      color: $blue !important;;
+      background-color: #e7e7e7;
+      border-left: 2px solid $blue;
+  }
+
+}
+
+
+
+
+/* ***********************************************
+* MAIN
+* **************/
+
+main
+{
+}
+  .main-section {
+    line-height: 1.5;
+    padding: 0 0 1em 0;
+
+    /* space for smaller viewports */
+    margin-bottom: 1em;
+    @media only screen and (max-width: $desktop-small) {
+      width:100%;
+      padding: 0 15px 1em;
+    }
+
+    a {
+      text-decoration: underline;
+    }
+
+    .btn {
+      text-decoration: none;
+    }
+
+  }
+
+  .main-section-content {
+    position: relative;
+  }
+  .main-section img {
+
+    @media only screen and (max-width: 975px) {
+      max-width: 100% !important;
+      height: auto !important;
+    }
+  }
+
+  .main-section-supplement {
+    background-color: #F2F5F7;
+    border: solid 1px #C8CFD3;
+    padding: 1em;
+    margin-bottom: 1em;
+  }
+    .main-section-supplement h3 {
+      font-size: 115%;
+      color: #738AA3;
+      text-shadow: 0 1px 1px #FFF;
+    }
+
+
+    .blank-slate a, .layout-container.row a {
+      text-decoration: underline;
+
+    }
+
+    .layout-container.row .jumbotron a {
+      text-decoration: none;
+    }
+
+
+
+
+/* ***********************************************
+ * FOOTER
+ * **************/
+
+footer
+{
+	background-color: $blue;
+}
+  .footer-links {
+    list-style: none;
+
+    margin: .5em 0 0;
+    padding: 0;
+
+    > li {
+      display: inline;
+
+      margin-left: 0;
+      margin-right: .5em;
+      padding-right: .75em;
+      a {
+	      color: #fff;
+	      text-decoration: underline;
+      }
+    }
+
+    > li:first-child {
+      border-right: 1px solid #fff;
+    }
+  }
+
+.footer .row {
+	padding: 1.5em 0;
+	color: #fff;
+	font-size: .9em;
+}
+.footer-logo {
+	width: 158px;
+	height: 30px;
+	float: right;
+	@media only screen and (max-width: $desktop-small) {
+		float: none;
+		margin-top: 15px;
+	}
+}
diff --git a/app/styles/partials/modules.scss b/app/styles/partials/modules.scss
new file mode 100755
index 0000000..2a0003a
--- /dev/null
+++ b/app/styles/partials/modules.scss
@@ -0,0 +1,418 @@
+/* ***********************************************
+ * Modules
+ *
+ * Components:
+ *  - breadcrumbs
+ *  - search
+ *  - title
+ *  - buttons
+ *  - input
+ *  - two-column intro banner
+ *  - more(?)
+ *
+ * ***************/
+
+/* ***********************************************
+ * BREADCRUMBS
+ * ***************/
+
+.breadcrumb, .breadcrumbs-list {
+  background-color: #fff;
+
+  margin-bottom: 0;
+  //padding: 2em 0 1em;
+
+  > li {
+    color: #666;
+    display: inline;
+    font-size: 80%;
+  }
+}
+
+/* ***********************************************
+ * NAVBAR
+ * ***************/
+/*
+ul.nav.navbar-nav.navbar-right {
+  @media only screen and (max-width: $desktop-small-after) {
+  background: gray;
+  margin: 0;
+  padding: 0;
+  }
+}
+*/
+/* ***********************************************
+ * SEARCH
+ * ***************/
+
+.search {
+  float: right;
+  position:relative;
+  margin-top: 0;
+//  max-width:380px;
+}
+
+.search-toggle {
+  color: #fff !important;
+  /*max-height: 38px;*/
+
+  background-color: transparent !important;
+  border-radius: 0;
+  -webkit-border-radius: 0;
+  border: none;
+  border-width: 0 1px;
+
+  outline: 0;
+  padding: 11px;
+
+  /*&:hover,*/
+  &.search-is-open {
+	color: darken(#fff, 15%);
+    background-color: #014663 !important;
+    border-color: none;
+    text-decoration: none;
+  }
+  span.caret {
+	margin-left: 6px;
+  }
+}
+
+.search-content {
+  position: absolute;
+  right: 0;
+
+  width: 385px;
+  padding: 10px;
+
+  background-color: #014663;
+  border: none;
+  border-width: 0 1px 2px;
+  display: none;
+
+  @media only screen and (max-width: $desktop) {
+    position: relative;
+    width: 100%;
+  }
+}
+  .search-content.search-is-open {
+    display: block;
+    z-index: 999;
+  }
+
+  .search-content .search-scope {
+    border-radius: 0;
+    max-width: 30%;
+    font-size: 11px;
+    padding: 4px 2px 4px 0;
+    float: left;
+    height: 27px;
+  }
+  .search-content .input-group {
+    width: 250px;
+    float: right;
+  }
+  .search-content .form-control {
+    float: right;
+    -webkit-border-radius: 0;
+    border-radius: 0;
+    height: 26px;
+  }
+
+/* ***********************************************
+ * TITLE
+ * ***************/
+
+.title-header {
+  float: left;
+
+  color: #000;
+  font-size: 1.35rem;
+  letter-spacing: 1px;
+  text-decoration: none;
+  text-transform: uppercase;
+
+  &.title-header-short {
+    display: none;
+    @media only screen and (max-width: $mobile) {
+	    display: block;
+	    margin-top: 0;
+    }
+  }
+
+  &:hover,
+  &:focus {
+    color: lighten(#000, 40%);
+    text-decoration: none;
+  }
+
+  @media only screen and (max-width: $mobile) {
+	display: none;
+    margin-top: 2.25em;
+  }
+  @media only screen and (max-width: $mobile-small) {
+    font-size: 20px;
+    margin-top: 2em;
+  }
+}
+
+.title-header-large {
+	margin-top: 5px;
+	@media only screen and (min-width: $mobile) and (max-width: $desktop-small) {
+    display: block;
+    margin-top: 2.5em;
+  }
+}
+
+.title-logo {
+  float: right;
+
+  width: 229px;
+  height: 65px;
+
+  overflow: hidden;
+  text-indent: -999em;
+  background-position: 0 -3px;
+
+  @media only screen and (max-width: $mobile) {
+    background-position: -239px -2px;
+    height: 45px;
+    width: 166px;
+    display: none !important;
+  }
+
+  @media only screen and (max-width: $desktop-small) {
+    display: block;
+    position: absolute;
+
+  }
+}
+
+
+.header-logo {
+
+  height: 30px;
+  margin: 15px 20px 0 0;
+  width: auto;
+
+  @media only screen and (min-width: $mobile) {
+    display: none;
+  }
+
+}
+
+/* ***********************************************
+ * MAIN CONTENT SIDE NAV
+ * ***************/
+
+.sidebar-section {
+	padding: 0 4em 1em 0;
+	@media (max-width: $desktop) {
+	    padding: 0 0 3em 0;
+	    width: 100%;
+    }
+}
+
+#site-logo img {
+    max-width: 100%;
+    height: auto;
+    margin-top: 0;
+    margin-bottom: 15px;
+    @media (max-width: $desktop-small) {
+	    display: none;
+    }
+}
+
+.main-content-nav {
+  background: #eee;
+  border: solid 1px #D8D7D7;
+  padding: 1em;
+  margin-bottom: 1em;
+
+  @media only screen and (max-width: $desktop-small) {
+    margin-top: 0em;
+  }
+
+  > h2 {
+    color: #333;
+    font-size: 140%;
+    //text-shadow: 0 1px 1px #FFF;
+    margin: 0 0 .4em;
+    text-transform: capitalize;
+    font-weight: normal;
+  }
+  > ul {
+    /* for borders to line up properly */
+    margin: 0 -1em -1em;
+    /* override navbar-list 14px for main navbar*/
+    font-size: 1em;
+
+    > li.active {
+      color: darken($blue, 10%);
+    }
+  }
+
+  > ul li {
+    border-top: solid 1px #D8D7D7;
+    list-style: none;
+
+    a {
+      display: block;
+      padding: 1em;
+	  color: #333;
+      &:hover {
+        background-color: $blue;
+        color: #fff;
+      }
+      &:hover, &:link, &:active {
+        text-decoration: none;
+      }
+    }
+
+    &.active {
+      background-color: #fff;
+      padding: 1em 0 1em 1em;
+      font-weight: bold;
+
+	  > ul li a {
+		  color: $blue;
+		  padding-left: 0 !important;
+	  }
+
+      > a {
+        color: $blue;
+      }
+
+	  a:hover {
+        text-decoration: underline;
+        color: #484949;
+        background-color: transparent;
+      }
+    }
+
+    ul {
+      margin: .4em 0 -.4em 1em;
+      padding:0;
+    }
+
+    li {
+      font-size: 85%;
+    }
+  }
+}
+
+
+/* ***********************************************
+ * BUTTONS
+ * ***************/
+
+button {
+
+}
+
+
+/* ***********************************************
+ * INPUT
+ * ***************/
+
+input {
+
+}
+
+.form-control {
+  -webkit-border-radius: 0;
+  border-radius: 0;
+  padding: 0.5em;
+}
+
+select {
+
+}
+
+.subhead {
+  font-size: 120%
+}
+
+
+
+/* ***********************************************
+ * Two Column Intro Banner
+ * ***************/
+
+ .intro-banner {
+  margin: 0 !important;
+  position: relative;
+  max-height: 380px;
+
+    h1 {
+      text-align: center;
+      color: white;
+      text-shadow: 0px 0px 20px #1e1e1e;
+    }
+
+    img {
+      width: 100%;
+      height: auto;
+      max-height: 380px;
+      position: absolute;
+    }
+
+    .cr-item-container {
+      margin: 9% 0;
+      /*
+      @media only screen and (max-width: $full) {
+        top: 20%;
+      }
+      */
+    }
+
+    @media only screen and (max-width: $full) {
+      .intro-banner-heading {
+        font-size: 53px !important;
+      }
+   }
+
+    @media only screen and (max-width: $desktop) {
+      .intro-banner-heading {
+        font-size: 43px !important;
+      }
+   }
+
+   @media only screen and (max-width: $desktop-small) {
+    .intro-banner-heading {
+      font-size: 43px !important;
+    }
+  }
+
+    @media only screen and (max-width: $tablet) {
+      .intro-banner-heading {
+        font-size: 37px !important;
+      }
+    }
+
+    @media only screen and (max-width: $mobile) {
+      .intro-banner-heading {
+        font-size: 27px !important;
+      }
+    }
+  
+ 
+/*
+@media only screen and (max-width: $desktop-small) {
+  min-height: 300px;
+}
+
+@media only screen and (max-width: $desktop-small) {
+  min-height: 250px;
+}
+*/
+
+}
+
+
+.display-flex-center {
+  display: flex;
+  align-items: center;
+  min-height: 380px;
+  
+}
+
diff --git a/app/styles/partials/navbar.scss b/app/styles/partials/navbar.scss
new file mode 100755
index 0000000..55d080a
--- /dev/null
+++ b/app/styles/partials/navbar.scss
@@ -0,0 +1,420 @@
+.layout-header.open,
+.layout-main.open,
+.layout-footer.open {
+  -webkit-transform: translate(42%,0);
+  transform: translate(42%,0);
+
+  @media only screen and (max-width: $tablet) {
+    -webkit-transform: translate(83%,0);
+    transform: translate(83%,0);
+  }
+}
+
+.layout-header button.btn-nav {
+  position: relative;
+  float: left;
+
+  height: 44px;
+
+  color: #fff;
+  font-size: 24px;
+
+  background-image: none;
+  background-color: $blue;
+  border-radius: 1px;
+  border: 1px solid $blue;
+
+  padding: 9px 10px;
+  margin-right: 10px;
+
+  @media only screen and (max-width: $mobile-small) {
+    font-size: 20px;
+  }
+
+  @media only screen and (max-width: $desktop) {
+    display: block;
+  }
+}
+/* button iconbar styling */
+
+
+button.btn-nav .icon-bar {
+  display: block;
+
+  width: 30px;
+  height: 2px;
+
+  background-color: #fff;
+  border-radius: 1px;
+  margin-top: 0.25em;
+
+  @media only screen and (max-width: $mobile-small) {
+    width: 22px;
+  }
+}
+
+.btn-nav .icon-bar:nth-child(2),
+.btn-nav .icon-bar:nth-child(3),
+.btn-nav .icon-bar:nth-child(4) {
+  transition: all .2s ease;
+  transition-delay: .25s;
+  opacity: 1;
+}
+  .btn-nav .icon-bar:nth-child(2) {
+    margin: 0;
+  }
+  /* button transition code */
+  .btn-nav .icon-bar:nth-child(2),
+  .btn-nav .icon-bar:nth-child(4) {
+    -webkit-transition: all .2s ease;
+    -o-transition: all .2s ease;
+    transition: all .2s ease;
+
+    -webkit-transition-delay: .25s;
+    -o-transition-delay: .25s;
+    transition-delay: .25s;
+  }
+    .layout-header.open .btn-nav .icon-bar:nth-child(2) {
+      -webkit-transform: translate3d(0,8px,0) rotateZ(45deg);
+      -ms-transform: translate3d(0,8px,0) rotateZ(45deg);
+      -o-transform: translate3d(0,8px,0) rotateZ(45deg);
+      transform: translate3d(0,8px,0) rotateZ(45deg);
+    }
+    .layout-header.open .btn-nav .icon-bar:nth-child(3) {
+      opacity: 0;
+    }
+    .layout-header.open .btn-nav .icon-bar:nth-child(4) {
+      -webkit-transform: translate3d(0, -8px, 0) rotateZ(-45deg);
+      -ms-transform: translate3d(0, -8px, 0) rotateZ(-45deg);
+      -o-transform: translate3d(0, -8px, 0) rotateZ(-45deg);
+      transform: translate3d(0, -8px, 0) rotateZ(-45deg);
+    }
+/* end button transition code */
+
+
+button:hover {
+  border-color: transparent;
+  background-color: rgba(254,254,254,.4);
+}
+
+button:focus {
+  border-color: transparent;
+  outline: 0;
+  background-color: rgba(254,254,254,.4);
+}
+
+button:active {
+  border-color: transparent;
+  background-color: rgba(254,254,254,.6);
+}
+
+.layout-navbar.navbar-is-opened .navbar-list > li {
+  float: none;
+}
+
+.navdrawer-container.navbar-is-opened .layout-container {
+  width:100%;
+}
+
+
+.navdrawer-container.navbar-is-opened .navbar-list > li.active {
+  background: #fff;
+}
+
+.navdrawer-container.navbar-is-opened .navbar-list > li > a {
+  border: none;
+  border-bottom: 1px solid #ccc;
+  padding: 10px 10px 10px 20px;
+  background-color: $blue !important;
+  border: none !important;
+  &:hover {
+	  background-color: darken($blue, 10%) !important;
+  }
+  @media only screen and (max-width: $desktop) {
+    border: 0;
+    font-weight: bold;
+    background: $blue;
+    border-bottom: 1px solid #ccc;
+  }
+}
+
+/* Search bar integration */
+.navdrawer-container.navbar-is-opened button.search-toggle {
+  display: none;
+}
+
+.navdrawer-container.navbar-is-opened .search {
+  width: 100%;
+  height: 100%;
+
+  float: none;
+}
+
+.navdrawer-container.navbar-is-opened .search-content {
+  display: block;
+
+  height: 43px;
+
+  padding: 7px;
+  background-color: $blue;
+  //border-bottom: 2px solid #BDBDBD;
+
+    .search-scope {
+      max-width: 30%;
+      font-size: 11px;
+      padding: 4px 2px 4px 0;
+      float: left;
+      height: 27px;
+    }
+
+    form > .input-group {
+      width: 55%;
+      float: right;
+
+      input {
+        height: 27px;
+      }
+    }
+}
+
+.navdrawer-container ul {
+  list-style-type: none;
+}
+
+  /* sub list stylings */
+  .navdrawer-container .navbar-subnav:hover > a {
+    border-bottom: solid 3px #9FB3BF;
+  }
+    .navbar-subnav .navbar-sublist li:hover > a {
+      background-color: $blue;
+    }
+
+  .navdrawer-container ul.navbar-sublist {
+    display: none;
+    position: absolute;
+    font-size: 14px;
+
+    @media only screen and (max-width: $desktop) {
+      display: block;
+      position: relative;
+      border-left: 0;
+      border-top: 0;
+      border-bottom: 1px solid #E2E2E2;
+      box-shadow: none;
+    }
+
+    padding: 0;
+
+    //border-left: solid 1px #C8CFD3;
+    //border-top: solid 1px #C8CFD3;
+    margin-left: 0;
+
+    -webkit-box-shadow: 0 3px 5px 0 rgba(50,50,50,.2);
+    box-shadow: 0 3px 5px 0 rgba(50,50,50,.2);
+  }
+    .navdrawer-container .subnav-hover ul.navbar-sublist {
+      display: block;
+      z-index: 3;
+
+      @media only screen and (max-width: $desktop) {
+        display: block;
+        position: relative;
+        border: 0;
+        border-bottom: 1px solid #ccc;
+        -webkit-box-shadow: none;
+        box-shadow: none;
+
+        a {
+          border: 0;
+          padding-left: 3em;
+        }
+      }
+    }
+
+    .navdrawer-container .navbar-sublist.subnav-is-opened {
+      display: block;
+    }
+      .navdrawer-container.navbar-is-opened .navbar-sublist.subnav-is-opened a{
+        border: 0;
+        padding-left: 3em;
+      }
+
+    .navdrawer-container .navbar-sublist a {
+      display: block;
+
+      //width: 100%;
+      //height: 100%;
+
+      background: darken($blue, 5%);
+      // border-bottom: solid 1px #C8CFD3;
+      //border-right: solid 1px #ffcd00;
+      //border-left: solid 1px rgba(255,255,255,.6);
+
+      color: #fff;
+      padding: 9px 15px 8px;
+      text-decoration: none;
+    }
+.layout-header,
+.layout-main,
+.layout-footer {
+  -webkit-transition: -webkit-transform .3s ease-in-out;
+  transition: transform .3s ease-in-out;
+}
+
+nav.navdrawer-container.navbar-is-opened {
+  position: fixed;
+
+  top: 0;
+  height: 100%;
+
+  opacity: 1;
+
+  border-right: 1px solid #DADADA;
+
+  -webkit-transition: opacity 0.3s ease-in-out;
+  transition: opacity 0.3s ease-in-out;
+
+  -webkit-transform: translate(0,0);
+  transform: translate(0,0);
+
+  transition-delay: 0.15s;
+
+  pointer-events: auto;
+
+  z-index: 2;
+}
+
+
+.navbar-is-opened {
+  display: block;
+}
+
+.navbar-is-opened a:hover {
+  text-decoration: underline !important;
+}
+
+
+  .navdrawer-container.navbar-is-opened {
+    @media only screen and (max-width: $tablet) {
+      width: 83%;
+
+      .search {
+        max-width: none;
+      }
+    }
+
+    @media screen and (min-width: $minimum) and (max-width: $tablet) {
+      .search-content form > .input-group {
+        width: 60%;
+      }
+    }
+
+  }
+
+@media only screen and (max-width: $desktop-small) {
+  .layout-header .btn-nav {
+    margin-top: 1.7em;
+  }
+}
+@media only screen and (max-width: $desktop) {
+  .navdrawer-container .navbar-sublist a {
+    border: none;
+    margin: 0;
+    padding-left: 2.5em !important;
+  }
+}
+
+
+@media only screen and (min-width: $desktop) {
+  .navdrawer-container {
+    display: block;
+    width: 100%;
+    opacity: 1;
+  }
+
+  button.btn-nav {
+    display: none;
+  }
+}
+
+@media only screen and (max-width: $desktop) {
+  .navdrawer-container {
+    position: fixed;
+    width: 42%;
+    z-index: -1;
+    opacity: 0;
+  }
+
+    .navdrawer-container .navbar-subnav .navbar-sublist.subnav-is-opened {
+      display: block;
+      position: relative;
+
+      border: 0;
+      border-bottom: 1px solid #ccc;
+
+      -webkit-box-shadow: none;
+      box-shadow: none;
+    }
+}
+
+.collapse-navbar .navdrawer-container {
+  position: fixed;
+  width: 42%;
+  z-index: -1;
+  opacity: 0;
+
+  .subnav-hover ul.navbar-sublist {
+    display: block;
+    position: relative;
+    border: 0;
+    border-bottom: 1px solid #ccc;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+
+    a {
+      border: 0;
+      padding-left: 3em;
+    }
+  }
+}
+
+.collapse-navbar .btn-nav {
+  display: block;
+}
+
+.collapse-navbar .search-content {
+  position: relative;
+  width: 100%;
+}
+
+ul.nav.navbar-nav.navbar-right {
+    margin-right: 0 !important;
+}
+
+a.navbar-brand {
+  color: #FFF !important;
+}
+
+/* Blink & TL Styles */
+
+.blink-nav-button {
+  background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/../img/blink_nav.png) 0 6px no-repeat !important;
+  min-width: 78px;
+
+    a {
+      color: transparent !important;
+      background-color: transparent !important;
+    }
+
+}
+
+.tlink-nav-button {
+  background: #FDFDFD url(http://cdn.ucsd.edu/developer/decorator/4.5.4/styles/../img/current_students_nav.png) 0 6px no-repeat !important;
+  min-width: 103px;
+
+    a {
+      color: transparent !important;
+      background-color: transparent !important;
+    }
+
+}
diff --git a/app/styles/partials/print.scss b/app/styles/partials/print.scss
new file mode 100755
index 0000000..47f3b3d
--- /dev/null
+++ b/app/styles/partials/print.scss
@@ -0,0 +1,46 @@
+@media print {
+  /* removes ucsd logo and other background images (glyphicons) */
+  html, main, footer *,
+  .layout-title *, {
+    background-color: transparent !important;
+    background-image: none !important;
+    overflow: visible !important;
+  }
+
+  /* title and header font color should be black (readable) */
+  .title-header,
+  h1,h2,h3,h4,h5,h6,p
+  {
+    color: #000;
+  }
+
+  /* hide login/ emergency/ nav/ search/ footer links/ btn-nav styles */
+  #uc-emergency, .layout-login, nav, .search, .footer-links, .btn-nav {
+    display: none;
+  }
+
+  main {
+    width: 99.99% !important;
+
+    section {
+      left: 0 !important;
+      margin: 0 !important;
+      padding: 0 !important;
+      width: 100% !important;
+    }
+  }
+
+  /* reset horizontal ruler */
+  hr {
+    background-color: #ccc !important;
+  }
+
+  .main-content-nav {
+    background: none;
+  }
+
+  a[href]:after {
+      content: none !important;
+    }
+
+}
diff --git a/app/styles/partials/reference.scss b/app/styles/partials/reference.scss
new file mode 100755
index 0000000..37f04ce
--- /dev/null
+++ b/app/styles/partials/reference.scss
@@ -0,0 +1,51 @@
+/*
+ * Consolidating image references
+ * to a singular location
+ *
+ * minimizes number of calls sent to reference images
+ */
+
+// sprite_base & sprite_base2x
+.title-logo,
+.layout-footer > .layout-container {
+  background: url(../img/sprite_base.png) no-repeat transparent;
+
+  @media screen and (-webkit-min-device-pixel-ratio:2) {
+    background-image: url(../img/sprite_base2x.png);
+    background-size: 500px 120px;
+  }
+}
+
+// sprite_social
+.social-list li {
+  background: url(../img/sprite_social.png) no-repeat transparent;
+}
+
+// sprite_icon
+.msg h4,
+.icon{
+  background: url(../img/sprite_icon.png) no-repeat transparent;
+}
+
+// icon_widget
+.drawer-toggle a, .drawer h2 a,
+.flex-pauseplay a {
+  background: url(../img/sprite_icon_widget.svg) no-repeat transparent ;
+  background-size: 16px 300px;
+}
+
+// icon_loading & icon_loading_inline
+div.loading {
+  background: url(../img/icon_loading.gif) no-repeat transparent;
+}
+span.loading {
+  background: url(../img/icon_loading_inline.gif) no-repeat transparent;
+}
+
+// asterisk
+.icon.asterisk,
+.field .required,
+.field_top .required,
+.field_left .required {
+  background: url(../img/asterisk.png) no-repeat transparent;
+}
diff --git a/app/styles/partials/ucsd/_homepage-wide.scss b/app/styles/partials/ucsd/_homepage-wide.scss
new file mode 100755
index 0000000..3fa2b01
--- /dev/null
+++ b/app/styles/partials/ucsd/_homepage-wide.scss
@@ -0,0 +1,348 @@
+@import url(http://fonts.googleapis.com/css?family=Roboto:300);
+
+.flex-caption {
+  margin-bottom: 40px !important
+}
+
+.flexslider {
+  margin: 0 -40px;
+  width: 1280px;
+  overflow: hidden;
+  height: 400px
+}
+
+.flex-controls {
+  position: relative;
+  top: -400px
+}
+
+#tdr_nav_content {
+  z-index:1000;
+}
+
+.main-container {
+  background: #fff;
+  border: 1px solid #CCC\9;
+  -webkit-box-shadow: 0 0 4px 0 rgba(0, 0, 0, .4);
+  box-shadow: 0 0 4px 0 rgba(0, 0, 0, .4);
+  overflow: hidden;
+  padding: 0 15px 20px;
+  margin: -18px 0 0
+}
+
+.main-header {
+  margin-top: 30px
+}
+
+.main-content {
+  width: 520px;
+  float: left;
+  padding-top: 29px
+}
+
+.sidebar {
+  width: 520px;
+  padding: 12px 20px;
+  float: right;
+  margin-right: -40px;
+  border-top-left-radius: 3px;
+  border-bottom-left-radius: 3px;
+  border-right: 0
+}
+
+.sidebar h1 {
+  margin-left: -20px;
+  padding-left: 20px
+}
+
+.sidebar h2 {
+  font-size: 25px;
+  margin: 20px 0;
+}
+
+h2.top {
+  color: #333;
+  font-family: 'Roboto', sans-serif;
+  font-size: 30px;
+  font-weight: 400;
+  margin-top: 30px
+}
+
+
+
+.flex-caption {
+  font-size: 18px
+}
+
+h2.side a {
+  color: #0b638b
+}
+
+.main-content h2 {
+  padding-bottom: 5px
+}
+
+#tdr_crumbs {
+  position: relative;
+  padding-bottom: 1em
+}
+
+#tdr_crumbs ul {
+  padding: 3px 0
+}
+
+main, #tdr_content {
+  padding: 0
+}
+
+#tdr_content_content #tdr_3_col_content, #tdr_content_content #tdr_2_col_content {
+  padding-top: 12px
+}
+
+.main-container .drawer h2 {
+  font-size: 16px;
+  line-height: 18px;
+  margin-top: 0
+}
+
+.main-container {
+  position: relative;
+  z-index: 5
+}
+
+.main-header {
+  padding: 0 0 10px;
+  margin-bottom: 10px
+}
+
+.main-header h1 {
+  color: #505050
+}
+
+.main-content h2.header {
+  color: #fff
+}
+
+.main-content h3.header {
+  color: #505050
+}
+
+h2.side {
+  font-size: 18px
+}
+
+.main-content img {
+  max-width: 100%;
+  display: block
+}
+
+.division-accomplishments {
+  list-style-type: none;
+  padding-left: 0;
+  margin-top: 5px;
+  display: none
+}
+
+.division-accomplishments li {
+  margin: 6px 0 0;
+  background-color: #2096cf;
+  padding: 2px 10px;
+  font: bold 18px/24px Helvetica, Arial, sans-serif;
+  color: #fff
+}
+
+.side {
+  font-weight: normal
+}
+
+.larger-link {
+  font-size: 18px
+}
+
+.drawer-toggle {
+  display: none;
+  visibility: hidden
+}
+
+#drawer1 {
+  margin-top: 10px
+}
+
+.drawer > div {
+  padding: 0
+}
+
+.drawer div {
+  display: none
+}
+
+.drawer div:nth-child(2) {
+  display: block
+}
+
+.drawer h2 {
+  padding: 4px 10px
+}
+
+.drawer ul {
+  list-style-type: none
+}
+
+.drawer h2.expand {
+  background: 0
+}
+
+.drawer h2.expand:hover, .drawer h2.expand:active {
+  background: #f0faff
+}
+
+.sidebar {
+  background: #f0f0f0;
+  border: 1px solid #e4e1d8;
+  border-right: 0;
+  padding: 12px 20px
+}
+
+.sidebar h1 {
+  text-transform: lowercase;
+  border-bottom: 1px solid #ebe6e6;
+  display: inline;
+  padding: 0 15px 7px 0
+}
+
+.sidebar h1 {
+  border-bottom: 0
+}
+
+.sidebar article {
+  border-top: 1px solid #0a7aad;
+  overflow: auto;
+  padding: 20px 0 0;
+  margin: 5px 0 10px
+}
+
+.event-date {
+  color: white;
+  font-weight: bold;
+  background: #f26522;
+  float: left;
+  padding: 0 5px;
+  border-radius: 3px;
+  margin-right: 10px
+}
+
+.sidebar article p {
+  margin-top: 0
+}
+
+.sidebar img {
+  margin-top: 5px;
+  max-width: 125px;
+  max-height: 125px
+}
+
+.read-more a {
+  font-size: 12px;
+  font-weight: bold
+}
+
+
+@media screen and (max-width: 1200px) {
+
+  .main-container {
+    margin: 0;
+    padding-top: 20px
+  }
+  .main-content {
+    width: 420px;
+  }
+  .sidebar {
+    width: 420px;
+  }
+
+  .flex-caption {
+    margin-bottom: 0 !important
+  }
+  .flexslider {
+    margin: 0;
+    width: 100%;
+    overflow: hidden;
+    height: auto
+  }
+  .flex-controls {
+    position: relative;
+    top: 0
+  }
+  .main-header {
+    margin: 10px 0 0
+  }
+}
+
+@media screen and (max-width: 900px) {
+  .main-content {
+    float: left;
+    width: 100%
+  }
+  .sidebar {
+    border: 1px solid #e4e1d8;
+    border-radius: 0;
+    float: left;
+    width: 98%;
+    padding: 12px 5px
+  }
+}
+
+@media screen and (max-width: 500px) {
+
+  .flexslider {
+    margin: 0 0 65px 0;
+    overflow: visible
+  }
+
+  .flex-caption {
+    font-size: 14px;
+  }
+
+  .flex-controls {
+    height: 0 !important;
+    position: relative;
+    top: 135px
+  }
+
+  @media screen and (max-width: 600px) {
+
+  .flexslider {
+    margin: 0 0 25px 0;
+    overflow: visible
+  }
+
+  .flex-caption {
+    font-size: 14px;
+  }
+
+  .flex-controls {
+    height: 0;
+    position: relative;
+    top: 135px
+  }
+
+  .flex-controls {
+    /*position: relative;
+    top: 0*/
+  }
+
+  .main-header {
+    padding: 0
+  }
+  h2.top {
+    font-size: 20px
+  }
+}
+
+  .main-header {
+    padding: 0
+  }
+  h2.top {
+    font-size: 20px
+  }
+}
diff --git a/app/styles/partials/ucsd/_ie-support.scss b/app/styles/partials/ucsd/_ie-support.scss
new file mode 100755
index 0000000..a90b64f
--- /dev/null
+++ b/app/styles/partials/ucsd/_ie-support.scss
@@ -0,0 +1,43 @@
+/* IE7 and IE8 specifics */
+
+
+
+
+/********************
+FLEXSLIDER
+************************/
+
+.flex-caption {
+  background:transparent;
+  filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#50000000,endColorstr=#50000000);
+  zoom: 1;
+}
+
+
+
+/* side nav ie 7 issues */
+#tdr_side_nav {
+  *display: none !important;
+  *visibility:hidden !important;
+  *width: 0px !important;
+}
+
+.nav-offcanvas {
+  *display: none !important;
+  *visibility:hidden !important;
+  *width: 0px !important;
+}
+
+#tdr_nav .caret {
+  display: none !important;
+  visibility:hidden !important;
+  width: 0px !important;
+}
+
+/* search bar icon fallback */
+
+#tdr_search_toggle {
+  *background: url("http://qa.ucsd.edu/common/cwp/4.0.0/styles/../img/search_ie_icon.png")  no-repeat 0px 6px !important;
+  *width: 22px !important;
+}
+/* Just because we're nice */
\ No newline at end of file
diff --git a/app/styles/partials/ucsd/base/_breadcrumbs.scss b/app/styles/partials/ucsd/base/_breadcrumbs.scss
new file mode 100755
index 0000000..7db7c98
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_breadcrumbs.scss
@@ -0,0 +1,26 @@
+#tdr_crumbs {
+	ol, ul {
+		list-style: none;
+		margin-bottom: 0;
+		padding: 1em 0 0;
+		margin-left: 0;
+	}
+
+	li {
+		color: #666;
+		display: inline;
+		font-size: 80%;
+		line-height: 1;
+		list-style: none;
+		margin-left: 0;
+		text-transform: capitalize;
+
+		a {
+			text-decoration: none;
+
+			&:hover {
+				text-decoration: underline;
+			}
+		}
+	}
+}
diff --git a/app/styles/partials/ucsd/base/_fonts.scss b/app/styles/partials/ucsd/base/_fonts.scss
new file mode 100755
index 0000000..fdb5f49
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_fonts.scss
@@ -0,0 +1,204 @@
+@charset "UTF-8";
+
+body {
+	background: #fff;
+	color: #333;
+	font: normal normal normal 14px/1.2 "Helvetica Neue", Helvetica, Arial,	sans-serif;
+}
+
+/* --------------------------------------------------------------------
+ * header
+ */
+h1,h2,h3,h4,h5,h6 {
+	color: #333;
+	font-weight: bold;
+	line-height: 1.1;
+	margin-top: 0;
+	margin-bottom: .25em;
+	font-weight: normal;
+}
+
+h1 {
+	color: #D56A03;
+	font-weight: normal;
+	letter-spacing: .5px;
+}
+
+h2.header {
+	background-color: #0B4A67;
+	color: #fff;
+	padding: .25em .5em;
+}
+
+h3.header {
+	border-bottom: 1px solid #333;
+}
+
+/* --------------------------------------------------------------------
+ * paragraph
+ */
+p {
+	margin-bottom: 1em;
+}
+
+em {
+	font-style: italic;
+}
+
+strong {
+	font-weight: bold;
+}
+
+sub {
+	vertical-align: sub;
+}
+
+sup {
+	vertical-align: super;
+}
+
+.subhead {
+	font-size: 120%;
+}
+
+/* --------------------------------------------------------------------
+ * quote
+ */
+blockquote {
+	border-left: .25em solid #ccc;
+	margin: 0 2em 1em 2em;
+	padding: .5em 1em;
+}
+
+/* --------------------------------------------------------------------
+ * horizontal ruler and line break
+ */
+hr {
+	background-color: #ccc;
+	border: 0 none;
+	color: #ccc;
+	height: 1px;
+}
+
+/* --------------------------------------------------------------------
+ * links
+ */
+a:link,a:visited,
+.widget_content a:link,.widget_content a:visited {
+	color: #016691;
+	text-decoration: none;
+	transition: color 0.3s ease-in-out 0s;
+	-moz-transition: color 0.3s ease-in-out 0s;
+	-webkit-transition: color 0.3s ease-in-out 0s;
+	-o-transition: color 0.3s ease-in-out 0s;
+}
+
+a:hover,a:active,
+.widget_content a:hover,.widget_content a:active {
+	color: #0B4A67;
+	text-decoration: underline;
+}
+
+/* external links */
+a[target="_blank"] {
+	background: url(../img/sprite_icon.png) no-repeat scroll right -50px transparent;
+	padding-right: 20px;
+}
+
+.nonewwin a[target="_blank"],a[target="_blank"].nonewwin {
+	background: transparent;
+	padding-right: 0;
+}
+
+/* skip links */
+.skip-link {
+	float: left;
+	height: 0;
+	text-indent: -999em;
+}
+
+/* --------------------------------------------------------------------
+ * list
+ */
+ul,dl {
+	margin-bottom: 1em;
+}
+
+ul ul {
+	margin-bottom: 0;
+}
+
+li,dd {
+
+}
+
+dt {
+	font-weight: bold;
+}
+
+ol,ol ol ol ol {
+	list-style: decimal;
+}
+
+ol ol {
+	list-style: lower-alpha;
+}
+
+ol ol ol {
+	list-style: lower-roman;
+}
+
+/* --------------------------------------------------------------------
+ * pre formatted text
+ */
+pre,code {
+	color: #060;
+    display: block;
+	font-family: Consolas, Monaco, monospace;
+	white-space: pre-line;
+}
+
+pre {
+	background-color: #eee;
+	border: 1px dashed #333;
+	margin-bottom: 1em;
+	padding: 1em;
+	word-wrap: break-word; /* ie */
+}
+
+/* --------------------------------------------------------------------
+ * Figures and figcaptions
+ */
+
+figcaption {
+	margin: .5em 0;
+}
+
+/* --------------------------------------------------------------------
+ * emergency
+ */
+#ucsd-emergency {
+	font-size: 175%;
+}
+
+/* --------------------------------------------------------------------
+ * breadcrumbs
+ */
+
+.breadcrumb {
+	background-color: white;
+	border-radius: 0px;
+}
+
+
+/* because legend doesn't inherit in IE */
+legend {
+	color: #000;
+}
+
+input,button,textarea,select,optgroup,option {
+	font-family: inherit;
+	font-size: inherit;
+	font-style: inherit;
+	font-weight: inherit;
+}
\ No newline at end of file
diff --git a/app/styles/partials/ucsd/base/_footer.scss b/app/styles/partials/ucsd/base/_footer.scss
new file mode 100755
index 0000000..1f37682
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_footer.scss
@@ -0,0 +1,57 @@
+/**********************************************************************
+ * footer style
+ */
+footer, #tdr_footer {
+	border-top: 1px solid #ccc;
+	color: #999;
+	padding-bottom: 1em;
+	line-height: 1.5;
+	background-color: #fff;
+}
+
+footer a, #tdr_footer a {
+	text-decoration: none;
+}
+
+footer a:hover, footer a:focus, #tdr_footer a:hover,#tdr_footer a:focus {
+	text-decoration: underline;
+}
+
+#tdr_footer_content {
+	font-size: 90%;
+	text-align: left;
+	padding: 1em 0;
+	background: 0;
+
+	@media only screen and (min-width: $tablet) {
+		background: transparent url(../img/sprite_base.png) right -74px no-repeat;
+
+		@media screen and (-webkit-min-device-pixel-ratio:2) {
+			background-image: url(../img/sprite_base2x.png);
+			background-size: 500px 120px;
+		}
+	}
+
+
+}
+
+/* footer links */
+#tdr_footer_links {
+	list-style: none;
+	margin: .5em 0 0 0;
+	padding: 0;
+}
+
+#tdr_footer_links li {
+	border-right: 1px solid #ccc;
+	display: inline;
+	margin-left: 0;
+	margin-right: .5em;
+	padding-right: .75em;
+}
+
+#tdr_footer_links #tdr_footer_feedback {
+	border-right: none;
+}
+
+/* retina display */
diff --git a/app/styles/partials/ucsd/base/_layout.scss b/app/styles/partials/ucsd/base/_layout.scss
new file mode 100755
index 0000000..60ba247
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_layout.scss
@@ -0,0 +1,485 @@
+/**********************************************************************
+ * CSS Layout and styles for main sections
+ *********************************************************************/
+
+/**********************************************************************
+ * body - defaults
+ */
+main, footer, #tdr_login,#tdr_title,#tdr_search,#tdr_crumbs,#tdr_content,#tdr_footer {
+  overflow: hidden;
+  width: 100%;
+}
+
+#tdr_nav {
+  width: 100%;
+}
+
+/* default layout */
+body #tdr_login_content,body #tdr_title_content,body #tdr_nav_content,body #tdr_search_content,body #tdr_crumbs_content,body #tdr_content_content,body #tdr_footer_content {
+  margin: 0 auto;
+  max-width: $desktop;
+  width: 98%;
+
+  @media screen and (min-width: $full) {
+    max-width: $full;
+  }
+}
+
+
+/* fluid layout */
+body.fluid #tdr_login_content,body.fluid #tdr_title_content,body.fluid #tdr_nav_content,body.fluid #tdr_search_content,body.fluid #tdr_crumbs_content,body.fluid #tdr_content_content,body.fluid #tdr_footer_content {
+  max-width: none;
+  width: 98%;
+}
+
+/* wide fluid layout */
+body.wide main, body.wide #tdr_login, body.wide #tdr_title, body.wide #tdr_search, body.wide #tdr_crumbs, body.wide #tdr_content {
+  overflow: visible;
+}
+
+/**********************************************************************
+ * column layout
+ */
+.col {
+  overflow: hidden;
+  position: relative;
+}
+
+#col_nav {
+  overflow: hidden;
+}
+
+/**********************************************************************
+ * 3 column layout - (25/55/20) with newer id and class names
+ */
+/* center column */
+#cols_3 #col_content {
+  float: left;
+  left: 25%;
+  width: 55%;
+}
+
+/* left column */
+#cols_3 #col_nav {
+  float: left;
+  left: -55%;
+  width: 23%;
+}
+
+/* right column */
+#cols_3 #col_supplemental {
+  float: right;
+  width: 18%;
+}
+
+/**********************************************************************
+ * 2 column layout (25/75)- with newer id and class names
+ */
+
+/* center column */
+#cols_2 #col_content {
+  float: left;
+  left: 25%;
+  width: 75%;
+}
+
+#cols_2 #col_nav {
+  float: left;
+  left: -75%;
+  width: 23%;
+}
+
+/**********************************************************************
+ * Equal column layout
+ */
+.cols_wrapper {
+  overflow: hidden;
+  width: 100%;
+}
+
+
+/**********************************************************************
+ * 2 equal column layout (50/50)- with newer id and class names
+ */
+
+.col_1_of_2 {
+  float: left;
+  left: 0;
+  width: 49%;
+}
+
+.col_2_of_2 {
+  float: right;
+  right: 0;
+  width: 49%;
+}
+
+/**********************************************************************
+ * 3 equal column layout (33/33/33)- with newer id and class names
+ */
+.col_1_of_3 {
+  float: left;
+  left: 0;
+  width: 32%;
+}
+
+.col_2_of_3 {
+  float: left;
+  left: 2%;
+  width: 32%;
+}
+
+.col_3_of_3 {
+  float: right;
+  right: 0;
+  width: 32%;
+}
+
+.col_1_of_2,.col_2_of_2,.col_1_of_3,.col_2_of_3,.col_3_of_3 {
+
+	@media only screen and (max-width: 480px) {
+		float: none;
+		left: 0;
+		width: 100%;
+	}
+}
+
+/**********************************************************************
+ * multi column layout - with older id and class names
+ */
+#tdr_2_col_content,#tdr_2_col_nav,#tdr_3_col_content,#tdr_3_col_supplement,#tdr_3_col_nav {
+  margin-bottom: 1em;
+  overflow: hidden;
+  position: relative;
+}
+
+/**********************************************************************
+ * left column max width image
+ */
+
+#tdr_2_col_nav img, #tdr_3_col_nav img {
+  max-width: 100%;
+}
+
+/**********************************************************************
+ * 3 column layout (25/55/20) - with older id and class names
+ */
+
+/* nav */
+#tdr_3_col_nav {
+  float: left;
+  width: 23%;
+}
+
+/* wrapper for content and supplement */
+#tdr_3_col_wrap {
+  float: right;
+  position: relative;
+  width: 75%;
+}
+
+/* content */
+#tdr_3_col_content {
+  float: left;
+  width: 75%;
+}
+
+/* supplement */
+#tdr_3_col_supplement {
+  float: right;
+  width: 23%;
+}
+
+/**********************************************************************
+ * 2 column layout - with older id and class names
+ */
+#tdr_2_col_content {
+  float: right;
+  width: 75%;
+}
+
+#tdr_2_col_nav {
+  float: left;
+  width: 23%;
+}
+
+/**********************************************************************
+ * responsive design
+ */
+
+/* --------------------------------------------------------------------
+ * 1px - *
+ */
+@media only screen {
+  body #tdr_login_content,body #tdr_title_content,body #tdr_nav_content,body #tdr_search_content,body #tdr_crumbs_content,body #tdr_content_content,body #tdr_footer_content,body.fluid #tdr_login_content,body.fluid #tdr_title_content,body.fluid #tdr_nav_content,body.fluid #tdr_search_content,body.fluid #tdr_crumbs_content,body.fluid #tdr_content_content,body.fluid #tdr_footer_content
+  {
+    width: 98%;
+  }
+}
+
+/* --------------------------------------------------------------------
+ * * - 768px
+ */
+@media only screen and (max-width: 768px) { /* layout - new 3 columns */
+
+  body #tdr_login_content,body #tdr_title_content,body #tdr_nav_content,body #tdr_search_content,body #tdr_crumbs_content,body #tdr_content_content,body #tdr_footer_content,body.fluid #tdr_login_content,body.fluid #tdr_title_content,body.fluid #tdr_nav_content,body.fluid #tdr_search_content,body.fluid #tdr_crumbs_content,body.fluid #tdr_content_content,body.fluid #tdr_footer_content
+  {
+    width: 94%;
+  }
+
+  /* center column */
+  #cols_3 #col_content {
+    left: 0;
+    width: 75%;
+  }
+
+  /* left column */
+  #cols_3 #col_nav {
+    clear: both;
+    float: none;
+    left: 0;
+    width: 100%;
+  }
+
+  /* right column */
+  #cols_3 #col_supplemental {
+    width: 23%;
+  }
+
+  /* layout - old 3 columns */
+  #tdr_3_col_wrap {
+    float: none;
+    width: 100%;
+  }
+  #tdr_3_col_nav {
+    clear: both;
+    float: none;
+    width: 100%;
+  }
+}
+
+/* --------------------------------------------------------------------
+ * * - 640px
+ */
+@media only screen and (max-width: 640px) { /* layout - 3 columns */
+  /* center column */
+  #cols_3 #col_content {
+    float: none;
+    left: 0;
+    width: 100%;
+  }
+
+  /* right column */
+  #cols_3 #col_supplemental {
+    float: none;
+    left: 0;
+    width: 100%;
+  }
+
+  /* layout - 2 columns */
+  /* center column */
+  #cols_2 #col_content {
+    float: none;
+    left: 0;
+    width: 100%;
+  }
+  #cols_2 #col_nav {
+    float: none;
+    left: 0;
+    width: 100%;
+  }
+
+  /* layout - old 3 columns */
+  #tdr_3_col_content,#tdr_3_col_supplement {
+    clear: both;
+    float: none;
+    width: 100%;
+  }
+
+  /* layout - old 2 columns */
+  #tdr_2_col_content,#tdr_2_col_nav {
+    clear: both;
+    float: none;
+    width: 100%;
+  }
+}
+
+
+
+/**********************************************************************
+ * CSS Styling for the login header
+ */
+#tdr_login {
+  background: #0B4A67;
+}
+
+#tdr_login_content {
+  color: #fff;
+  font-size: 85%;
+  padding: .5em 0;
+  text-align: right;
+}
+
+#tdr_login_content a {
+  color: #fff;
+  font-weight: bold;
+  text-transform: uppercase;
+}
+
+
+
+
+/*** ESSENTIAL STYLES ***/
+
+
+/**********************************************************************
+ * CSS Styling for the content
+ */
+
+main, #tdr_content {
+  background: #fff;
+  padding: 1em 0;
+}
+
+#tdr_content_content {
+  line-height: 1.4;
+}
+
+/* --------------------------------------------------------------------
+ * * - 768px
+ */
+@media only screen and (max-width: 768px) {
+  #tdr_content_content img {
+    max-width: 100% !important;
+    height: auto !important;
+  }
+  #main_menu_list li a { background-size:52px 52px }
+}
+
+/* --------------------------------------------------------------------
+ * * - 480px
+ */
+@media only screen and (max-width: 480px) {
+  #tdr_content_content {
+    line-height: 1.6;
+  }
+}
+/* --------------------------------------------------------------------
+ * * - 641px
+ */
+@media only screen and (min-width: 641px) {
+  /* telephone number links */
+  a.tel { pointer-events: none; cursor: default; color: #333; text-decoration: none; }
+}
+
+
+
+/* --------------------------------------------------------------------
+ * * - 768px
+ */
+@media only screen and (max-width: 768px) {
+  #cols_3 #col_nav #page_nav *,#tdr_3_col_nav #page_nav * {
+    background: #ECF5FE;
+    border: none;
+  }
+  #cols_3 #col_nav #page_nav,#cols_3 #col_nav #page_nav ul,#tdr_3_col_nav #page_nav,#tdr_3_col_nav #page_nav ul {
+    border: none;
+    margin: 0;
+  }
+  #cols_3 #col_nav #page_nav li,#tdr_3_col_nav #page_nav li {
+    color: #333;
+    list-style-type: disc;
+    margin-left: 2em;
+    padding-left: 0;
+  }
+  #cols_3 #col_nav #page_nav li a,#tdr_3_col_nav #page_nav li a,#cols_3 #col_nav #page_nav li a:hover,#tdr_3_col_nav #page_nav li a:hover {
+    color: #06c;
+    text-decoration: underline;
+    padding-left: 0;
+  }
+  #cols_3 #col_nav div.styled,#tdr_3_col_nav div.styled {
+    border: none;
+    padding: 0;
+  }
+  #cols_3 #col_nav div.styled,#tdr_3_col_nav div.styled {
+    background: none;
+  }
+  #cols_3 #site-logo,#tdr_3_col_nav #site-logo {
+    display: none;
+  }
+  #cols_3 #col_nav #page_nav *,#cols_3 #page_nav li.expanded,#cols_3 #page_nav li.collapsed,#cols_3 #page_nav li.active,#cols_3 #page_nav li.active ul,#cols_3 #page_nav li a:hover,#tdr_3_col_nav #page_nav *,#tdr_3_col_nav #page_nav li.expanded,#tdr_3_col_nav #page_nav li.collapsed,#tdr_3_col_nav #page_nav li.active,#tdr_3_col_nav #page_nav li.active ul,#tdr_3_col_nav #page_nav li a:hover
+  {
+    background-color: #fff;
+    background-image: none;
+  }
+}
+
+/* --------------------------------------------------------------------
+ * * - 640px
+ */
+@media only screen and (max-width: 640px) {
+  #cols_2 #col_nav #page_nav *,#tdr_2_col_nav #page_nav * {
+    background: #ECF5FE;
+    border: none;
+  }
+  #cols_2 #col_nav #page_nav,#cols_2 #col_nav #page_nav ul,#tdr_2_col_nav #page_nav,#tdr_2_col_nav #page_nav ul {
+    border: none;
+    margin: 0;
+  }
+  #cols_2 #col_nav #page_nav li,#tdr_2_col_nav #page_nav li {
+    color: #333;
+    list-style-type: disc;
+    margin-left: 2em;
+    padding-left: 0;
+  }
+  #cols_2 #col_nav #page_nav li a,#tdr_2_col_nav #page_nav li a,#cols_2 #col_nav #page_nav li a:hover,#tdr_2_col_nav #page_nav li a:hover {
+    color: #06c;
+    text-decoration: underline;
+    padding-left: 0;
+  }
+  #cols_2 #col_nav div.styled,#cols_2 #col_nav div.styled li,#cols_2 #col_nav div.styled li a,#tdr_2_col_nav div.styled,#tdr_2_col_nav div.styled li,#tdr_2_col_nav div.styled li a {
+    background: none;
+  }
+  #cols_2 #col_nav div.styled,#tdr_2_col_nav div.styled {
+    border: none;
+    padding: 0;
+  }
+  #cols_2 #site-logo,#tdr_2_col_nav #site-logo {
+    display: none;
+  }
+  #cols_2 #col_nav #page_nav *,#cols_2 #page_nav li.expanded,#cols_2 #page_nav li.collapsed,#cols_2 #page_nav li.active,#cols_2 #page_nav li.active ul,#cols_2 #page_nav li a:hover,#tdr_2_col_nav #page_nav *,#tdr_2_col_nav #page_nav li.expanded,#tdr_2_col_nav #page_nav li.collapsed,#tdr_2_col_nav #page_nav li.active,#tdr_2_col_nav #page_nav li.active ul,#tdr_2_col_nav #page_nav li a:hover
+  {
+    background-color: #fff;
+    background-image: none;
+  }
+}
+
+/**********************************************************************
+ * environment style
+ */
+#tdr_env {
+  background-color: #333;
+}
+
+#tdr_env,#tdr_env a {
+  color: #fff;
+}
+
+#tdr_env_detail a {
+  text-decoration: underline;
+}
+
+#tdr_env_detail {
+  padding: 1em;
+}
+
+#tdr_env_detail.hide {
+  display: none;
+}
+
+#tdr_env_link {
+  cursor: pointer;
+  font-size: 85%;
+  padding: .5em 0;
+  text-align: center;
+}
\ No newline at end of file
diff --git a/app/styles/partials/ucsd/base/_nav.scss b/app/styles/partials/ucsd/base/_nav.scss
new file mode 100755
index 0000000..4ac4e0e
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_nav.scss
@@ -0,0 +1,508 @@
+html {
+  &, body {
+    height: 100%;
+  }
+
+  &.csstransforms3d.csstransitions {
+    #tdr_slide_wrapper {
+      @include transition(all, $trans-time);
+      z-index: 9;
+    }
+
+    #tdr_side_nav {
+      opacity: 0;
+      width: $slider-offset;
+
+      @media screen and (max-width: $tablet) {
+        width: $slider-offset-mobile;
+      }
+
+      position: fixed;
+      top: 0;
+      background-color: #F7F7F7;
+      padding: 0;
+      height: 100%;
+      @include transition(opacity, $trans-time);
+      z-index: -1;
+      border-right: 1px solid #DADADA;
+    }
+
+    body.active {
+      #tdr_slide_wrapper {
+        overflow: hidden;
+        -webkit-transform: translate3d($slider-offset, 0, 0);
+        -moz-transform: translate3d($slider-offset, 0, 0);
+        -ms-transform: translate3d($slider-offset, 0, 0);
+        -o-transform: translate3d($slider-offset, 0, 0);
+
+        @media screen and (max-width: $tablet) {
+          -webkit-transform: translate3d($slider-offset-mobile, 0, 0);
+          -moz-transform: translate3d($slider-offset-mobile, 0, 0);
+          -ms-transform: translate3d($slider-offset-mobile, 0, 0);
+          -o-transform: translate3d($slider-offset-mobile, 0, 0);
+        }
+
+        @include transition(all, $trans-time);
+      }
+
+      #tdr_side_nav {
+        z-index: 2;
+        opacity: 1;
+        @include transition(opacity, $trans-time);
+        @include transition-delay(.15s);
+      }
+    }
+  }
+
+  &.no-csstransforms3d.no-csstransitions {
+    body {
+      #tdr_slide_wrapper {
+        left: 0;
+        z-index: 9;
+      }
+
+      #tdr_side_nav {
+        opacity: 0;
+        width: $slider-offset;
+        position: fixed;
+        top: 0;
+        background-color: #F7F7F7;
+        padding: 0;
+        height: 100%;
+        z-index: -1;
+        border-right: 1px solid #DADADA;
+      }
+    }
+
+    body.active {
+      #tdr_slide_wrapper {
+        position: relative;
+        overflow: hidden;
+        background-color: #000;
+        left: $slider-offset
+      }
+
+      #tdr_side_nav {
+        z-index: 2;
+        opacity: 1;
+        display: block;
+      }
+    }
+  }
+}
+
+body {
+  &.collapse-nav {
+    @media screen and (min-width: $desktop-small) {
+      .navbar-toggle {
+        display: block;
+        top: 23px;
+      }
+
+      #tdr_nav {
+        display: none;
+      }
+
+      #tdr_side_nav {
+        display: block;
+      }
+    }
+  }
+}
+
+#tdr_wrapper {
+  overflow: hidden;
+}
+
+.navbar {
+  z-index: 100;
+
+  .active {
+    background-color: #FFFFFF;
+  }
+}
+
+#tdr_nav_list,.tdr_nav_list {
+  margin: 0;
+}
+
+#tdr_nav {
+  margin: 0 auto;
+  padding: 0;
+  border-radius: 0;
+
+  @media screen and (max-width: $desktop-small) {
+    display: none;
+  }
+
+  @media screen and (min-width: $desktop-small) {
+    display: block;
+    margin-bottom: 0;
+    background-color: #F2F5F7;
+    border: 0;
+    min-height: 34px;
+    border-bottom: 1px solid #C8CFD3;
+  }
+
+  #tdr_nav_content {
+    margin: 0 auto;
+
+    @media screen and (min-width: $desktop) {
+      max-width: $desktop;
+    }
+
+    @media screen and (min-width: $full) {
+      max-width: $full;
+    }
+  }
+
+  .caret {
+    margin-left: 7px;
+    display: inline-block !important;
+    border-top: 4px solid !important;
+    border-right: 4px solid transparent !important;
+    border-left: 4px solid transparent !important;
+    padding: 0 !important;
+  }
+
+
+  .nav > li > a:hover, .nav > li > a:focus {
+    background-color: #fff;
+
+    @media screen and (min-width: $desktop-small) {
+      border-bottom: #d9d9d9 solid 2px;
+    }
+  }
+
+  .nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
+    background-color: #fff;
+    border-color: #d9d9d9;
+  }
+
+  #tdr_nav_list, .tdr_nav_list, #tdr_nav_list *, .tdr_nav_list *, .sf-menu,.sf-menu * {
+    padding: 0;
+    list-style: none;
+  }
+
+  #tdr_nav_list, .tdr_nav_list {
+    width: 95%;
+
+    @media only screen and (max-width: $desktop-small) {
+      li {
+        float: none;
+        *height: 33px; /* IE7 only hack */
+      }
+
+      li li a {
+        *height: 16px;
+        /* IE7 only hack */
+      }
+    }
+
+    @media only screen and (min-width: $desktop-small) {
+      float: left;
+
+      > li:first-child {
+        border-left: solid 1px #C8CFD3;
+      }
+    }
+  }
+
+  #tdr_nav_list ul, .tdr_nav_list ul {
+    display: none;
+
+    @media only screen and (min-width: $desktop-small) {
+      position: absolute;
+    }
+  }
+
+  #tdr_nav_list li:hover, .tdr_nav_list li:hover, .sf-menu li:hover {
+    visibility: inherit;
+  }
+
+  #tdr_nav_list li, .tdr_nav_list li, .sf-menu li {
+    @media only screen and (min-width: $desktop-small) {
+      float: left;
+    }
+  }
+
+  #tdr_nav_list a, .tdr_nav_list a, #tdr_nav_list span, .tdr_nav_list span, .sf-menu a,.sf-menu span {
+    display: block;
+    white-space: nowrap;
+  }
+
+  #tdr_nav_list li:hover ul, .tdr_nav_list li:hover ul, #tdr_nav_list li.sfHover ul, .tdr_nav_list li.sfHover ul, .sf-menu li:hover ul,.sf-menu li.sfHover ul {
+    z-index: 999;
+  }
+
+  #tdr_nav_list li li, .tdr_nav_list li li, .sf-menu li li {
+    float: none;
+    _margin-bottom: -17px;
+  }
+
+  #tdr_nav_list span, .tdr_nav_list span, .sf-menu span {
+    cursor: default;
+  }
+
+  #tdr_nav_list a, .tdr_nav_list a, #tdr_nav_list span, .tdr_nav_list span, .sf-menu a,.sf-menu span {
+    background-color: #FDFDFD;
+    border-bottom: solid 3px rgba(255, 255, 255, 0.4);
+    border-right: solid 1px #C8CFD3;
+    border-left: solid 1px rgba(255, 255, 255, 0.6);
+    color: rgb(0, 75, 110);
+    padding: 9px 15px 8px;
+    text-decoration: none;
+  }
+
+  #tdr_nav_list > li.sfHover > a, .tdr_nav_list > li.sfHover > a {
+    border-bottom: solid 3px #9FB3BF;
+  }
+
+  #tdr_nav_list li.active>a, .tdr_nav_list li.active>a, #tdr_nav_list li.active>span, .tdr_nav_list li.active>span, .sf-menu li.active>a,.sf-menu li.active>span {
+    background-color: #FDFDFD;
+    border-bottom: #D56A03 solid 3px;
+  }
+
+  #tdr_nav_list li:hover,.tdr_nav_list li:hover,#tdr_nav_list li.sfHover,.tdr_nav_list li.sfHover,#tdr_nav_list a:focus,.tdr_nav_list a:focus,#tdr_nav_list a:hover,.tdr_nav_list a:hover,#tdr_nav_list a:active,.tdr_nav_list a:active,#tdr_nav_list span:focus,.tdr_nav_list span:focus,#tdr_nav_list span:hover,.tdr_nav_list span:hover,#tdr_nav_list span:active,.tdr_nav_list span:active,#tdr_nav_list li.active a:focus,.tdr_nav_list li.active a:focus,#tdr_nav_list li.active a:hover,.tdr_nav_list li.active a:hover,#tdr_nav_list li.active a:active,.tdr_nav_list li.active a:active,#tdr_nav_list li.active span:focus,.tdr_nav_list li.active span:focus,#tdr_nav_list li.active span:hover,.tdr_nav_list li.active span:hover,#tdr_nav_list li.active span:active,.tdr_nav_list li.active span:active,.sf-menu li:hover,.sf-menu li.sfHover,.sf-menu a:focus,.sf-menu a:hover,.sf-menu a:active,.sf-menu span:focus,.sf-menu span:hover,.sf-menu span:active,.sf-menu li.active a:focus,.sf-menu li.active a:hover,.sf-menu li.active a:active,.sf-menu li.active span:focus,.sf-menu li.active span:hover,.sf-menu li.active span:active
+  {
+    background: #fff;
+  }
+
+  #tdr_nav_list li ul,.tdr_nav_list li ul,.sf-menu li ul {
+    border-left: solid 1px #C8CFD3;
+    border-top: solid 1px #C8CFD3;
+    margin-left: 0;
+    webkit-box-shadow: 0px 3px 5px 0px rgba(50, 50, 50, 0.20);
+    -moz-box-shadow:    0px 3px 5px 0px rgba(50, 50, 50, 0.20);
+    box-shadow:         0px 3px 5px 0px rgba(50, 50, 50, 0.20);
+  }
+
+  #tdr_nav_list li li a,.tdr_nav_list li li a,#tdr_nav_list li.active li a,.tdr_nav_list li.active li a,.sf-menu li li a,.sf-menu li.active li a {
+    background: #FFF;
+    border-bottom: solid 1px #C8CFD3;
+
+    &:hover {
+      background-color: #fbfbfb;
+    }
+  }
+
+  .navbar-nav > li {
+    &:last-child a {
+      border-right: 1px solid #ECECEC;
+    }
+
+    & > a {
+      @media only screen and (min-width: $desktop-small) {
+        border-left: 1px solid #ECECEC;
+        padding: 9px 15px;
+      }
+    }
+  }
+
+}
+
+.navbar-toggle {
+  float: left;
+  padding: 10px;
+  margin: 0;
+  border-radius: 1px;
+  background-color: #287897;
+  border: 1px solid #266E8A;
+  top: 49px;
+
+  &:active {
+    background-color: #5a9297;
+  }
+
+  @media only screen and (min-width: $mobile-small) {
+    top: 57px;
+  }
+
+  .icon-bar {
+    background-color: #fff;
+
+    @media only screen and (min-width: $mobile-small) {
+      width: 30px;
+    }
+  }
+
+  .icon-bar + .icon-bar {
+    @media only screen and (min-width: $mobile-small) {
+      margin-top: 6px;
+    }
+  }
+
+  html.csstransforms3d.csstransitions & {
+    .icon-bar {
+      &:nth-child(2), &:nth-child(3), &:nth-child(4) {
+        @include transition(all, $trans-time);
+        @include transition-delay(.25s);
+      }
+    }
+  }
+
+  html.csstransforms3d.csstransitions .active & {
+    .icon-bar {
+      background-color: #fff;
+
+      &:nth-child(2) {
+        @include menu-transition(8px, 45deg);
+      }
+
+      @media only screen and (device-aspect-ratio: 40/71) and (orientation: portrait),screen and (device-aspect-ratio: 320/533),screen and (device-aspect-ratio: 2/3) {
+        &:nth-child(2) {
+          @include menu-transition(4px, 45deg);
+        }
+      }
+
+      &:nth-child(3) {
+        opacity: 0;
+      }
+
+      &:nth-child(4) {
+        @include menu-transition(-8px, -45deg);
+      }
+
+      &:nth-child(2), &:nth-child(4) {
+        @include transition(all, $trans-time);
+        @include transition-delay(.25s);
+      }
+    }
+  }
+}
+
+#tdr_side_nav {
+  margin: 0;
+  padding: 0;
+  border: none;
+  overflow-y: scroll;
+
+  ul {
+    list-style: none;
+
+  }
+
+  #tdr_nav_list,.tdr_nav_list {
+    padding: 0;
+
+    > li {
+      border-bottom: 1px solid #ccc;
+    }
+
+    li {
+      margin: 0;
+      padding-left: 10px;
+
+      a {
+        margin: 0px;
+        display: block;
+        width: 100%;
+        height: 100%;
+        padding: 10px;
+      }
+
+      &.sfHover {
+        background-color: #fff;
+      }
+
+      &:hover {
+        background-color: #fff;
+      }
+    }
+
+    ul {
+      margin-top: 5px;
+      padding: 0;
+    }
+  }
+}
+
+/**********************************************************************
+ * CSS Styling for the page nav aside
+ */
+
+div.styled {
+  background: #F2F5F7;
+  border: 1px solid #C8CFD3;
+  margin-bottom: 1em;
+  padding: 1em;
+
+  h2, h3, h4, h5, h6 {
+    color: #738AA3;
+    text-shadow: 0 1px 1px #FFFFFF;
+  }
+
+  h2 {
+    font-size: 140%;
+  }
+
+  h3 {
+    font-size: 115%;
+  }
+}
+
+/*---------------------------------------------------------------------
+ * page navigation
+ */
+
+#page_nav {
+  margin: 0 -1em -1em;
+  padding: 0;
+
+  li {
+    border-top: 1px solid #DBD7D7;
+    color: #06c;
+    list-style: none;
+    margin: 0;
+    padding: 0;
+
+    &.active, a {
+      color: #016691;
+      display: block;
+      padding: 1em 0 1em 1em;
+    }
+
+    &.active {
+      background-color: #fff;
+      color: #D56A03;
+    }
+
+    &.collapsed ul {
+      display: none;
+    }
+
+    a:hover {
+      background-color: #fff;
+      text-decoration: none;
+    }
+
+    li {
+      font-size: 85%;
+
+      a:hover {
+        text-decoration: underline;
+      }
+    }
+  }
+
+  ul {
+    margin: .4em 0 -.4em 1em;
+    padding: 0;
+  }
+}
+
+#page_nav_title {
+  margin-bottom: 0.7em;
+}
+
+/* ie hack for height */
+
+* html #page_nav li {
+  height: 20px;
+}
+
+* html #page_nav li li {
+  height: 18px;
+}
+
+/* end hack */
diff --git a/app/styles/partials/ucsd/base/_print.scss b/app/styles/partials/ucsd/base/_print.scss
new file mode 100755
index 0000000..c9c2918
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_print.scss
@@ -0,0 +1,76 @@
+@media print {
+
+	/**********************************************************************
+	 * Print Styles
+ 	 */
+	/* reset background and float elements */
+	html, footer, footer *, #tdr_title *,#tdr_footer, #tdr_footer * {
+		background-color: transparent !important;
+		background-image: none !important;
+		overflow: visible !important;
+		color: lime;
+	}
+
+	#col_content,#col_supplemental,
+	#col_nav,.col,#tdr_3_col_wrap,
+	#tdr_3_col_content,#tdr_3_col_supplement,#tdr_3_col_nav
+		{
+		left: 0 !important;
+		margin: 0 !important;
+		padding: 0 !important;
+		width: 100% !important;
+	}
+
+	/* hide env, login, nav, search, crumbs and page nav section */
+	#tdr_env,#ucsd-emergency,#tdr_login,#search,#tdr_nav,#tdr_search,#page_nav_div {
+		display: none !important;
+	}
+
+	/* hide title bottom border */
+	#tdr_title {
+		background: none;
+		border-bottom: 0;
+	}
+
+	/* reset font color */
+	#tdr_title_page_title a,h1,h2,h3,h4,h5,h6,p {
+		color: #000;
+	}
+
+	#tdr_content_content {
+	   width: 99.99% !important;
+	}
+
+	/* reset h2 header */
+	h2.header {
+		background: none;
+		border-bottom: 1px solid #369;
+		color: #000;
+		padding: 0;
+	}
+
+	/* reset horizontal ruler */
+	hr {
+		background-color: #ccc !important;
+	}
+
+	/* reset external links */
+	a[target="_blank"] {
+		padding-right: 0;
+	}
+
+	/* reset msg header */
+	.msg h4 {
+		padding-left: 0;
+	}
+
+	/* reset styled div */
+	div.styled {
+		background: none;
+	}
+
+	/* hide footer links */
+	#tdr_footer_links {
+		display: none;
+	}
+}
diff --git a/app/styles/partials/ucsd/base/_reference.scss b/app/styles/partials/ucsd/base/_reference.scss
new file mode 100755
index 0000000..95198fa
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_reference.scss
@@ -0,0 +1,50 @@
+/*
+ * Consolidating image references
+ * to a singular location
+ *
+ * minimizes number of calls sent to reference images
+ */
+
+// sprite_base & sprite_base2x
+#tdr_title_ucsd_title, #tdr_title_menu_link,
+#tdr_footer_content {
+    background: url(../img/sprite_base.png) no-repeat transparent;
+
+    @media screen and (-webkit-min-device-pixel-ratio:2) {
+        background-image: url(../img/sprite_base2x.png);
+        background-size: 500px 120px;
+    }
+}
+
+// sprite_icon
+a[target="_blank"],
+.msg h4, .icon {
+    background: url(../img/sprite_icon.png) no-repeat transparent;
+}
+
+// sprite_icon_widget
+.drawer-toggle a, .drawer h2 a,
+.sf_all_collapsed, .sf_one_collapsed,
+.sf_all_expanded, .sf_one_expanded,
+.flex-pauseplay a{
+    background: url(../img/sprite_icon_widget.png) no-repeat transparent;
+}
+
+// sprite_social
+.social-list li {
+    background: url(../img/sprite_social.png) no-repeat transparent;
+}
+
+// asterisk
+.field .required, .field_top .required,
+.icon.asterisk {
+    background: url(../img/asterisk.png) no-repeat transparent;
+}
+
+// icon_loading & icon_loading_inline
+div.loading {
+  background: url(../img/icon_loading.gif) no-repeat transparent;
+}
+span.loading {
+  background: url(../img/icon_loading_inline.gif) no-repeat transparent;
+}
diff --git a/app/styles/partials/ucsd/base/_search.scss b/app/styles/partials/ucsd/base/_search.scss
new file mode 100755
index 0000000..04c77fc
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_search.scss
@@ -0,0 +1,190 @@
+#tdr_search_toggle { //toggle button
+	border-radius : 0;
+	padding: 8px;
+	background: none;
+    border: 1px solid transparent;
+    border-width: 0 1px 0 1px;
+	outline: 0;
+	max-height: $nav-height;
+}
+
+.btn-s {
+  border: solid #ccc !important;
+  border-width: 0 1px !important;
+}
+
+.tdr_search { //common styling to both search forms
+	.dropdown {
+		@media screen and (min-width: 768px) {
+			margin-right: 10px;
+		}
+	}
+
+	.dropdown-menu {
+		@media screen and (max-width: 768px) {
+		}
+
+		@media screen and (min-width: 768px) {
+			width: 150px;
+		}
+	}
+
+	.search-scope {
+        height: 27px;
+		max-width: 99px;
+		font-size: 11px;
+		padding: 4px 2px 4px 0;
+		float: left;
+        height: 27px;
+	}
+
+	.input-group {
+		float: right;
+	}
+
+	form {
+		margin: 0;
+	}
+
+	.form-control {
+		float: right;
+		border-radius: 0;
+		height: 26px;
+
+		.lt-ie8 & {
+			height: 10px;
+		}
+	}
+}
+
+#tdr_nav { //top nav search
+	.tdr_search {
+		float: right;
+		position: relative;
+		max-width: 380px;
+
+		#tdr_search_content {
+			z-index: 2;
+			position: absolute;
+			right: 0;
+			top: $nav-height;
+			float: left;
+			width: 385px;
+			padding: 10px;
+			background-color: $search-bg;
+            border: solid #ccc;
+			border-width: 0 1px 2px 1px;
+            border-radius: 3px 0 3px 3px;
+			box-shadow: 0;
+			background-clip: padding-box;
+            display: none;
+		}
+
+		&.show {
+			#tdr_search_toggle {
+				background-color: $search-bg;
+				color: #fff;
+                display: block;
+			}
+		}
+	}
+
+	.no-csstransitions & {
+		.tdr_search {
+
+			#tdr_search_content {
+				display: none;
+			}
+
+			&.show {
+				#tdr_search_content {
+					display: block;
+				}
+			}
+		}
+	}
+
+	.lt-ie8.no-csstransitions & {
+		.tdr_search.show {
+			#tdr_search_content {
+				top: 33px;
+			}
+		}
+	}
+
+	.csstransitions & {
+		.tdr_search {
+			#tdr_search_toggle {
+				@include transition(all, .25s);
+			}
+
+			#tdr_search_content {
+				display: none;
+				opacity: 0;
+				@include transition(background-color, .25s);
+			}
+
+			&.show {
+				#tdr_search_toggle {
+					background-color: $search-bg;
+					color: #004b6e;
+					@include transition(all, .25s);
+				}
+
+				#tdr_search_content {
+					opacity: 1;
+                    display: block;
+					@include transition(background-color, .25s);
+				}
+			}
+		}
+	}
+
+	.input-group {
+		width: 250px;
+	}
+}
+
+#tdr_search_content {
+
+}
+
+#tdr_side_nav { //slide out side search bar
+	.tdr_search {
+		padding: 7px;
+		background-color: #fff;
+		border-bottom: 2px solid #BDBDBD;
+		height: 43px;
+
+		.btn {
+			font-size: 12px;
+			padding: 4px 5px;
+
+			.caret {
+				margin-left: 4px;
+			}
+		}
+	.form-control {
+		padding: 6px;
+
+	}
+
+
+
+	.input-group {
+		width: 54%;
+
+		@media screen and (min-width: $mobile-small) {
+			width: 60%;
+		}
+
+		@media screen and (min-width: $mobile) {
+			width: 70%;
+		}
+
+		@media screen and (min-width: $tablet) {
+			width: 55%;
+		}
+	}
+}
+}
\ No newline at end of file
diff --git a/app/styles/partials/ucsd/base/_styling.scss b/app/styles/partials/ucsd/base/_styling.scss
new file mode 100755
index 0000000..5655514
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_styling.scss
@@ -0,0 +1,714 @@
+/**********************************************************************
+ * Basic CSS styling
+ */
+
+.clearfix{
+	overflow: auto;
+}
+
+/* --------------------------------------------------------------------
+ * table
+ */
+table.styled {
+	margin-bottom: 1em;
+}
+
+table.styled th,table.styled td {
+	padding: .25em 1em;
+}
+
+table.styled th {
+	background-color: #eee;
+	font-weight: bold;
+}
+
+table.styled th,table.styled td {
+	border: 1px solid #ccc;
+}
+
+table.styled tbody tr.even {
+	background-color: #eff;
+}
+
+/* --------------------------------------------------------------------
+ * _images
+ */
+img.left {
+	float: left;
+	padding: 0 1em 1em 0;
+	width: auto;
+}
+
+img.right {
+	float: right;
+	padding: 0 0 1em 1em;
+	width: auto;
+}
+
+/* --------------------------------------------------------------------
+ * * - 360px
+ */
+@media only screen and (max-width: 360px) {
+	img.left,
+	img.right {
+		float: none;
+		padding: 1em 0;
+	}
+}/**********************************************************************
+ * Messages
+ */
+
+.msg {
+	-moz-border-radius: .5em;
+	-webkit-border-radius: .5em;
+	border-radius: .5em;
+	padding: .5em 1em;
+	margin-bottom: 1em;
+}
+
+.msg h4 {
+	padding-left: 20px;
+	text-shadow: none;
+}
+
+.msg.info {
+	border: 1px solid #aaa;
+	background-color: #eee;
+}
+
+.msg.info h4 {
+	background-position: 0 -150px;
+}
+
+.msg.alert {
+	border: 1px solid #fa0;
+	background-color: #ffe;
+}
+
+.msg.alert h4 {
+	background-position: 0 -249px;
+	color: #D56A03;
+}
+
+.msg.confirm {
+	border: 1px solid #393;
+	background-color: #efe;
+}
+
+.msg.confirm h4 {
+	color: #393;
+	background-position: 0 -200px;
+}
+
+.msg.error {
+	border: 1px solid #c00;
+	background-color: #fee;
+}
+
+.msg.error h4 {
+	color: #c00;
+	background-position: 0 -299px;
+}/**********************************************************************
+ * Button
+ */
+.button {
+	border: none;
+	color: #333;
+	display: inline-block;
+	outline: none;
+	cursor: pointer;
+	text-align: center;
+	text-decoration: none;
+	text-shadow: rgba(255, 255, 255, .5) 0 1px 1px;
+	margin-right: .5em;
+	padding: .25em 1em;
+	-moz-border-radius: .25em;
+	-webkit-border-radius: .25em;
+	border-radius: .25em;
+	-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .5);
+	-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .5);
+	box-shadow: 0 1px 2px rgba(0, 0, 0, .5);
+}
+
+.button:hover {
+	text-decoration: none;
+}
+
+.button:active {
+	position: relative;
+	top: 1px;
+}
+
+.button:disabled {
+	color: #999;
+	cursor: default;
+}
+
+/*---------------------------------------------------------------------
+ * primary button
+ */
+.primary {
+	background: #fc0;
+	background: -moz-linear-gradient(top, #fc0, #fa0);
+	background: -webkit-gradient(linear, left top, left bottom, from(#fc0), to(#fa0) );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffcc00',endColorstr='#ffaa00');
+}
+
+.primary:hover {
+	background: #f90;
+}
+
+.primary:disabled {
+	background: #fd0;
+	background: -moz-linear-gradient(top, #fd0, #fc0);
+	background: -webkit-gradient(linear, left top, left bottom, from(#fd0), to(#fc0) );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd00',endColorstr='#ffcc00');
+}
+
+/*---------------------------------------------------------------------
+ * secondary button
+ */
+.secondary {
+	background: #eee;
+	background: -moz-linear-gradient(top, #eee, #ddd);
+	background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd) );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee',endColorstr='#dddddd');
+}
+
+.secondary:hover {
+	background: #ccc;
+}
+
+.secondary:disabled {
+	background: #fff;
+	background: -moz-linear-gradient(top, #fff, #eee);
+	background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee) );
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#eeeeee');
+}
+
+/*---------------------------------------------------------------------
+ * link button
+ */
+a.button {
+	color: #333;
+}
+
+/* --------------------------------------------------------------------
+ * * - 480px
+ */
+@media only screen and (max-width: 480px) {
+	.button {
+		padding: .5em 1em;
+	}
+}/**********************************************************************
+ * Icon
+ */
+.icon {
+	padding-left: 1.5em;
+}
+
+/* ie 7 only hack */
+*:first-child+html .icon {
+	display: inline-block;
+}
+
+.icon.newwin {
+	background-position: 0 -50px;
+}
+
+.icon.info {
+	background-position: 0 -150px;
+}
+
+.icon.confirm {
+	background-position: 0 -200px;
+}
+
+.icon.alert {
+	background-position: 0 -250px;
+}
+
+.icon.error {
+	background-position: 0 -300px;
+}
+
+.icon.invalid {
+	background-position: 0 -300px;
+}
+
+.icon.cal {
+	background-position: 0 -350px;
+}
+
+.icon.check {
+	background-position: 0 -400px;
+}
+
+.icon.check_disabled {
+	background-position: 0 -450px;
+}
+
+.icon.close {
+	background-position: 0 -500px;
+}
+
+.icon.close_disabled {
+	background-position: 0 -550px;
+}
+
+.icon.disable {
+	background-position: 0 -600px;
+}
+
+.icon.disable_disabled {
+	background-position: 0 -650px;
+}
+
+.icon.doc {
+	background-position: 0 -700px;
+}
+
+.icon.doc_disabled {
+	background-position: 0 -750px;
+}
+
+.icon.gear {
+	background-position: 0 -900px;
+}
+
+.icon.mail {
+	background-position: 0 -950px;
+}
+
+.icon.minus {
+	background-position: 0 -1000px;
+}
+
+.icon.minus_disabled {
+	background-position: 0 -1050px;
+}
+
+.icon.pencil {
+	background-position: 0 -1100px;
+}
+
+.icon.pencil_disabled {
+	background-position: 0 -1150px;
+}
+
+.icon.plus {
+	background-position: 0 -1200px;
+}
+
+.icon.plus_disabled {
+	background-position: 0 -1250px;
+}
+
+.icon.print {
+	background-position: 0 -1300px;
+}
+
+.icon.search {
+	background-position: 0 -1400px;
+}
+
+.icon.search_disabled {
+	background-position: 0 -1450px;
+}
+
+.icon.submit {
+	background-position: 0 -1500px;
+}
+
+.icon.submit_disabled {
+	background-position: 0 -1550px;
+}
+
+.icon.trash {
+	background-position: 0 -1600px;
+}
+
+.icon.trash_disabled {
+	background-position: 0 -1650px;
+}
+
+.icon.undo {
+	background-position: 0 -1700px;
+}
+
+.icon.arrow_right {
+	background-position: 0 -1750px;
+}
+
+.icon.arrow_down {
+	background-position: 0 -1800px;
+}
+
+.icon.play {
+	background-position: 0 -1850px;
+}
+
+.icon.stop {
+	background-position: 0 -1900px;
+}
+
+/* Social Media Icons */
+
+
+.social-list {
+	margin-left: 0;
+	padding-left: 0;
+	list-style: none;
+}
+
+.social-list li {
+	height: 33px;
+	margin: 0 0 10px 0;
+	padding: 0 40px;
+  	cursor: pointer;
+}
+
+.social-list li.facebook {
+	background-position: 0 0;
+}
+
+.social-list li.twitter {
+	background-position: 0 -39px;
+}
+
+.social-list li.youtube {
+	background-position: 0 -80px;
+}
+
+.social-list li.linkedin {
+	background-position: 0 -121px;
+}
+
+.social-list li.googleplus {
+	background-position: 0 -160px;
+}
+
+.social-list li.instagram {
+	background-position: 0 -200px;
+}
+
+.social-list li.tumblr {
+	background-position: 0 -240px;
+}
+
+.social-list li.flickr {
+	background-position: 0 -280px;
+}
+
+.social-list li.vine {
+	background-position: 0 -320px;
+}
+
+.social-list li.pinterest {
+	background-position: 0 -360px;
+}
+
+.social-list li.blogger {
+	background-position: 0 -400px;
+}
+
+.social-list li.rss {
+	background-position: 0 -440px;
+}
+
+.social-list li.vimeo {
+  background-position: 0 -480px;
+}
+
+.social-list li.wordpress {
+  background-position: 0 -520px;
+}
+
+/**********************************************************************
+ * Form Elements
+ */
+input[type="text"],select,textarea {
+	border: 1px solid #aaa;
+}
+
+.form-control {
+	border-radius: 0;
+  padding: .5em;  /* to keep in line with other input paddings */
+}
+
+input[type="text"],textarea {
+	padding: .5em;
+}
+
+select.form-control {
+  padding: .5em .2em;
+}
+
+fieldset {
+	border: 1px solid #aaa;
+	padding: .5em;
+	border: 0;
+}
+
+legend {
+	color: #333;
+	margin-left: 0;
+	padding: 0;
+}
+
+input[type=radio],input[type=checkbox] {
+	margin-right: .25em;
+}
+
+
+/*---------------------------------------------------------------------
+ * input group addon
+ */
+
+/* white background to make it look less like an 'actionable' button */
+.input-group-addon {
+  background: #fff;
+}
+
+
+/* --------------------------------------------------------------------
+ * form fields and font style
+ */
+div.field,div.field_top,div.field_left,div.label {
+	clear: both;
+	padding-bottom: 1em;
+}
+div.label {
+  color:#000;
+}
+.field_top div.label {
+	padding-bottom: .25em;
+}
+
+.label,.input,.output {
+	display: block;
+}
+
+.label label {
+	font-weight: bold;
+}
+
+/* --------------------------------------------------------------------
+ * form
+ */
+form {
+	margin-bottom: 1em;
+}
+
+/* output */
+form .output {
+	font-weight: normal;
+}
+
+/* help text */
+form .help {
+	color: #999;
+	display: block;
+	font-style: italic;
+	font-size: 85%;
+}
+
+/* required field */
+form .help.icon.asterisk {
+	padding-bottom: 1em;
+}
+
+/* multi field */
+.multi {
+	margin-right: .5em;
+}
+
+.input.multi {
+	margin-right: 0;
+	padding-bottom: .5em;
+}
+
+/* --------------------------------------------------------------------
+ * form invalid field
+ */
+form input.invalid,form textarea.invalid {
+	border: 1px solid #c00;
+}
+
+form .invalid,form .inline_invalid {
+	color: #c00;
+}
+
+form .inline_invalid {
+	display: block;
+}
+
+/* hide from ie */
+html>body form .icon.invalid {
+	margin-left: .5em;
+}
+
+/* --------------------------------------------------------------------
+ * form layout - default is left aligned
+ */
+.field .label {
+	width: 10em;
+	float: left;
+	text-align: right;
+	padding-right: 1em;
+}
+
+.field .input,.field .output,.field select.input,.field textarea.input {
+	margin-left: 11em;
+}
+
+.field .required {
+	background-position: right 0;
+}
+
+.field_top .required,
+.field_left .required {
+    background-position: left 0;
+    padding-left: 1em;
+}
+
+/* top-aligned */
+.field_top .label {
+	padding-left: 1em;
+}
+
+.field_top .input,.field_top .output,.field_top select.input,.field_top textarea.input
+{
+	margin-left: 1em;
+}
+
+/* left-aligned */
+.field_left .label {
+	width: 10em;
+	float: left;
+	text-align: left;
+	padding-left: 1em;
+}
+
+.field_left .input,.field_left .output,.field_left select.input,.field_left textarea.input
+{
+	margin-left: 11.5em;
+}
+
+/* --------------------------------------------------------------------
+ * * - 640px
+ */
+@media only screen and (max-width: 640px) {
+	.field .label,
+	.field_left .label {
+		float: none;
+		text-align: left;
+		padding-left: 1em;
+		padding-bottom: .25em;
+	}
+	.field .input,.field .output,.field select.input,.field textarea.input,
+	.field_left .input,.field_left .output,.field_left select.input,.field_left textarea.input {
+		margin-left: 1em;
+	}
+	.field .required,
+	.field_left .required {
+		background-position: left 0;
+		padding-left: 1em;
+	}
+}
+
+/* --------------------------------------------------------------------
+ * * - 480px
+ */
+@media only screen and (max-width: 480px) {
+	input[type="text"],textarea {
+		padding: .5em .25em;
+	}
+}/**********************************************************************
+ * loading styling
+ */
+
+div.loading {
+	clear: both;
+	height: 32px;
+	text-indent: -9999px;
+	background-position: center;
+}
+
+span.loading {
+	background-position: right;
+	padding-right: 20px;
+}
+
+/**********************************************************************
+ * CSS Styling for the page nav aside
+ */
+div.styled {
+  background: #F2F5F7;
+  border: 1px solid #C8CFD3;
+  margin-bottom: 1em;
+  padding: 1em;
+
+  h2, h3, h4, h5, h6 {
+	color: #738AA3;
+	text-shadow: 0 1px 1px #FFFFFF;
+  }
+
+  h2 {
+	font-size: 140%;
+  }
+
+  h3 {
+	font-size: 115%;
+  }
+}
+
+#page_nav {
+  margin: 0 -1em -1em;
+  padding: 0;
+
+  li {
+	border-top: 1px solid #DBD7D7;
+	color: #06c;
+	list-style: none;
+	margin: 0;
+	padding: 0;
+
+	&.active, a {
+	  color: #016691;
+	  display: block;
+	  padding: 1em 0 1em 1em;
+	}
+
+	&.active {
+	  background-color: #fff;
+	  color: #D56A03;
+	}
+
+	&.collapsed ul {
+	  display: none;
+	}
+
+	a:hover {
+	  background-color: #fff;
+	  text-decoration: none;
+	}
+
+	li {
+	  font-size: 85%;
+
+	  a:hover {
+		text-decoration: underline;
+	  }
+	}
+  }
+
+  ul {
+	margin: .4em 0 -.4em 1em;
+	padding: 0;
+  }
+}
+
+#page_nav_title {
+  margin-bottom: 0.7em;
+}
diff --git a/app/styles/partials/ucsd/base/_title.scss b/app/styles/partials/ucsd/base/_title.scss
new file mode 100755
index 0000000..b6d30be
--- /dev/null
+++ b/app/styles/partials/ucsd/base/_title.scss
@@ -0,0 +1,151 @@
+/**********************************************************************
+ * CSS Styling for the title header
+ */
+
+body {
+	&.collapse-nav {
+		#tdr_title_page_title {
+			left: 65px;
+		}
+	}
+}
+
+#tdr_title {
+	background-color: #2b92b9;
+}
+
+#tdr_title_content {
+	height: 92px;
+	position: relative;
+
+	@media only screen and (min-width: $mobile-small) {
+		height: 105px;
+	}
+
+	@media only screen and (min-width: $desktop-small) {
+		height: 78px;
+	}
+
+	form {
+		margin-bottom: 0;
+	}
+}
+
+#tdr_title_ucsd_title {
+	position: absolute;
+	display: block;
+	overflow: hidden;
+	text-indent: -999em;
+	background: transparent url(../img/sprite_base.png) no-repeat;
+	left: 0;
+	top: 10px;
+	background-position: -239px -14px;
+	height: 32px;
+	width: 166px;
+
+	@media only screen and (min-width: $mobile-small) {
+		background-position: 0 -3px;
+		width: 229px;
+		height: 45px;
+	}
+
+	@media only screen and (min-width: $desktop-small) {
+		top: 20px;
+		left: auto;
+		right: 0;
+	}
+
+	@media screen and (-webkit-min-device-pixel-ratio:2) {
+		background-image: url(../img/sprite_base2x.png);
+		background-size: 500px 120px;
+	}
+
+}
+
+#tdr_title_page_title {
+	font-family: "Trebuchet MS", sans-serif;
+	position: absolute;
+	left: 53px;
+	top: 55px;
+	text-transform: uppercase;
+	font-size: 140%;
+	white-space: nowrap;
+
+	@media only screen and (min-width: $mobile-small) {
+		font-size: 140%;
+		top: 65px;
+		left: 65px;
+	}
+
+	@media only screen and (min-width: $desktop-small) {
+		top: 30px;
+		left: 0;
+		font-size: 24px;
+	}
+}
+
+#tdr_title_page_title,#tdr_title_page_title a {
+	color: #fff;
+	text-decoration: none;
+	letter-spacing: 1px;
+}
+
+#tdr_title_page_title a:hover,#tdr_title_page_title a:focus {
+	text-decoration: underline;
+}
+
+/*---------------------------------------------------------------------
+ * ucsd title (right hand side)
+ */
+
+
+/*---------------------------------------------------------------------
+ * menu link (right hand side)
+ */
+#tdr_title_menu_link {
+	display: none;
+	text-indent: -999em;
+	white-space: nowrap;
+	outline: none;
+	overflow: hidden;
+	font-size: 0; /* ie7 hack */
+	color: transparent;
+}
+
+#tdr_title_menu_link:hover,
+#tdr_title_menu_link:active {
+	color: transparent;
+}
+
+
+/**********************************************************************
+ * responsive design
+ */
+
+
+@media only screen and (max-width: $desktop-small) {
+
+	#tdr_title_search_link {
+		background-position: -461px -7px;
+		margin-right: 2px;
+	}
+
+	#tdr_title_menu_link {
+		background: url(../img/sprite_base.png) no-repeat scroll -461px -47px transparent;
+		right: 0;
+	}
+
+	.noMenu #tdr_title_search_link {
+		right: 0;
+	}
+}
+
+
+@media only screen and (max-width: $mobile-small) {
+
+	#tdr_title_search_link,#tdr_title_menu_link {
+		top: 10px;
+	}
+
+}
+
diff --git a/app/styles/partials/ucsd/cms/_drawer.scss b/app/styles/partials/ucsd/cms/_drawer.scss
new file mode 100755
index 0000000..85bb71f
--- /dev/null
+++ b/app/styles/partials/ucsd/cms/_drawer.scss
@@ -0,0 +1,158 @@
+/**********************************************************************
+ * CSS Styling for the drawer widget.
+ */
+.drawer-wrapper {
+	margin-bottom: 1em;
+	clear: both;
+}
+
+.drawer {
+	//border-bottom: 1px solid #ccc;
+}
+
+/* header */
+.drawer h2 {
+	//border-top: 1px solid #ccc;
+	text-transform: none;
+	font-weight: normal;
+	font-size: 20px;
+	margin-top: 0;
+	margin-bottom: 0;
+	padding: .1em 0;
+	zoom: 1;
+}
+
+/* default state */
+.drawer h2 a {
+	background-position: 5px  12px;
+	display: block;
+	padding: 10px 0 10px 30px;
+	text-decoration: none;
+	color: #fff;
+	background-color: $blue;
+	&:hover {
+		background-color: darken($blue, 10%);
+	}
+}
+
+/* ie7 hack */
+*:first-child+html .drawer h2 a {
+	display: inline-block;
+}
+
+/* expanded state */
+.drawer h2.expand {
+	//background-color: $blue;
+}
+
+.drawer h2.expand a {
+	background-position: 5px -86px;
+	padding: 10px 0 10px 30px;
+	color: #fff;
+	background-color: darken($blue, 10%);
+}
+
+/* hover state */
+.drawer h2:hover,.drawer h2:active {
+	background-color: transparent;
+	cursor: pointer;
+	color: #fff;
+}
+
+.drawer h2.expand:hover,.drawer h2.expand:active {
+	//background: $blue;
+}
+
+/* content background */
+.drawer > div,
+.drawer > article {
+	padding: 1em 2em;
+}
+
+.drawer > div.cols_wrapper {
+	padding: 1em 0;
+}
+
+/* toggle links */
+.drawer-toggle {
+	font-size: 90%;
+	padding: .5em 0;
+}
+
+.drawer-toggle a {
+	color: #666;
+}
+
+.drawer-toggle a:hover,.drawer-toggle a:active {
+	color: #016691;
+}
+
+.drawer-toggle a {
+	background-position: 0 -215px;
+	padding-left: 16px;
+}
+
+.drawer-toggle a.expand {
+	background-position: 0 -200px;
+}
+
+/* light theme */
+.drawer-wrapper .drawer.light-theme {
+	> div {
+		margin-bottom: 16px;
+		border-left: 1px solid #e3e3e3;
+		border-right: 1px solid #e3e3e3;
+		border-bottom: 1px solid #e3e3e3;
+		background-color: #fcfcfc;
+		padding: 0.5em 70px 0em 1em;
+	}
+
+	h2 {
+		font-weight: normal;
+		font-size: 18px;
+		line-height: 22px;
+		margin-bottom: 16px;
+		padding-bottom: 0;
+		background-color: #e8e8e8;
+		position: relative;
+	}
+
+	h2:after {
+		content: " ";
+		position: absolute;
+		right: 1.3em;
+		top: 1.3em;
+		display: block;
+		width: 30px;
+		height: 25px;
+		background: url(../img/expand.svg) no-repeat;
+	}
+
+	h2.expand {
+		margin-bottom: 0;
+	}
+
+	h2.expand:after {
+		content: " ";
+		position: absolute;
+		right: 1.3em;
+		top: 1.3em;
+		display: block;
+		width: 30px;
+		height: 25px;
+		background: url(../img/collapse.svg) no-repeat;
+	}
+
+	h2 a {
+		font-weight: bold;
+		background-color: #e8e8e8;
+		color: #333;
+		line-height: 1.8em;
+		background: none;
+		padding: 1em 70px 1em 1em;
+	}
+
+	h2 a:hover {
+		background-color: #e8e8e8;
+	}
+}
\ No newline at end of file
diff --git a/app/styles/partials/ucsd/cms/_overwrite.scss b/app/styles/partials/ucsd/cms/_overwrite.scss
new file mode 100755
index 0000000..72edb73
--- /dev/null
+++ b/app/styles/partials/ucsd/cms/_overwrite.scss
@@ -0,0 +1,196 @@
+/*******************************************************************
+FLEXSLIDER
+************************/
+
+.flexslider {
+	border: 0;
+	border-radius: 0;
+	margin-bottom: 1em;
+	width: 100%;
+	-webkit-box-shadow: none;
+	-moz-box-shadow: none;
+	-o-box-shadow: none;
+	box-shadow: none;
+
+	a {
+		color: #fff;
+		-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+	}
+
+	.slides li {
+		margin: 0;
+	}
+	.flex-control-nav {
+		float: right;
+		right: 32px;
+		bottom: 10px;
+		height: 12px;
+		width: auto;
+		z-index: 5;
+
+		li {
+			vertical-align: top;
+			margin: 0 0 0 5px;
+
+			/* shared paging, pause and play control styles */
+			a {
+				border: 1px solid #016691;
+				cursor: pointer;
+				height: 10px;
+				margin-left: 8px;
+				text-indent: -9999px;
+				width: 20px;
+			}
+
+			/* paging control */
+			a {
+				background: #bed4e7;
+				-webkit-border-radius: 0px;
+				-moz-border-radius: 0px;
+				-o-border-radius: 0px;
+				border-radius: 0px;
+				-webkit-box-shadow: none;
+				-moz-box-shadow: none;
+				-o-box-shadow: none;
+				box-shadow: none;
+			}
+
+			a.flex-active {
+				background: #eb8626;
+				border: 1px solid #c15f01;
+				cursor: default;
+			}
+		}
+	}
+
+	/* pause and play control */
+
+	.flex-pauseplay a {
+		border: 0;
+		display: block;
+		height: 10px;
+		width: 20px;
+		position: static;
+		text-indent: -9999px;
+	}
+
+	.flex-pauseplay a.flex-pause {
+		background-position: 6px -248px;
+	}
+
+	.flex-pauseplay a.flex-play {
+		background-position: 8px -232px;
+	}
+
+	/* direction control */
+	.flex-direction-nav li a {
+		background: #000;
+		background: rgba(0, 0, 0, 0.3);
+		filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c000000, endColorstr=#4c000000);
+		-webkit-border-radius: 12px;
+		-moz-border-radius: 12px;
+		border-radius: 12px;
+		text-indent: 0;
+		text-align: center;
+		margin: 0;
+		top: 30%;
+		height: 24px;
+		width: 24px;
+		opacity: .8
+	}
+
+	.flex-direction-nav li a:hover {
+		text-decoration: none;
+	}
+
+	.flex-direction-nav li a.flex-prev {
+		left: 10px;
+	}
+
+	.flex-direction-nav li a.flex-next {
+		right: 10px;
+	}
+
+	.flex-direction-nav a:before {
+		content: '';
+	}
+
+	.flex-direction-nav a.flex-next:before {
+		content: '';
+	}
+
+	.flex-controls {
+		height: 37px;
+		z-index: 99;
+
+		.flex-pauseplay {
+			bottom: 10px;
+			right: 5px;
+			position: absolute;
+			z-index: 10;
+		}
+	}
+}
+/* Caption style */
+/* IE rgba() hack */
+
+.flex-caption {
+	background: none;
+	-ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);
+	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4C000000,endColorstr=#4C000000);
+	zoom: 1;
+}
+
+.flex-caption {
+	width: 100%;
+	padding: 2%;
+	margin: 0;
+	position: absolute;
+	left: 0;
+	bottom: 0;
+	background: rgba(0, 0, 0, .3);
+	color: #fff;
+	text-shadow: 0 -1px 0 rgba(0, 0, 0, .3);
+	font-size: 14px;
+	line-height: 18px;
+
+	a {
+		-webkit-tap-highlight-color: rgba(88, 166, 203, 0.6);
+	}
+}
+
+/* control container */
+
+
+/* alternative theme */
+.flexslider.alt .flex-direction-nav li a,
+.flexslider.alt .flex-caption {
+	background: #0B638B;
+	background: rgba(11, 99, 139, 0.8);
+	filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#AA1986b4,endColorstr=#AA1986b4);
+	zoom: 1;
+}
+
+/*******************************************************************
+Alerts
+************************/
+
+.alert-success:before {
+
+}
+
+/*******************************************************************
+Breadcrumbs
+************************/
+
+.breadcrumb {
+	background: transparent;
+}
+
+/*******************************************************************
+Kitchen Sink
+************************/
+
+.bs-example {
+    margin-bottom: 10px;
+}
diff --git a/app/styles/partials/ucsd/cms/themes/black.css b/app/styles/partials/ucsd/cms/themes/black.css
new file mode 100755
index 0000000..7690768
--- /dev/null
+++ b/app/styles/partials/ucsd/cms/themes/black.css
@@ -0,0 +1,113 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400);
+
+h1 {
+  color: #b87111;
+  font-family: 'Lato', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+  color: #707071;
+  font-family: 'Lato', sans-serif;
+}
+
+div.styled {
+  background: #eeeeee;
+}
+
+div.styled h2 {
+  color: #4765ad;
+}
+
+a:link, a:visited, .widget_content a:link, .widget_content a:visited {
+  color: #4765ad;
+}
+
+.flexslider a {
+  color: #FFF;
+}
+
+.layout-title {
+  background: #000;
+}
+
+.layout-title a.title-header {
+  font-family: 'Lato', sans-serif;
+  color: #FFF;
+
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+
+.layout-header button.btn-nav {
+    background-color: #cecece;
+}
+    button.btn-nav span.icon-bar {
+        background-color: #000;
+    }
+
+.layout-title .title-logo {
+  background: transparent url(../img/sprite_base-black.png) no-repeat;
+}
+
+.layout-navbar {
+  background: #979797;
+}
+
+.layout-navbar ul.navbar-list > li > a {
+  padding: 9px 15px;
+}
+/* depth of selectors to override layout.css */
+.navdrawer-container ul.navbar-list ul.navbar-sublist {
+  border-left: 1px solid #efefef;
+  border-bottom: 1px solid #979797;
+}
+
+.main-content-nav {
+  background: #eeeeee;
+  font-family: 'Lato', sans-serif;
+}
+
+.main-content-nav > h2 {
+  color: #4765ad;
+}
+
+/* search modifications */
+.search-toggle,
+.search-toggle:hover,
+.search-toggle:focus {
+  background: 0 0;
+  color: #000;
+  border: 1px solid transparent
+}
+.btn-default, .btn-default:focus, .btn-default:hover {
+  color:#000;
+}
+.search-toggle.search-is-open {
+  background-color: #DFE2E4;
+  color: #939393;
+}
+
+@media only screen and (max-width: 768px) {
+  .layout-title .title-logo {
+    top: 10px;
+  }
+}
+@media only screen and (max-width: 360px) {
+  .layout-title .title-logo {
+    background-position: -239px -14px;
+    height: 32px;
+    width: 166px;
+  }
+}
+
+/*---------------------------------------------------------------------
+ * retina display
+ */
+@media screen and (-webkit-min-device-pixel-ratio:2) {
+  .layout-title .title-logo {
+    background-image: url(../../img/sprite_base-black-2x.png);
+    background-size: 500px 120px;
+  }
+}
diff --git a/app/styles/partials/ucsd/cms/themes/dark-blue.css b/app/styles/partials/ucsd/cms/themes/dark-blue.css
new file mode 100755
index 0000000..f333b00
--- /dev/null
+++ b/app/styles/partials/ucsd/cms/themes/dark-blue.css
@@ -0,0 +1,89 @@
+@import url(https://fonts.googleapis.com/css?family=Lora:400,700|Bree+Serif);
+
+h1 {
+  color: #b87111;
+  font-family: 'Laro', serif;
+}
+
+h2, h3, h4, h5, h6 {
+  color: #707071;
+  font-family: 'Laro', serif;
+}
+
+div.styled {
+  background: #eeeeee;
+}
+
+div.styled h2 {
+  color: #b87111;
+}
+
+a:link, a:visited, .widget_content a:link, .widget_content a:visited {
+  color: #1893b8;
+}
+
+.flexslider a {
+  color: #FFF;
+}
+
+.layout-title {
+  background: #07425a;
+}
+
+.layout-title a.title-header {
+  font-family: 'Lora', serif;
+  color: #fff;
+
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+
+.layout-navbar {
+  border-top: 1px solid #C8CFD3;
+  border-bottom: 1px solid #C8CFD3;
+}
+
+.layout-navbar ul.navbar-list > li > a {
+  padding: 9px 15px 8px;
+  color: #004b6e;
+}
+
+.layout-navbar ul.navbar-list > li.active > a {
+  border-bottom: #07425a solid 3px;;
+}
+/* depth of selectors to override layout.scss */
+.navdrawer-container ul.navbar-list ul.navbar-sublist {
+  border-left: 1px solid #e1ecff;
+  border-bottom: 1px solid #bcd6e6;
+}
+
+.navdrawer-container ul.navbar-list ul.navbar-sublist a {
+  background: rgb(240, 250, 255);
+}
+
+.main-content-nav {
+  background-color: rgb(238, 238, 238);
+  font-family: 'Lora', serif;
+}
+
+.main-content-nav > h2 {
+  color: #b87111;
+}
+
+/* search modifications */
+.search-toggle,
+.search-toggle:hover,
+.search-toggle:focus {
+  background: 0 0;
+  color: #07425a;
+  border: 1px solid transparent
+}
+.btn-default, .btn-default:focus, .btn-default:hover {
+  color:#07425a;
+}
+.search-toggle.search-is-open {
+  background-color: #DFE2E4;
+  color: #95afc9;
+}
diff --git a/app/styles/partials/ucsd/cms/themes/gray.css b/app/styles/partials/ucsd/cms/themes/gray.css
new file mode 100755
index 0000000..613e8ea
--- /dev/null
+++ b/app/styles/partials/ucsd/cms/themes/gray.css
@@ -0,0 +1,87 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400);
+
+h1 {
+  color: #5b5c5c;
+  font-family: 'Lato', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+  color: #707071;
+  font-family: 'Lato', sans-serif;
+}
+
+div.styled {
+  background: #eeeeee;
+}
+
+div.styled h2 {
+  color: #5b5c5c;
+}
+
+a:link, a:visited, .widget_content a:link, .widget_content a:visited {
+  color: #4765ad;
+}
+
+.flexslider a {
+  color: #FFF;
+}
+
+.layout-title {
+  background: #636363;
+}
+
+.layout-title a.title-header {
+  font-family: 'Lato', sans-serif;
+  color: #FFF;
+
+  transition: none;
+  -moz-transition: none;
+  -webkit-transition: none;
+  -o-transition: none;
+}
+
+.layout-title .title-logo {
+  background: transparent url(../img/sprite_base-black.png) no-repeat;
+}
+
+.layout-navbar {
+  background: #ccc;
+  border-top: 1px solid #ccc;
+}
+.layout-navbar ul.navbar-list > li > a {
+  padding: 9px 15px 8px;
+}
+/* depth of selectors to override layout.scss */
+.navdrawer-container ul.navbar-list ul.navbar-sublist {
+  border-left: 1px solid #eee;
+  border-bottom: 1px solid #808080;
+}
+
+.main-content-nav {
+  background: #eeeeee;
+  font-family: 'Lato', sans-serif;
+}
+
+.main-content-nav > h2 {
+  color: #5b5c5c;
+}
+
+/* search modifications */
+.search-toggle,
+.search-toggle:hover,
+.search-toggle:focus {
+  background: 0 0;
+  border: 1px solid transparent
+}
+.btn-default, .btn-default:focus, .btn-default:hover {
+  color:#000;
+}
+.search-toggle.search-is-open {
+  background-color: #DFE2E4;
+  color: #07425a;
+}
+
+.layout-title button.btn-nav,
+.layout-title button.btn-nav:active {
+  background-color: #636363;
+}
diff --git a/app/styles/partials/ucsd/cms/themes/white.css b/app/styles/partials/ucsd/cms/themes/white.css
new file mode 100755
index 0000000..93c9a15
--- /dev/null
+++ b/app/styles/partials/ucsd/cms/themes/white.css
@@ -0,0 +1,109 @@
+@import url(https://fonts.googleapis.com/css?family=Lato:400);
+
+h1 {
+  color: #4D4E4E;
+  font-family: 'Lato', sans-serif;
+}
+
+h2, h3, h4, h5, h6 {
+  color: #707071;
+  font-family: 'Lato', sans-serif;
+}
+
+div.styled {
+  background: #fcfbfd;
+}
+
+div.styled h2 {
+  color: #5b5c5c;
+}
+
+a:link, a:visited, .widget_content a:link, .widget_content a:visited {
+  color: #004b6e;
+}
+
+.flexslider a {
+  color: #FFF;
+}
+
+.layout-title {
+  background: #fff;
+}
+
+  .layout-title a.title-header {
+    font-family: 'Lato', sans-serif;
+    color: #12215b;
+
+    transition: none;
+    -moz-transition: none;
+    -webkit-transition: none;
+    -o-transition: none;
+  }
+
+  .layout-title .title-logo {
+    background: transparent url(../img/sprite_base-white.png) no-repeat;
+  }
+
+.layout-navbar {
+  background: #376791;
+  border-top: 1px solid #ccc;
+}
+  .layout-navbar ul.navbar-list > li > a {
+    padding: 9px 15px 8px;
+  }
+  /* depth of selectors to override layout.scss */
+  .navdrawer-container ul.navbar-list ul.navbar-sublist {
+    border-left: 1px solid #eee;
+    border-bottom: 1px solid #808080;
+  }
+
+/* search modifications */
+.search-toggle,
+.search-toggle:hover,
+.search-toggle:focus {
+  background: 0 0;
+  border: 1px solid transparent
+}
+.btn-default, .btn-default:focus, .btn-default:hover {
+  color:#FFF;
+}
+  .search-toggle.search-is-open {
+    background-color: #DFE2E4;
+    color: #004b6e;
+  }
+
+.layout-title button.btn-nav,
+.layout-title button.btn-nav:active {
+  background-color: #376791;
+}
+
+.main-section-content a {
+    color: #005AA9;
+}
+
+.drawer h2 {
+  font-size: 21px !important;
+}
+
+@media only screen and (max-width: 768px) {
+  .layout-title .title-logo {
+    top: 10px;
+  }
+}
+@media only screen and (max-width: 360px) {
+  .layout-title .title-logo {
+    background-position: -239px -14px;
+    height: 32px;
+    width: 166px;
+  }
+}
+
+/*---------------------------------------------------------------------
+ * retina display
+ */
+@media screen and (-webkit-min-device-pixel-ratio:2) {
+  .layout-title .title-logo {
+    background-image: url(../img/sprite_base-white-2x.png);
+    background-size: 500px 120px;
+  }
+}
diff --git a/app/styles/partials/vitro-modules.scss b/app/styles/partials/vitro-modules.scss
new file mode 100755
index 0000000..bafef07
--- /dev/null
+++ b/app/styles/partials/vitro-modules.scss
@@ -0,0 +1,486 @@
+/* ***********************************************
+ * Modules
+ *
+ * Components:
+ *  - Global styles
+ *  - Buttons & Links
+ *  - Hero Landing Page
+ *  - Text and CTA w/Full Height Image Left
+ *  - News with Images
+ *  - Callout Image Small Inset
+ *  - Callout Content One
+ *  - Callout Content Two
+ *
+ * ***************/
+
+ /* Global styles , specific for new templates */
+
+.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .styled-h2    {
+	line-height: 1.1;
+	margin: 0 0 .25em;
+}
+
+.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6, .jumbotron .h1, .jumbotron .h2, .jumbotron .h3, .jumbotron .h4, .jumbotron .h5, .jumbotron .h6, .styled-h2  {
+	text-transform: uppercase;
+	font-weight: bold;
+}
+.jumbotron h1, .jumbotron .h1, .jumbotron h2, .jumbotron .h2, .jumbotron h3, .jumbotron .h3, .styled-h2{
+	margin-top: 23px;
+	margin-bottom: 11.5px;
+}
+
+.jumbotron .drawer-wrapper ul, .jumbotron  .drawer-wrapper ol {padding-left: 1em;}
+
+.jumbotron .drawer-wrapper ul li, .jumbotron  .drawer-wrapper ol li {
+	padding-bottom: 10px;
+}
+
+.jumbotron a, .jumbotron a:hover {
+	text-decoration: none;
+}
+
+.jumbotron, .container .jumbotron {
+	border-radius: 0 !important;
+}
+
+.detail-logo img {
+	margin-top: 35px;
+	margin-bottom: 15px;
+	width: 80%;
+}
+#site-logo {
+	margin-top: 0;
+	@media (min-width: $desktop-small) {
+		margin-top: 0;
+	}
+}
+
+@media (min-width: $desktop-small) {
+	.jumbotron h2, .styled-h2 {
+		font-size: 2em;
+	}
+
+	.jumbotron h4 {
+	    font-size: 1.22em;
+	}
+}
+
+/* Buttons & links */
+
+.btn, .btn-default {
+    white-space: normal;
+}
+
+.jumbotron  .btn-default {
+  background-color: $yellow;
+  color: #484949;
+  font-family: inherit;
+  transition: all 0.3s;
+  border: 0;
+  border-radius: 0;
+  &:hover {
+   	background-color: $dark-blue;
+	color: #fff;
+  }
+}
+
+.jumbotron-hero .btn-default:hover {
+	background-color: #fff;
+	color: $dark-gray;
+  }  
+
+
+.styled-yellow {
+  background-color: $yellow;
+  color: #484949 !important;
+  font-family: inherit;
+  transition: all 0.3s;
+  border: 0;
+  border-radius: 0;
+  text-decoration: none !important;
+  &:hover {
+   	background-color: darken($yellow, 5%);
+  }
+}
+
+.jumbotron .btn-primary {
+  background-color: $blue;
+  color: #fff;
+  font-family: inherit;
+  transition: all 0.3s;
+  border: 0;
+  border-radius: 0;
+  &:hover {
+   	background-color: $dark-blue;
+  }
+}
+
+
+.styled-blue {
+  background-color: $blue;
+  color: #fff !important;
+  font-family: inherit;
+  transition: all 0.3s;
+  border: 0;
+  border-radius: 0;
+  text-decoration: none !important;
+  &:hover {
+   	background-color: darken($blue, 10%);
+		color: #fff;
+  }
+}
+
+
+.jumbotron .btn, .styled-yellow, .styled-blue {
+	font-size: 0.9375em;
+	text-transform: uppercase;
+	padding: 0.8em 1.5em;
+	min-width: 200px;
+	margin-bottom: 1em;
+	letter-spacing: 0.08em;
+	font-weight: normal;
+}
+
+.jumbotron .text-link {
+    text-transform: uppercase;
+    font-weight: bold;
+    border-bottom: 1px $blue solid;
+    letter-spacing: 0.08em;
+}
+
+/* Hero Landing Page */
+
+.jumbotron {
+	background-size: cover !important;
+	background-repeat: no-repeat;
+	background-position: center;
+	color: inherit;
+	// removed padding, to have consistent spacing to work with these templates
+	padding: 0 !important;
+}
+.hm {
+	padding: 0 0 !important;
+	color: #fff !important;
+	margin: 0 !important;
+}
+.jumbotron-hero-lg {
+	background-image: url("../../img/gps-hero.jpg");
+}
+.jumbotron .text-indent-h1 h1 {
+	text-transform: uppercase;
+	@media (max-width: $desktop-small) {
+		font-size: 2.5em;
+	}
+	@media (max-width: $mobile) {
+		font-size: 2em;
+	}
+}
+.jumbotron .text-indent-h1 p {
+	margin-left: 6.75em;
+}
+.jumbotron .text-indent-h1 a.btn {
+	margin-left: 7.2em;
+}
+.jumbotron .text-indent-h2 p {
+	margin-left: 3.6em;
+}
+.jumbotron .text-indent-h2 a.btn {
+	margin-left: 4.4em;
+}
+.jumbotron .text-indent-h1 p, .jumbotron  .text-indent-h2 p {
+	width: 19em;
+}
+.jumbotron .text-indent h1 span {
+	margin-left: 1.65em;
+}
+.jumbotron-hero .text-indent h1, .jumbotron-hero .text-indent h2, .jumbotron-hero .text-indent h3, .jumbotron-image-bg .text-indent h1, .jumbotron-image-bg .text-indent h2, .jumbotron-image-bg .text-indent h3 {
+	text-shadow: 0px 0px 50px rgba(0, 0, 0, 0.75);
+}
+.jumbotron-hero .text-indent p , .jumbotron-image-bg .text-indent p {
+  text-shadow: 0px 0px 25px rgba(0, 0, 0, 0.75);
+}
+
+.jumbotron {
+	margin: 60px 0;
+}
+
+/* Text and CTA w/Full Height Image Left */
+
+.side-image-white {
+	background-color: #fff;
+}
+.jumbotron p {
+	margin-bottom: 15px;
+	font-size: 1em;
+}
+
+.embed-video {
+	margin: 23px 0;
+    position: relative;
+    padding-bottom: 51.10%; /* - 16:9 aspect ratio (most common) */
+    padding-top: 30px;
+    height: 0;
+    overflow: hidden;
+}
+
+.embed-video iframe,
+.embed-video object,
+.embed-video embed {
+    border: 0;
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+}
+
+/* News with Images */
+
+.jumbotron-news {
+	background: none !important;
+
+	.panel-heading {
+	    padding: 10px 30px;
+	}
+
+}
+
+.jumbotron-news h2 {
+    margin-bottom: 1em;
+    margin-top: 0;
+    text-transform: uppercase;
+    font-weight: bold;
+}
+
+.no-gutter {
+    padding-left: 0;
+    padding-right: 0;
+}
+
+.jumbotron .panel {border-radius: 0 !important;}
+
+
+.jumbotron-news .panel.panel-default {
+    border: 1px solid #f2f2f2;
+    background-color: #f5f5f5;
+
+		img {
+    	width: 100%;
+		}
+
+}
+.jumbotron-news .panel.panel-default .panel-heading {
+    background-color: #f5f5f5;
+    border: none;
+}
+.panel-default>.panel-heading {
+    color: #333;
+}
+.jumbotron-news .panel .panel-news-date {
+    text-transform: uppercase;
+    color: #747678;
+    font-size: 0.85em;
+    margin-bottom: 0.25em;
+    margin-top: 1em;
+}
+.jumbotron-news .panel .panel-news-title {
+    text-transform: none;
+    margin-top: 0;
+}
+.jumbotron-news .panel.panel-default .panel-body {
+    padding-top: 0;
+    padding-right: 2em;
+}
+
+
+@media (min-width: $desktop-small) {
+	.jumbotron-news .panel.panel-default .panel-heading {
+	    min-height: 135px;
+	}
+}
+
+
+/* Callout Image Small Inset */
+
+.jumbotron-callout-image-small-inset {
+	background-image: url("../img/callout-content-two-bg.jpg");
+	background-position: center center;
+	background-size: cover;
+	padding: 48px 0 !important;
+	border-radius: 0 !important;
+	h2, h3, p, a {
+		color: #484949;
+	}
+	.panel {
+		margin: 0 15px;
+	}
+	.panel.panel-default .panel-body {
+		padding: 1em 2em;
+	}
+	.btn-default:hover {
+		background-color: $dark-blue;
+		color: #fff;
+	}
+}
+
+/* Callout Content One */
+
+.jumbotron-callout-content-one {
+	background-color: $blue;
+	background-image: url("../img/bg-dark-blue-trident-full.png");
+  	background-position: center;
+	color: #fff;
+	padding: 30px 0 !important;
+	border-radius: 0 !important;
+	h2, h3, h4, h5, h6, p, li, a:hover {color: #fff;}
+
+	a {color: #FFF; text-decoration: underline !important;}
+
+	a:hover {color: #FFF; text-decoration: underline !important;}
+
+	a.btn {text-decoration: none !important;}
+
+	a.btn:hover {text-decoration:none;}
+
+	.panel {
+		background-color: transparent !important;
+		margin: 0 15px 20px 15px;
+		box-shadow: none;
+		border: 0;
+	}
+	.panel.panel-primary .panel-body {
+		padding: 0em 1em ;
+	}
+	.panel.panel-primary .panel-body p {
+		font-size: 1.125em;
+		color: #fff;
+	}
+
+	.cc-yellow-trident {
+		background-image: url("../img/bg-dark-blue-trident-full.png");
+	}
+
+	
+
+	@media (min-width: 992px) {
+		h2 {
+			margin-left: 50px;
+		}
+	}
+}
+
+.cc-yellow-trident {
+	color: $darker-gray;
+	background-color: #f5f5f5;
+	background-image: url("../img/bg-yellow-trident-full.png");
+
+	h2, h3, h4, h5, h6, p, li, a:hover {color: $darker-gray;}
+
+	.panel.panel-primary .panel-body p {
+		color: $darker-gray;
+	}
+	a {color: $darker-gray; text-decoration: underline !important;}
+
+	a:hover {color: $darker-gray; text-decoration: underline !important;}
+}
+
+.cc-dark-blue-trident {
+	background-color: #182b49;
+	background-image: url("../img/bg-white-trident-full.png");
+}
+
+.cc-dark-blue-library {
+	background-color: #182b49;
+	background-image: url("../img/dark-blue-library.png");
+}
+
+.cc-blue-library-light {
+	background-image: url("../img/dark-blue-library.png");
+}
+
+.cc-custom-background {
+	background-size:cover;
+}
+
+/* Callout Content Two */
+
+.jumbotron-callout-content-two {
+	background-image: url("../img/callout-content-two-bg.jpg");
+	background-position: center center;
+	background-size: cover;
+	padding: 48px 0 !important;
+	border-radius: 0 !important;
+
+		.panel {
+			border: none;
+		}
+		.panel.panel-primary {
+			background-color: rgba(0,106,150,0.85);
+		}
+		.panel.panel-primary .panel-body {
+			padding: 1em 2em;
+		}
+		.panel.panel-primary .panel-body .btn {
+			margin-bottom: 0;
+		}
+		.panel.panel-primary .text-link {
+			color: #fff;
+		}
+		.panel.panel-primary .text-right {
+			margin-bottom: 0.25em;
+		}
+		.panel-primary .text-link {
+				border-bottom: 1px #fff solid;
+		}
+
+
+}
+.jumbotron-callout-content-two h2, .jumbotron-callout-content-two h3, .jumbotron-callout-content-two p {
+	color: #fff;
+}
+
+.cta-two-three p {
+	color: #fff !important;
+}
+
+.ct4-light-bg {
+	h2 {
+
+		color: #484949 !important;
+
+	 } 
+	 
+	 p {
+		color: #333;
+	 }
+	
+}
+
+.panel-darker {
+	background-color: #00629B !important;
+}
+
+.text-indent h2 span, .text-indent .h2 span {
+    margin-left: 2em;
+}
+
+
+/* Jumbotron full-width */
+
+.jumbotron-full-width {
+    background-image: url("../img/bg-light-yellow-trident.png");
+    background-position: top right;
+    background-color: #f5f5f5;
+		border-radius: 0 !important;
+    padding: 2em !important;
+}
+
+.jumbotron-full-width-ni {
+    background-color: #f5f5f5;
+		border-radius: 0 !important;
+    padding: 2em !important;
+
+		h2{
+			margin: 0 0 30px 0;
+		}
+}
diff --git a/app/styles/profile.scss b/app/styles/profile.scss
new file mode 100755
index 0000000..8ce3e5f
--- /dev/null
+++ b/app/styles/profile.scss
@@ -0,0 +1,220 @@
+  /********************* VARIABLES & MIXINS */
+
+  .imageHolder {
+    display: inline-block;
+    width: 17%;
+    height: 93px;
+    float: left;
+    min-height: 93px;
+    min-width: 110px; }
+
+  .profile-listing ul {
+    margin: 0;
+    padding: 0;
+    list-style: none; }
+  .profile-listing li.profile-listing-card {
+    margin: 0 0 1em;
+    background: #eee;
+    border: 1px solid #eee;
+    width: 99.5%;
+    display: inline-block; }
+    .profile-listing li.profile-listing-card a {
+      color: #016691;
+      text-decoration: none; }
+    .profile-listing li.profile-listing-card img {
+      width: 13%;
+      height: auto;
+      float: left; }
+
+  .profile-listing-data {
+    display: inline-block;
+    padding: 1.5%;
+    width: 80%; }
+    .profile-listing-data h3 {
+      font-size: 160%;
+      color: #4b4b4b; }
+
+  .profile-section {
+    width: 72%; }
+    @media only screen and (max-width: 640px) {
+      .profile-section {
+        width: 100%; } }
+
+  .profile-section-contact {
+    width: 25%;
+    padding-left: 2%; }
+    @media only screen and (max-width: 640px) {
+      .profile-section-contact {
+        width: 98%; } }
+    .profile-section-contact img {
+      width: 100%;
+      margin-bottom: 1em; }
+      @media only screen and (max-width: 640px) {
+        .profile-section-contact img {
+          float: left;
+          width: 125px;
+          margin-right: 1em; } }
+    .profile-section-contact ul {
+      margin: 0;
+      padding: 0;
+      list-style: none; }
+      .profile-section-contact ul li {
+        background: url(img/social-sprite-20.png) no-repeat;
+        margin: 0 0 1em;
+        padding-left: 35px; }
+        .profile-section-contact ul li.email {
+          background-position: 0 1px; }
+        .profile-section-contact ul li.fax {
+          background-position: 0 -59px; }
+        .profile-section-contact ul li.location {
+          background-position: 0 -115px; }
+        .profile-section-contact ul li.phone {
+          background-position: 0 -253px; }
+        .profile-section-contact ul li.facebook {
+          background-position: 0 -314px; }
+        .profile-section-contact ul li.twitter {
+          background-position: 0 -498px; }
+        .profile-section-contact ul li.linkedin {
+          background-position: 0 -436px; }
+        .profile-section-contact ul li.googleplus {
+          background-position: 0 -374px; }
+        .profile-section-contact ul li.instagram {
+          background-position: 0 -612px; }
+          
+      
+    .profile-section-contact .profile-contact-list {
+      margin-left: 0;
+      padding-left: 0;
+      list-style: none; }
+      .profile-section-contact .profile-contact-list li {
+        height: 25px; }
+      @media only screen and (max-width: 640px) {
+        .profile-section-contact .profile-contact-list {
+          display: inline-block;
+          padding: 0;
+          width: 50%; } }
+
+  ul.resp-tabs-list {
+    margin: 0;
+    padding: 0; }
+
+  .resp-tabs-list li {
+    font-weight: 600;
+    font-size: 13px;
+    display: inline-block;
+    padding: 0 1.25em .5em;
+    margin: 0;
+    list-style: none;
+    cursor: pointer;
+    float: left; }
+
+  .resp-tabs-container {
+    padding: 0;
+    border-top: 1px solid #016691;
+    clear: left; }
+
+  h2.resp-accordion {
+    cursor: pointer;
+    display: none; }
+
+  .resp-tab-content {
+    display: none;
+    padding: 1em 0; }
+
+  .resp-tab-active {
+    margin-bottom: -1px;
+    padding: .2em;
+    border-bottom: 3px solid #0B4A66; }
+
+  .resp-accordion-active, .resp-content-active {
+    display: block; }
+
+  h2.resp-accordion {
+    font-size: 13px;
+    border: 1px solid #c1c1c1;
+    border-top: 0 solid #c1c1c1;
+    margin: 0;
+    padding: 10px 15px; }
+
+  h2.resp-tab-active {
+    border-bottom: 0 solid #c1c1c1 !important;
+    margin-bottom: 0 !important;
+    padding: 0.2em; }
+
+  h2.resp-tab-title:last-child {
+    border-bottom: 12px solid #c1c1c1 !important;
+    background: #00f; }
+
+  @media only screen and (max-width: 900px) {
+    .resp-tabs-list li {
+      font-size: 12px;
+      padding: 0 1em 0.5em; } }
+  .resp-easy-accordion h2.resp-accordion {
+    display: block; }
+
+  .resp-easy-accordion .resp-tab-content {
+    border: 1px solid #c1c1c1; }
+
+  .resp-easy-accordion .resp-tab-content:last-child {
+    border-bottom: 1px solid #c1c1c1 !important; }
+
+  .resp-jfit {
+    width: 100%;
+    margin: 0; }
+
+  .resp-tab-content-active {
+    display: block; }
+
+  h2.resp-accordion:first-child {
+    border-top: 1px solid #c1c1c1 !important; }
+
+  .resp-arrow {
+    width: 12px;
+    height: 16px;
+    float: left;
+    padding-right: 15px;
+    background: url(//www.ucsd.edu/common/cwp/active-cherry/img/sprite_icon_widget.png) 0 4px no-repeat; }
+
+  h2.resp-tab-active span.resp-arrow {
+    border: 0;
+    background-position: 0 -96px; }
+
+  @media only screen and (max-width: 640px) {
+    .resp-tab-content.resp-tab-content-active {
+      padding-left: 20px; }
+
+    ul.resp-tabs-list {
+      display: none; }
+
+    h2.resp-accordion {
+      font-weight: 400;
+      display: block;
+      color: #016691;
+      border: 0;
+      border-top: 1px solid #ccc;
+      padding: .2em 0;
+      font-size: 150%; }
+
+    h2.resp-tab-active {
+      color: #fff;
+      background-color: #0b4a67; }
+
+    .resp-tabs-container {
+      border-top: 0;
+      border-bottom: 1px solid #ccc; }
+
+    .resp-vtabs .resp-tab-content {
+      border: 1px solid #C1C1C1; }
+
+    .resp-vtabs .resp-tabs-container {
+      border: 0;
+      float: none;
+      width: 100%;
+      min-height: initial;
+      clear: none; }
+
+    .resp-accordion-closed {
+      display: none !important; }
+
+    .resp-vtabs .resp-tab-content:last-child {
+      border-bottom: 1px solid #c1c1c1 !important; } }
\ No newline at end of file
diff --git a/app/styles/widgets.scss b/app/styles/widgets.scss
new file mode 100755
index 0000000..ce94789
--- /dev/null
+++ b/app/styles/widgets.scss
@@ -0,0 +1,6 @@
+/********************* WIDGETS
+
+@import "../widgets/datatable/styles/datatable.scss";
+@import "../widgets/fullcalendar/styles/fullcalendar.scss";
+@import "../widgets/wizard/styles/wizard.scss";
+*/
diff --git a/app/templates/blank-slate.html b/app/templates/blank-slate.html
new file mode 100644
index 0000000..ac2490c
--- /dev/null
+++ b/app/templates/blank-slate.html
@@ -0,0 +1,268 @@
+
+
+
+  Blank Slate Template
+  
+  
+  
+  
+  
+  
+  
+  
+
+    
+    
+    
+    
+    
+    
+    
+
+    
+
+    
+
+    
+
+    
+    
+    
+
+    
+
+
+
+
+
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+

Blank Slate Template

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/templates/homepage.html b/app/templates/homepage.html new file mode 100644 index 0000000..185f8c3 --- /dev/null +++ b/app/templates/homepage.html @@ -0,0 +1,548 @@ + + + + Homepage Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+ + +
+
+ + +
+

Global Results

+

+ The UC San Diego School of Global Policy and Strategy (GPS) addresses the crucial societal + challenges of the 21st century. The School's pioneering research builds on internationally + recognized expertise of the Americas and Asia, integrates analysis of public policy and + markets, and explores global issues of conflict and cooperation. +

+ Learn More +
+
+
+
+ + + + +
+
+
+ +
+
+ + +
+
+ + +
+

Global Results

+

+ The UC San Diego School of Global Policy and Strategy (GPS) addresses the crucial societal + challenges of the 21st century. The School's pioneering research builds on internationally + recognized expertise of the Americas and Asia, integrates analysis of public policy and + markets, and explores global issues of conflict and cooperation. +

+ Learn More +
+
+
+
+ + See our Accomplishments + +
+
+
+

Apply Now

+ + +
+
+
+
+
+

Bachelor's Program

+

+ Merge academic theory and real-world practice. The Academic Internship Program + helps students explore careers and enrich their education through hands-on experience. +

+

+ Get Info +

+
+
+
+ +
+
+
+

Master's Program

+

+ There's still time to apply for one of our masters's degree programs! Our MIA, MPP, + MCEPA and MAS-IA degrees are accepting students on a rolling basis so get your + application in today to join us this fall. +

+

+ Get Info +

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

GPS At a Glance

+

+ Leveraging our West Coast location and UC San Diego’s + renowned programs in science and technology, GPS + develops new analytic tools with real-world applications, + while rigorously training the next generation of global + leaders. Through collaborations across campus and + counterparts around the globe, GPS shapes cutting-edge + solutions for a transforming world. +

+ Learn More +
+
+
+ +
+
+
+
+
+ + + +
+ +
+
+

GPS in the news

+
+ +
+ +
+
+
+ Chancellor’s Associates Scholars Program Welcomes Record-Breaking Class +
+

September 29, 2016

+

Chancellor’s Associates Scholars Program Welcomes + Record-Breaking Class

+
+
+ Read More +
+
+
+ +
+
+ Convocation Keynote: Mistakes are Stepping Stones on Path to Greatness +
+

September 29 2016

+

Convocation Keynote: Mistakes are Stepping Stones + on Path to Greatness

+
+
+ Read More +
+
+
+ +
+
+ UC San Diego Ranked World’s 7th Best Public University +
+

September 23, 2016

+

UC San Diego Ranked World’s 7th Best Public University

+
+
+ Read More +
+
+
+
+ +
+ + +
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/templates/index.html b/app/templates/index.html new file mode 100644 index 0000000..51eb54d --- /dev/null +++ b/app/templates/index.html @@ -0,0 +1,279 @@ + + + + Templates + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+

Templates

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/templates/modules.html b/app/templates/modules.html new file mode 100644 index 0000000..c4af744 --- /dev/null +++ b/app/templates/modules.html @@ -0,0 +1,703 @@ + + + + Two Column Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +

Headline

+ +

Aenean ac metus enim. Proin auctor sed ex sit amet vehicula. In mattis vitae this is a link test ante vel viverra. Aenean interdum sollicitudin sapien, vel fermentum diam ornare vitae.

+ +
+
+
+ +
+

Full Width Module

+

+ The UC San Diego School of Global Policy and Strategy (GPS) addresses the crucial societal + challenges of the 21st century. The School's pioneering research builds on internationally + recognized expertise of the Americas and Asia, integrates analysis of public policy and + markets, and explores global issues of conflict and cooperation. +

+ Learn More +
+ +
+
+
+ + +
+
+
+
+

Who We Are

+

+ We are a true global society of faculty, staff, students and + community partners dedicated to the advancement of knowledge + through education and research — all with an eye on building a + Pacific community. The school is anchored in the reputation and + successes of UC San Diego and the University of California + system. +

+
+ +
+
+ School of Global Policy & Strategy +
+
+
+
+
+ + + +
+
+
+

Our History

+
+
+
+
+
+

+ While our School stands among the world’s top graduate schools of + international relations and is the established leader in its focus + on Asia and the Americas, this is only part of the story. It is also + anchored in the reputation and successes of the University of + California, San Diego and the University of California system as a whole.

+

+ We are the public policy leader at one of the nation’s most + accomplished universities, with an integrated faculty from the + well-recognized UC San Diego fields of international relations, political + science and economics, where professors are among the top 10 in the + country in their respective disciplines. We have the sixth largest + research and development budget among American universities, and we have + many Nobel Prize laureates. We are proud to be ranked as the number one + college in the nation for the fifth consecutive year based on research, + civic engagement and social mobility. +

+ See our Accomplishments +
+
+
+
+
+
+ + + +
+
+
+
+

Staff

+

+ Our staff is dedicated to supporting faculty, students and friends of + the School with valuable, innovative, and timely services. They are + committed to the goal of attracting, developing and retaining a + diverse and outstanding faculty. Discover the listing of + departments and staff members. +

+
+ +
+
+ School of Global Policy & Strategy Staff +
+
+
+
+
+ + + +
+
+
+
+
+
+

Small Inset

+

+ While our School stands among the world’s top graduate schools of + international relations and is the established leader in its focus + on Asia and the Americas, this is only part of the story. +

+

Learn More +

+
+
+
+
+
+
+ + + +
+
+
+
+
+ School of Global Policy & Strategy Faculty +
+
+ +
+

Faculty

+

+ Students have unmatched access to internationally renowned + faculty who integrate rigorous scholarship with an enthusiasm for + teaching and active engagement in and out of the classroom. Learn more + about the range and depth of their vast + research interests today. +

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

Full text Width Module

+

+ The International Advisory Board was formed in 1986 to aid the dean in + achieving the vision and mission of the School. Members provide counsel on + current issues that affect our role as an established leader in the region. + A list of current and emeritus members is listed below. +

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

2016–17 Members

+
+

William A. Bold, Senior Vice President, Government Affairs, Qualcomm Inc.

+

Kurt M. Campbell, Founding Partner, Chairman and CEO, The Asia Group

+

Carlos Casasus, Director General, Corporacion Universitaria para + el Desarollo de Internet, A.C. (CUDI)

+

M. Javade Chaudhri, Partner, Jones Day

+

Kathryn J. Colllier, Vice President and Treasurer, Sempra Energy

+

Shawn Covell, MAS-IA ’12, Vice President of Communication and Devices + Group and Director of Technology Advocacy and Spectrum Strategy,Intel Corp.

+

Peter Cowhey, Interim Executive Vice Chancellor for Academic Affairs and + Qualcomm Professor of Communications and Technology Policy, UC San Diego

+

Ambassador Diana Lady Dougan,Senior Advisor, Center for Strategic and + International Studies

+

Phyllis Epstein, Community Volunteer

+

Aaron Feldman, President, Sunroad Enterprises

+

Gordon Hanson, Acting Dean and Director of Center on GlobalTransformation,GPS

+

Robert (Bob) Hormats,Vice Chairman, Kissinger Associates Inc.

+

Bill Huang,CEO, CloudMinds

+

Aaron Jacobson '08, Materials Manager, United Technologies Aerospace + Systems; President, GPS Alumni Board

+

James (Jim) D. Jameson, President, LIDCO Inc.

+

James Lambright,Former Chairman and CEO,U.S. Export-Import Bank

+

Zhong Yuan Li, Chairman, China HealthCare Holdings Ltd.

+

Ron Mannix, Chairman,Coril Holdings Ltd.

+

David Michael,Senior Advisor, Boston Consulting Group

+

Diana Villiers Negroponte, Public Policy Scholar, Woodrow Wilson + International Center

+

Henry (Hank) Nordhoff, Chairman and CEO, Banyan Biomarkers

+

Kyota Omori, Chairman, Mitsubishi Research Institute Inc.

+

Scott Park ’90, President and CEO, Doosan Infracore Construction Equipment

+

Brooke Partridge '91, CEO and Founder, Vital Wave Consulting Inc.

+

Rafael Pastor,Former Chairman of the Board and CEO, Vistage International

+

Brian Powers, Chairman Emeritus, Hellman & Friedman LLC

+

Jeff Rector '97, Partner, Sheppard Mullin Richter & Hampton

+

Jeremiah Robins,Chairman andCEO, Great Pond Management Co. LLC

+

Donald J. Rosenberg, Executive Vice President, General Counsel and + Corporate Secretary, Qualcomm Inc.

+
    +
  1. Sachio Semmoto, Chairman, RENOVA Inc.
  2. +
  3. Andrew (Drew) E. Senyei,Managing Director, Enterprise Partners Venture Capital
  4. +
  5. Richard N. Sinkin, General Partner, InterAmerican Group
  6. +
  7. Kwan L. So, President, EVG Enterprises Inc.
  8. +
  9. Ricardo Tavares, CEO, TechPolis
  10. +
  11. Vice Admiral Robert Thomas, Jr., U.S. Navy (retired)
  12. +
  13. Manuel Weinberg, President, Finteco
  14. +
  15. Yiru Zhou '93, Vice President of China Operations, Qualcomm Technologies Inc.
  16. +
  17. Eric Zwisler, Chairman, Cardinal Health China
  18. +
+
+

Emeritus Members

+
+
    +
  • Mr. Nicholas B. Binkley
  • +
  • Mrs. Frances Hesselbein, Chair, Leader to Leader Institute
  • +
  • Ms. Lucy L. Killea '75, California State Senator (Retired)
  • +
  • Mrs. Susan Lew, President, S. Lew & Associates
  • +
  • Mr. Lawrence B. Robinson, President, La Jolla Investment Co., LLC
  • +
  • Mr. Hans W. Schoepflin, President, Panta Rhea Foundation
  • +
  • Mr. R. B. Woolley, Jr., President, Girard Capital
  • +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + +
+ +
+
+ +
+ +

Contact Us

+ +

Department of Web Development

+ +
    + +
  • +
    + +
    + +
    + +
    +

    9500 Gilman Dr.
    La Jolla, CA 92093-5785

    +
    + +
    +
  • + + +
  • +
    +
    + +
    + +
    +

    (858) 765-4321

    +
    + +
    +
  • + + +
  • +
    +
    + +
    + +
    +

    (858) 765-4322

    +
    + +
    +
  • + + +
  • +
    +
    + +
    + + +
    +
  • + + + +
+
+ +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/templates/profile-test.html b/app/templates/profile-test.html new file mode 100644 index 0000000..ac2490c --- /dev/null +++ b/app/templates/profile-test.html @@ -0,0 +1,268 @@ + + + + Blank Slate Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+ +
+

Blank Slate Template

+

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

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

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/templates/three-column.html b/app/templates/three-column.html new file mode 100644 index 0000000..0ddd2e7 --- /dev/null +++ b/app/templates/three-column.html @@ -0,0 +1,321 @@ + + + + Thre Column Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +
+ +

Headline

+ +

Aenean ac metus enim. Proin auctor sed ex sit amet vehicula. In mattis vitae ante vel viverra. Aenean interdum sollicitudin sapien, vel fermentum diam ornare vitae.

+ +
+ + +
+ + +

Sample Content

+
+ +

This is a third column

+ +
    +
  • Coffee
  • +
  • Tea
  • +
  • Milk
  • +
+ +
+ +
+ + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/templates/two-column.html b/app/templates/two-column.html new file mode 100755 index 0000000..a243af5 --- /dev/null +++ b/app/templates/two-column.html @@ -0,0 +1,747 @@ + + + + Two Column Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to main content +
+ + +
+ +
+
+ + + + + + + + + + +
+ +
+
+ +
+
+ +
+
+
+ +

Headline

+ +

Aenean ac metus enim. Proin auctor sed ex sit amet vehicula. In mattis vitae this is a link test ante vel viverra. Aenean interdum sollicitudin sapien, vel fermentum diam ornare vitae.

+ +
+
+
+ +
+

Full Width Module

+

+ The UC San Diego School of Global Policy and Strategy (GPS) addresses the crucial societal + challenges of the 21st century. The School's pioneering research builds on internationally + recognized expertise of the Americas and Asia, integrates analysis of public policy and + markets, and explores global issues of conflict and cooperation. +

+ Learn More +
+ +
+
+
+ + +
+
+
+
+

Who We Are

+

+ We are a true global society of faculty, staff, students and + community partners dedicated to the advancement of knowledge + through education and research — all with an eye on building a + Pacific community. The school is anchored in the reputation and + successes of UC San Diego and the University of California + system. +

+
+ +
+
+ School of Global Policy & Strategy +
+
+
+
+
+ + + +
+
+
+

Our History

+
+
+
+
+
+

+ While our School stands among the world’s top graduate schools of + international relations and is the established leader in its focus + on Asia and the Americas, this is only part of the story. It is also + anchored in the reputation and successes of the University of + California, San Diego and the University of California system as a whole.

+

+ We are the public policy leader at one of the nation’s most + accomplished universities, with an integrated faculty from the + well-recognized UC San Diego fields of international relations, political + science and economics, where professors are among the top 10 in the + country in their respective disciplines. We have the sixth largest + research and development budget among American universities, and we have + many Nobel Prize laureates. We are proud to be ranked as the number one + college in the nation for the fifth consecutive year based on research, + civic engagement and social mobility. + + See our Accomplishments + +

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

Staff

+

+ Our staff is dedicated to supporting faculty, students and friends of + the School with valuable, innovative, and timely services. They are + committed to the goal of attracting, developing and retaining a + diverse and outstanding faculty. Discover the listing of + departments and staff members. +

+
+ +
+
+ School of Global Policy & Strategy Staff +
+
+
+
+
+ + + +
+
+
+
+
+
+

Small Inset

+

+ While our School stands among the world’s top graduate schools of + international relations and is the established leader in its focus + on Asia and the Americas, this is only part of the story. +

+

Learn More +

+
+
+
+
+
+
+ + + +
+
+
+
+
+ School of Global Policy & Strategy Faculty +
+
+ +
+

Faculty

+

+ Students have unmatched access to internationally renowned + faculty who integrate rigorous scholarship with an enthusiasm for + teaching and active engagement in and out of the classroom. Learn more + about the range and depth of their vast + research interests today. +

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

Full text Width Module

+

+ The International Advisory Board was formed in 1986 to aid the dean in + achieving the vision and mission of the School. Members provide counsel on + current issues that affect our role as an established leader in the region. + A list of current and emeritus members is listed below. +

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

2016–17 Members

+
+

William A. Bold, Senior Vice President, Government Affairs, Qualcomm Inc.

+

Kurt M. Campbell, Founding Partner, Chairman and CEO, The Asia Group

+

Carlos Casasus, Director General, Corporacion Universitaria para + el Desarollo de Internet, A.C. (CUDI)

+

M. Javade Chaudhri, Partner, Jones Day

+

Kathryn J. Colllier, Vice President and Treasurer, Sempra Energy

+

Shawn Covell, MAS-IA ’12, Vice President of Communication and Devices + Group and Director of Technology Advocacy and Spectrum Strategy,Intel Corp.

+

Peter Cowhey, Interim Executive Vice Chancellor for Academic Affairs and + Qualcomm Professor of Communications and Technology Policy, UC San Diego

+

Ambassador Diana Lady Dougan,Senior Advisor, Center for Strategic and + International Studies

+

Phyllis Epstein, Community Volunteer

+

Aaron Feldman, President, Sunroad Enterprises

+

Gordon Hanson, Acting Dean and Director of Center on GlobalTransformation,GPS

+

Robert (Bob) Hormats,Vice Chairman, Kissinger Associates Inc.

+

Bill Huang,CEO, CloudMinds

+

Aaron Jacobson '08, Materials Manager, United Technologies Aerospace + Systems; President, GPS Alumni Board

+

James (Jim) D. Jameson, President, LIDCO Inc.

+

James Lambright,Former Chairman and CEO,U.S. Export-Import Bank

+

Zhong Yuan Li, Chairman, China HealthCare Holdings Ltd.

+

Ron Mannix, Chairman,Coril Holdings Ltd.

+

David Michael,Senior Advisor, Boston Consulting Group

+

Diana Villiers Negroponte, Public Policy Scholar, Woodrow Wilson + International Center

+

Henry (Hank) Nordhoff, Chairman and CEO, Banyan Biomarkers

+

Kyota Omori, Chairman, Mitsubishi Research Institute Inc.

+

Scott Park ’90, President and CEO, Doosan Infracore Construction Equipment

+

Brooke Partridge '91, CEO and Founder, Vital Wave Consulting Inc.

+

Rafael Pastor,Former Chairman of the Board and CEO, Vistage International

+

Brian Powers, Chairman Emeritus, Hellman & Friedman LLC

+

Jeff Rector '97, Partner, Sheppard Mullin Richter & Hampton

+

Jeremiah Robins,Chairman andCEO, Great Pond Management Co. LLC

+

Donald J. Rosenberg, Executive Vice President, General Counsel and + Corporate Secretary, Qualcomm Inc.

+
    +
  1. Sachio Semmoto, Chairman, RENOVA Inc.
  2. +
  3. Andrew (Drew) E. Senyei,Managing Director, Enterprise Partners Venture Capital
  4. +
  5. Richard N. Sinkin, General Partner, InterAmerican Group
  6. +
  7. Kwan L. So, President, EVG Enterprises Inc.
  8. +
  9. Ricardo Tavares, CEO, TechPolis
  10. +
  11. Vice Admiral Robert Thomas, Jr., U.S. Navy (retired)
  12. +
  13. Manuel Weinberg, President, Finteco
  14. +
  15. Yiru Zhou '93, Vice President of China Operations, Qualcomm Technologies Inc.
  16. +
  17. Eric Zwisler, Chairman, Cardinal Health China
  18. +
+
+

Emeritus Members

+
+
    +
  • Mr. Nicholas B. Binkley
  • +
  • Mrs. Frances Hesselbein, Chair, Leader to Leader Institute
  • +
  • Ms. Lucy L. Killea '75, California State Senator (Retired)
  • +
  • Mrs. Susan Lew, President, S. Lew & Associates
  • +
  • Mr. Lawrence B. Robinson, President, La Jolla Investment Co., LLC
  • +
  • Mr. Hans W. Schoepflin, President, Panta Rhea Foundation
  • +
  • Mr. R. B. Woolley, Jr., President, Girard Capital
  • +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + +
+ +
+
+ +
+ +

Contact Us

+ +

Department of Web Development

+ +
    + +
  • +
    + +
    + +
    + +
    +

    9500 Gilman Dr.
    La Jolla, CA 92093-5785

    +
    + +
    +
  • + + +
  • +
    +
    + +
    + +
    +

    (858) 765-4321

    +
    + +
    +
  • + + +
  • +
    +
    + +
    + +
    +

    (858) 765-4322

    +
    + +
    +
  • + + +
  • +
    +
    + +
    + + +
    +
  • + + + +
+
+ +
+ +
+ +
+
+
+ + + + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+
+
+

+ UC San Diego 9500 Gilman Dr. La Jolla, CA 92093 (858) 534-2230 +
+ + Copyright © Regents of the University of California. + All rights reserved. + +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/vendor/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js b/app/vendor/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js new file mode 100755 index 0000000..6918463 --- /dev/null +++ b/app/vendor/bootstrap-hover-dropdown/bootstrap-hover-dropdown.min.js @@ -0,0 +1,12 @@ +/** + * @preserve + * Project: Bootstrap Hover Dropdown + * Author: Cameron Spear + * Version: v2.2.1 + * Contributors: Mattia Larentis + * Dependencies: Bootstrap's Dropdown plugin, jQuery + * Description: A simple plugin to enable Bootstrap dropdowns to active on hover and provide a nice user experience. + * License: MIT + * Homepage: http://cameronspear.com/blog/bootstrap-dropdown-on-hover-plugin/ + */ +!function(e,n){var o=e();e.fn.dropdownHover=function(t){return"ontouchstart"in document?this:(o=o.add(this.parent()),this.each(function(){function r(){d.parents(".navbar").find(".navbar-toggle").is(":visible")||(n.clearTimeout(a),n.clearTimeout(i),i=n.setTimeout(function(){o.find(":focus").blur(),v.instantlyCloseOthers===!0&&o.removeClass("open"),n.clearTimeout(i),d.attr("aria-expanded","true"),s.addClass("open"),d.trigger(h)},v.hoverDelay))}var a,i,d=e(this),s=d.parent(),u={delay:500,hoverDelay:0,instantlyCloseOthers:!0},l={delay:e(this).data("delay"),hoverDelay:e(this).data("hover-delay"),instantlyCloseOthers:e(this).data("close-others")},h="show.bs.dropdown",c="hide.bs.dropdown",v=e.extend(!0,{},u,t,l);s.hover(function(e){return s.hasClass("open")||d.is(e.target)?void r(e):!0},function(){n.clearTimeout(i),a=n.setTimeout(function(){d.attr("aria-expanded","false"),s.removeClass("open"),d.trigger(c)},v.delay)}),d.hover(function(e){return s.hasClass("open")||s.is(e.target)?void r(e):!0}),s.find(".dropdown-submenu").each(function(){var o,t=e(this);t.hover(function(){n.clearTimeout(o),t.children(".dropdown-menu").show(),t.siblings().children(".dropdown-menu").hide()},function(){var e=t.children(".dropdown-menu");o=n.setTimeout(function(){e.hide()},v.delay)})})}))},e(document).ready(function(){e('[data-hover="dropdown"]').dropdownHover()})}(jQuery,window); \ No newline at end of file diff --git a/app/vendor/bootstrap-maxlength/bootstrap-maxlength.js b/app/vendor/bootstrap-maxlength/bootstrap-maxlength.js new file mode 100755 index 0000000..87f73b3 --- /dev/null +++ b/app/vendor/bootstrap-maxlength/bootstrap-maxlength.js @@ -0,0 +1,535 @@ +(function ($) { + 'use strict'; + /** + * We need an event when the elements are destroyed + * because if an input is removed, we have to remove the + * maxlength object associated (if any). + * From: + * http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom + */ + if (!$.event.special.destroyed) { + $.event.special.destroyed = { + remove: function (o) { + if (o.handler) { + o.handler(); + } + } + }; + } + + + $.fn.extend({ + maxlength: function (options, callback) { + var documentBody = $('body'), + defaults = { + showOnReady: false, // true to always show when indicator is ready + alwaysShow: false, // if true the indicator it's always shown. + threshold: 10, // Represents how many chars left are needed to show up the counter + warningClass: 'label label-success', + limitReachedClass: 'label label-important label-danger', + separator: ' / ', + preText: '', + postText: '', + showMaxLength: true, + placement: 'bottom', + message: null, // an alternative way to provide the message text + showCharsTyped: true, // show the number of characters typed and not the number of characters remaining + validate: false, // if the browser doesn't support the maxlength attribute, attempt to type more than + // the indicated chars, will be prevented. + utf8: false, // counts using bytesize rather than length. eg: '£' is counted as 2 characters. + appendToParent: false, // append the indicator to the input field's parent instead of body + twoCharLinebreak: true, // count linebreak as 2 characters to match IE/Chrome textarea validation. As well as DB storage. + customMaxAttribute: null, // null = use maxlength attribute and browser functionality, string = use specified attribute instead. + allowOverMax: false + // Form submit validation is handled on your own. when maxlength has been exceeded 'overmax' class added to element + }; + + if ($.isFunction(options) && !callback) { + callback = options; + options = {}; + } + options = $.extend(defaults, options); + + + /** + * Return the byte count of the specified character in UTF8 encoding. + * Note: This won't cover UTF-8 characters that are 4 bytes long. + * + * @param input + * @return {number} + */ + function utf8CharByteCount(character) { + var c = character.charCodeAt(); + // Not c then 0, else c < 128 then 1, else c < 2048 then 2, else 3 + return !c ? 0 : c < 128 ? 1 : c < 2048 ? 2 : 3; + } + + /** + * Return the length of the specified input in UTF8 encoding. + * + * @param input + * @return {number} + */ + function utf8Length(string) { + return string.split("") + .map(utf8CharByteCount) + // Prevent reduce from throwing an error if the string is empty. + .concat(0) + .reduce(function(sum, val) { return sum + val; }); + } + + /** + * Return the length of the specified input. + * + * @param input + * @return {number} + */ + function inputLength(input) { + var text = input.val(); + + if (options.twoCharLinebreak) { + // Count all line breaks as 2 characters + text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n'); + } else { + // Remove all double-character (\r\n) linebreaks, so they're counted only once. + text = text.replace(new RegExp('\r?\n', 'g'), '\n'); + } + + var currentLength = 0; + + if (options.utf8) { + currentLength = utf8Length(text); + } else { + currentLength = text.length; + } + return currentLength; + } + + /** + * Truncate the text of the specified input. + * + * @param input + * @param limit + */ + function truncateChars(input, maxlength) { + var text = input.val(); + + if (options.twoCharLinebreak) { + text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n'); + + if (text[text.length - 1] === '\n') { + maxlength -= text.length % 2; + } + } + + if (options.utf8) { + var indexedSize = text.split("").map(utf8CharByteCount); + for ( + var removedBytes = 0, + bytesPastMax = utf8Length(text) - maxlength + ;removedBytes < bytesPastMax + ;removedBytes += indexedSize.pop() + ); + maxlength -= (maxlength - indexedSize.length); + } + + input.val(text.substr(0, maxlength)); + } + + /** + * Return true if the indicator should be showing up. + * + * @param input + * @param threshold + * @param maxlength + * @return {number} + */ + function charsLeftThreshold(input, threshold, maxlength) { + var output = true; + if (!options.alwaysShow && (maxlength - inputLength(input) > threshold)) { + output = false; + } + return output; + } + + /** + * Returns how many chars are left to complete the fill up of the form. + * + * @param input + * @param maxlength + * @return {number} + */ + function remainingChars(input, maxlength) { + var length = maxlength - inputLength(input); + return length; + } + + /** + * When called displays the indicator. + * + * @param indicator + */ + function showRemaining(currentInput, indicator) { + indicator.css({ + display: 'block' + }); + currentInput.trigger('maxlength.shown'); + } + + /** + * When called shows the indicator. + * + * @param indicator + */ + function hideRemaining(currentInput, indicator) { + + if (options.alwaysShow) { + return; + } + + indicator.css({ + display: 'none' + }); + currentInput.trigger('maxlength.hidden'); + } + + /** + * This function updates the value in the indicator + * + * @param maxLengthThisInput + * @param typedChars + * @return String + */ + function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typedChars) { + var output = ''; + if (options.message) { + if (typeof options.message === 'function') { + output = options.message(currentInputText, maxLengthThisInput); + } else { + output = options.message.replace('%charsTyped%', typedChars) + .replace('%charsRemaining%', maxLengthThisInput - typedChars) + .replace('%charsTotal%', maxLengthThisInput); + } + } else { + if (options.preText) { + output += options.preText; + } + if (!options.showCharsTyped) { + output += maxLengthThisInput - typedChars; + } + else { + output += typedChars; + } + if (options.showMaxLength) { + output += options.separator + maxLengthThisInput; + } + if (options.postText) { + output += options.postText; + } + } + return output; + } + + /** + * This function updates the value of the counter in the indicator. + * Wants as parameters: the number of remaining chars, the element currently managed, + * the maxLength for the current input and the indicator generated for it. + * + * @param remaining + * @param currentInput + * @param maxLengthCurrentInput + * @param maxLengthIndicator + */ + function manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator) { + if (maxLengthIndicator) { + maxLengthIndicator.html(updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, (maxLengthCurrentInput - remaining))); + + if (remaining > 0) { + if (charsLeftThreshold(currentInput, options.threshold, maxLengthCurrentInput)) { + showRemaining(currentInput, maxLengthIndicator.removeClass(options.limitReachedClass).addClass(options.warningClass)); + } else { + hideRemaining(currentInput, maxLengthIndicator); + } + } else { + showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass).addClass(options.limitReachedClass)); + } + } + + if (options.customMaxAttribute) { + // class to use for form validation on custom maxlength attribute + if (remaining < 0) { + currentInput.addClass('overmax'); + } else { + currentInput.removeClass('overmax'); + } + } + } + + /** + * This function returns an object containing all the + * informations about the position of the current input + * + * @param currentInput + * @return object {bottom height left right top width} + * + */ + function getPosition(currentInput) { + var el = currentInput[0]; + return $.extend({}, (typeof el.getBoundingClientRect === 'function') ? el.getBoundingClientRect() : { + width: el.offsetWidth, + height: el.offsetHeight + }, currentInput.offset()); + } + + /** + * This function places the maxLengthIndicator based on placement config object. + * + * @param {object} placement + * @param {$} maxLengthIndicator + * @return null + * + */ + function placeWithCSS(placement, maxLengthIndicator) { + if (!placement || !maxLengthIndicator){ + return; + } + + var POSITION_KEYS = [ + 'top', + 'bottom', + 'left', + 'right', + 'position' + ]; + + var cssPos = {}; + + // filter css properties to position + $.each(POSITION_KEYS, function (i, key) { + var val = options.placement[key]; + if (typeof val !== 'undefined'){ + cssPos[key] = val; + } + }); + + maxLengthIndicator.css(cssPos); + + return; + } + + + /** + * This function places the maxLengthIndicator at the + * top / bottom / left / right of the currentInput + * + * @param currentInput + * @param maxLengthIndicator + * @return null + * + */ + function place(currentInput, maxLengthIndicator) { + var pos = getPosition(currentInput); + + // Supports custom placement handler + if ($.type(options.placement) === 'function'){ + options.placement(currentInput, maxLengthIndicator, pos); + return; + } + + // Supports custom placement via css positional properties + if ($.isPlainObject(options.placement)){ + placeWithCSS(options.placement, maxLengthIndicator); + return; + } + + var inputOuter = currentInput.outerWidth(), + outerWidth = maxLengthIndicator.outerWidth(), + actualWidth = maxLengthIndicator.width(), + actualHeight = maxLengthIndicator.height(); + + // get the right position if the indicator is appended to the input's parent + if (options.appendToParent) { + pos.top -= currentInput.parent().offset().top; + pos.left -= currentInput.parent().offset().left; + } + + switch (options.placement) { + case 'bottom': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 }); + break; + case 'top': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 }); + break; + case 'left': + maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth }); + break; + case 'right': + maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }); + break; + case 'bottom-right': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width }); + break; + case 'top-right': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter }); + break; + case 'top-left': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left - outerWidth }); + break; + case 'bottom-left': + maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left - outerWidth }); + break; + case 'centered-right': + maxLengthIndicator.css({ top: pos.top + (actualHeight / 2), left: pos.left + inputOuter - outerWidth - 3 }); + break; + + // Some more options for placements + case 'bottom-right-inside': + maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width - outerWidth }); + break; + case 'top-right-inside': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter - outerWidth }); + break; + case 'top-left-inside': + maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left }); + break; + case 'bottom-left-inside': + maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left }); + break; + } + } + + /** + * This function returns true if the indicator position needs to + * be recalculated when the currentInput changes + * + * @return {boolean} + * + */ + function isPlacementMutable() { + return options.placement === 'bottom-right-inside' || options.placement === 'top-right-inside' || typeof options.placement === 'function' || (options.message && typeof options.message === 'function'); + } + + /** + * This function retrieves the maximum length of currentInput + * + * @param currentInput + * @return {number} + * + */ + function getMaxLength(currentInput) { + var max = currentInput.attr('maxlength') || options.customMaxAttribute; + + if (options.customMaxAttribute && !options.allowOverMax) { + var custom = currentInput.attr(options.customMaxAttribute); + if (!max || custom < max) { + max = custom; + } + } + + if (!max) { + max = currentInput.attr('size'); + } + return max; + } + + return this.each(function () { + + var currentInput = $(this), + maxLengthCurrentInput, + maxLengthIndicator; + + $(window).resize(function () { + if (maxLengthIndicator) { + place(currentInput, maxLengthIndicator); + } + }); + + function firstInit() { + var maxlengthContent = updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, '0'); + maxLengthCurrentInput = getMaxLength(currentInput); + + if (!maxLengthIndicator) { + maxLengthIndicator = $('').css({ + display: 'none', + position: 'absolute', + whiteSpace: 'nowrap', + zIndex: 1099 + }).html(maxlengthContent); + } + + // We need to detect resizes if we are dealing with a textarea: + if (currentInput.is('textarea')) { + currentInput.data('maxlenghtsizex', currentInput.outerWidth()); + currentInput.data('maxlenghtsizey', currentInput.outerHeight()); + + currentInput.mouseup(function () { + if (currentInput.outerWidth() !== currentInput.data('maxlenghtsizex') || currentInput.outerHeight() !== currentInput.data('maxlenghtsizey')) { + place(currentInput, maxLengthIndicator); + } + + currentInput.data('maxlenghtsizex', currentInput.outerWidth()); + currentInput.data('maxlenghtsizey', currentInput.outerHeight()); + }); + } + + if (options.appendToParent) { + currentInput.parent().append(maxLengthIndicator); + currentInput.parent().css('position', 'relative'); + } else { + documentBody.append(maxLengthIndicator); + } + + var remaining = remainingChars(currentInput, getMaxLength(currentInput)); + manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator); + place(currentInput, maxLengthIndicator); + } + + if (options.showOnReady) { + currentInput.ready(function () { + firstInit(); + }); + } else { + currentInput.focus(function () { + firstInit(); + }); + } + + currentInput.on('maxlength.reposition', function () { + place(currentInput, maxLengthIndicator); + }); + + + currentInput.on('destroyed', function () { + if (maxLengthIndicator) { + maxLengthIndicator.remove(); + } + }); + + currentInput.on('blur', function () { + if (maxLengthIndicator && !options.showOnReady) { + maxLengthIndicator.remove(); + } + }); + + currentInput.on('input', function () { + var maxlength = getMaxLength(currentInput), + remaining = remainingChars(currentInput, maxlength), + output = true; + + if (options.validate && remaining < 0) { + truncateChars(currentInput, maxlength); + output = false; + } else { + manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator); + } + + if (isPlacementMutable()) { + place(currentInput, maxLengthIndicator); + } + + return output; + }); + }); + } + }); +}(jQuery)); \ No newline at end of file diff --git a/app/vendor/bootstrap/CHANGELOG.md b/app/vendor/bootstrap/CHANGELOG.md new file mode 100644 index 0000000..a18bae0 --- /dev/null +++ b/app/vendor/bootstrap/CHANGELOG.md @@ -0,0 +1,210 @@ +# Changelog + +## 3.3.7 + +* Allows jQuery 3.x in bower.json. [#1048](https://github.com/twbs/bootstrap-sass/issues/1048) +* Adds the `style` and `sass` fields to package.json. [#1045](https://github.com/twbs/bootstrap-sass/issues/1045) +* Adds Eyeglass support. [#1007](https://github.com/twbs/bootstrap-sass/pull/1007) + +## 3.3.6 + +* Bumps Sass dependency to 3.3.4+ to avoid compatibility issues with @at-root. +* Bumps node-sass dependency to ~3.4.2 for Node.js v5 compatibility. [#986](https://github.com/twbs/bootstrap-sass/issues/986) +* Fixes breadcrumb content issues on libsass. [#919](https://github.com/twbs/bootstrap-sass/issues/919) +* Fixes a Rails 5 compatibility issue. [#965](https://github.com/twbs/bootstrap-sass/pull/965) + +Framework version: Bootstrap **v3.3.6** + +## 3.3.5 + +Fix for standalone Compass extension compatibility. [#914](https://github.com/twbs/bootstrap-sass/issues/914) + +Framework version: Bootstrap **v3.3.5** + +## 3.3.4 + +No Sass-specific changes. + +Framework version: Bootstrap **v3.3.4** + +## 3.3.3 + +This is a re-packaged release of 3.3.2.1 (v3.3.2+1). + +Versions are now strictly semver. +The PATCH version may be ahead of the upstream. + +Framework version: Bootstrap **v3.3.2**. + +## 3.3.2.1 + +* Fix glyphicons regression (revert 443d5b49eac84aec1cb2f8ea173554327bfc8c14) + +## 3.3.2.0 + +* Autoprefixer is now required, and `autoprefixer-rails` is now a dependency for the ruby gem. [#824](https://github.com/twbs/bootstrap-sass/issues/824) +* Minimum precision reduced from 10 to 8 [#821](https://github.com/twbs/bootstrap-sass/issues/821) +* Requiring bootstrap JS from npm now works [#812](https://github.com/twbs/bootstrap-sass/issues/812) +* Fix Sass 3.4.x + IE10 compatibility issue [#803](https://github.com/twbs/bootstrap-sass/issues/803) +* Provide minified JS bundle [#777](https://github.com/twbs/bootstrap-sass/issues/777) +* Bower package is now at bootstrap-sass [#813](https://github.com/twbs/bootstrap-sass/issues/813) + + +## 3.3.1.0 + +* Variables override template at templates/project/_bootstrap-variables.sass +* Readme: Bower + Rails configuration + +## 3.3.0.1 + +* Fix loading issue with the ruby gem version + +## 3.3.0 + +* Improve libsass compatibility +* Support using Bower package with Rails + +## 3.2.0.2 + +Main bootstrap file is now a partial (_bootstrap.scss), for compatibility with Compass 1+. + +Fixed a number of bugs. [Issues closed in v3.2.0.2](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.2). + +## 3.2.0.1 + +Fixed a number of bugs: [Issues closed in v3.2.0.1](https://github.com/twbs/bootstrap-sass/issues?q=is%3Aissue+is%3Aclosed+milestone%3Av3.2.0.1). + +## 3.2.0.0 + +- Assets (Sass, JS, fonts) moved from `vendor/assets` to `assets`. `bootstrap.js` now contains concatenated JS. +- Compass generator now copies JS and fonts, and provides a better default `styles.sass`. +- Compass, Sprockets, and Mincer asset path helpers are now provided in pure Sass: `bootstrap-compass`, `bootstrap-sprockets`, and `bootstrap-mincer`. +Asset path helpers must be imported before `bootstrap`, more in Readme. +- Sprockets / Mincer JS manifest has been moved to `bootstrap-sprockets.js`. +It can be required without adding Bootstrap JS directory to load path, as it now uses relative paths. +- Sprockets: `depend_on_asset` (`glyphicons.scss`) has been changed to `depend_on` to work around an issue with `depend_on_asset`. +[More information](https://github.com/twbs/bootstrap-sass/issues/592#issuecomment-46570286). + +## 3.1.1.0 + +- Updated Bower docs + +## 3.1.0.2 + +- #523: Rails 3.2 compatibility +- Bugfixes from upstream up to 7eb532262fbd1112215b5a547b9285794b5360ab. + +## 3.1.0.1 + +- #518: `scale` mixin Sass compatibility issue + +## 3.1.0.0 + +* compiles with libsass master + +## 3.0.2.1 + +* fix vendor paths for compass + +## 3.0.0.0 + +* Fully automated (lots of string juggling) LESS -> Sass conversion. - *Gleb Mazovetskiy* +* Ported rake task from vwall/compass-twitter-bootstrap to convert Bootstrap upstream - *Peter Gumeson* +* Moved javascripts to us `bootstrap-component.js` to `bootstrap/component.js` - *Peter Gumeson* + +## 2.3.2.2 + +* Allow sass-rails `>= 3.2` - *Thomas McDonald* + +## 2.3.2.1 + +## 2.3.2.0 + +* Update to Bootstrap 2.3.2 - *Dan Allen* + +## 2.3.1.3 + +* Find the correct Sprockets context for the `image_path` function - *Tristan Harward, Gleb Mazovetskiy* + +## 2.3.1.2 + +* Fix changes to image url - *Gleb Mazovetskiy* +* Copy _variables into project on Compass install - *Phil Thompson* +* Add `bootstrap-affix` to the Compass template file - *brief* + +## 2.3.1.1 (yanked) + +* Change how image_url is handled internally - *Tristan Harward* +* Fix some font variables not having `!default` - *Thomas McDonald* + +## 2.3.0.0 +* [#290] Update to Bootstrap 2.3.0 - *Tristan Harward* +* Fix `rake:debug` with new file locations - *Thomas McDonald* +* Add draft contributing document - *Thomas McDonald* +* [#260] Add our load path to the global Sass load path - *Tristan Harward* +* [#275] Use GitHub notation in Sass head testing gemfile - *Timo Schilling* +* [#279, #283] Readme improvements - *theverything, Philip Arndt* + +## 2.2.2.0 +* [#270] Update to Bootstrap 2.2.2 - *Tristan Harward* +* [#266] Add license to gemspec - *Peter Marsh* + +## 2.2.1.1 +* [#258] Use `bootstrap` prefix for `@import`ing files in `bootstrap/bootstrap.scss` - *Umair Siddique* + +## 2.2.1.0 +* [#246] Update to Bootstrap 2.2.1 - *Tristan Harward* +* [#246] Pull Bootstrap updates from jlong/sass-twitter-bootstrap - *Tristan Harward* + +## 2.1.1.0 +* Update to Bootstrap 2.1.1 +* [#222] Remove 100% multiplier in vertical-three-colours +* [#227] Fix IE component animation collapse +* [#228] Fix variables documentation link +* [#231] Made .input-block-level a class as well as mixin + +## 2.1.0.1 +* [#219] Fix expected a color. Got: transparent. +* [#207] Add missing warning style for table row highlighting +* [#208] Use grid-input-span for input spans + +## 2.1.0.0 +* Updated to Bootstrap 2.1 +* Changed some mixin names to be more consistent. Nested mixins in Less are separated by a `-` when they are flattened in Sass. + +## 2.0.4.1 +* Fix `.row-fluid > spanX` nesting +* Small Javascript fixes for those staying on the 2.0.4 release +* Add `!default` to z-index variables. + +## 2.0.4.0 +* Updated to Bootstrap 2.0.4 +* Switched to Bootstrap 2.0.3+'s method of separating responsive files +* [#149, #150] Fix off by one error introduced with manual revert of media query breakpoints +* `rake debug` and `rake test` both compile bootstrap & bootstrap-responsive + +## 2.0.3.1 +* [#145, #146] Fix button alignment in collapsing navbar as a result of an incorrect variable + +## 2.0.3 +* Updated to Bootstrap 2.0.3 +* [#106] Support for Rails < 3.1 through Compass +* [#132] Add CI testing +* [#106] Support Rails w/Compass +* [#134] Fix support for Rails w/Compass + +## 2.0.2 +* [#86] Updated to Bootstrap 2.0.2 +Things of note: static navbars now have full width. (to be fixed in 2.0.3) `.navbar-inner > .container { width:940px; }` seems to work in the meanwhile +* [#62] Fixed asset compilation taking a *very* long time. +* [#69, #79, #80] \(Hopefully) clarified README. Now with less cat humour. +* [#91] Removed doubled up Sass extensions for Rails. +* [#63, #73] Allow for overriding of image-path +* [[SO](http://stackoverflow.com/a/9909626/241212)] Added makeFluidColumn mixin for defining fluid columns. Fluid rows must use `@extend .row-fluid`, and any column inside it can use `@include makeFluidColumn(num)`, where `num` is the number of columns. Unfortunately, there is a rather major limitation to this: margins on first-child elements must be overriden. See the attached Stack Overflow answer for more information. + +## 2.0.1 +* Updated to Bootstrap 2.0.1 +* Modified `@mixin opacity()` to take an argument `0...1` rather than `0...100` to be consistent with Compass. + +## 2.0.0 +* Updated to Bootstrap 2.0.0 diff --git a/app/vendor/bootstrap/CONTRIBUTING.md b/app/vendor/bootstrap/CONTRIBUTING.md new file mode 100644 index 0000000..246b96d --- /dev/null +++ b/app/vendor/bootstrap/CONTRIBUTING.md @@ -0,0 +1,86 @@ +# Contributing to bootstrap-sass + +## Asset Changes + +Any changes to `bootstrap-sass` assets (scss, javascripts, fonts) should be checked against the `convert` rake task. +For usage instructions, see the [README](/README.md). + +If something is broken in the converter, it's preferable to update the converter along with the asset itself. + + +## Bugs + +A bug is a _demonstrable problem_ that is caused by the code in the +repository. Good bug reports are extremely helpful - thank you! + +Guidelines for bug reports: + +1. **Does it belong here?** — is this a problem with bootstrap-sass, or + it an issue with [twbs/bootstrap](https://github.com/twbs/bootstrap)? + We only distribute a direct port and will not modify files if they're not + changed upstream. + +2. **Use the GitHub issue search** — check if the issue has already been + reported. + +3. **Isolate the problem** — ideally create a [reduced test + case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. + +A good bug report shouldn't leave others needing to chase you up for more +information. Please try to be as detailed as possible in your report. What is +your environment? What steps will reproduce the issue? What browser(s) and OS +experience the problem? What would you expect to be the outcome? All these +details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If +> suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` (a link to the reduced test case) +> +> Any other information you want to share that is relevant to the issue being +> reported. This might include the lines of code that you have identified as +> causing the bug, and potential solutions (and your opinions on their +> merits). + +**[File a bug report](https://github.com/twbs/bootstrap-sass/issues/)** + + +## Pull requests + +**We will not accept pull requests that modify the SCSS beyond fixing bugs caused by *our* code!** + +We use a [converter script][converter-readme] to automatically convert upstream bootstrap, written in LESS, to Sass. + +Issues related to styles or javascript but unrelated to the conversion process should go to [twbs/bootstrap][upstream]. + +Pull requests that fix bugs caused by our code should not modify the SCSS directly, but should patch the converter instead. + +Good pull requests - patches, improvements, new features - are a fantastic +help. They should remain focused in scope and avoid containing unrelated +commits. If your contribution involves a significant amount of work or substantial +changes to any part of the project, please open an issue to discuss it first. + +Make sure to adhere to the coding conventions used throughout a project +(indentation, accurate comments, etc.). Please update any documentation that is +relevant to the change you're making. + +## Do not… + +Please **do not** use the issue tracker for personal support requests (use +[Stack Overflow](http://stackoverflow.com/)). + +Please **do not** derail or troll issues. Keep the +discussion on topic and respect the opinions of others. + +*props [html5-boilerplate](https://github.com/h5bp/html5-boilerplate/blob/master/CONTRIBUTING.md)* + +[upstream]: https://github.com/twbs/bootstrap +[converter-readme]: https://github.com/twbs/bootstrap-sass/blob/master/README.md#upstream-converter diff --git a/app/vendor/bootstrap/Gemfile b/app/vendor/bootstrap/Gemfile new file mode 100644 index 0000000..38da900 --- /dev/null +++ b/app/vendor/bootstrap/Gemfile @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +gemspec + +# Compass for the dummy app +gem 'compass', require: false + +group :development do + gem 'byebug', platforms: [:mri_21, :mri_22], require: false +end diff --git a/app/vendor/bootstrap/LICENSE b/app/vendor/bootstrap/LICENSE new file mode 100644 index 0000000..a3827b5 --- /dev/null +++ b/app/vendor/bootstrap/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2011-2016 Twitter, Inc +Copyright (c) 2011-2016 The Bootstrap Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/app/vendor/bootstrap/README.md b/app/vendor/bootstrap/README.md new file mode 100644 index 0000000..685a7da --- /dev/null +++ b/app/vendor/bootstrap/README.md @@ -0,0 +1,390 @@ +# Bootstrap for Sass +[![Gem Version](https://badge.fury.io/rb/bootstrap-sass.svg)](http://badge.fury.io/rb/bootstrap-sass) +[![npm version](https://img.shields.io/npm/v/bootstrap-sass.svg?style=flat)](https://www.npmjs.com/package/bootstrap-sass) +[![Bower Version](https://badge.fury.io/bo/bootstrap-sass.svg)](http://badge.fury.io/bo/bootstrap-sass) +[![Build Status](https://img.shields.io/travis/twbs/bootstrap-sass.svg)](https://travis-ci.org/twbs/bootstrap-sass) + +`bootstrap-sass` is a Sass-powered version of [Bootstrap](https://github.com/twbs/bootstrap) 3, ready to drop right into your Sass powered applications. + +This is Bootstrap 3. For Bootstrap 4 use the [Bootstrap Ruby gem](http://github.com/twbs/bootstrap-rubygem) if you use Ruby, and the [main repo](http://github.com/twbs/bootstrap) otherwise. + +## Installation + +Please see the appropriate guide for your environment of choice: + +* [Ruby on Rails](#a-ruby-on-rails). +* [Compass](#b-compass-without-rails) not on Rails. +* [Bower](#c-bower). +* [npm / Node.js](#d-npm--nodejs). + +### a. Ruby on 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. + +```ruby +gem 'bootstrap-sass', '~> 3.3.6' +gem 'sass-rails', '>= 3.2' +``` + +`bundle install` and restart your server to make the files available through the pipeline. + +Import Bootstrap styles in `app/assets/stylesheets/application.scss`: + +```scss +// "bootstrap-sprockets" must be imported before "bootstrap" and "bootstrap/variables" +@import "bootstrap-sprockets"; +@import "bootstrap"; +``` + +`bootstrap-sprockets` must be imported before `bootstrap` for the icon fonts to work. + +Make sure the file has `.scss` extension (or `.sass` for Sass syntax). If you have just generated a new Rails app, +it may come with a `.css` file instead. If this file exists, it will be served instead of Sass, so rename it: + +```console +$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss +``` + +Then, remove all the `*= require_self` and `*= require_tree .` statements from the sass file. Instead, use `@import` to import Sass files. + +Do not use `*= require` in Sass or your other stylesheets will not be [able to access][antirequire] the Bootstrap mixins or variables. + +Require Bootstrap Javascripts in `app/assets/javascripts/application.js`: + +```js +//= require jquery +//= require bootstrap-sprockets +``` + +`bootstrap-sprockets` and `bootstrap` [should not both be included](https://github.com/twbs/bootstrap-sass/issues/829#issuecomment-75153827) in `application.js`. + +`bootstrap-sprockets` provides individual Bootstrap Javascript files (`alert.js` or `dropdown.js`, for example), while +`bootstrap` provides a concatenated file containing all Bootstrap Javascripts. + +#### Bower with Rails + +When using [bootstrap-sass Bower package](#c-bower) instead of the gem in Rails, configure assets in `config/application.rb`: + +```ruby +# Bower asset paths +root.join('vendor', 'assets', 'bower_components').to_s.tap do |bower_path| + config.sass.load_paths << bower_path + config.assets.paths << bower_path +end +# Precompile Bootstrap fonts +config.assets.precompile << %r(bootstrap-sass/assets/fonts/bootstrap/[\w-]+\.(?:eot|svg|ttf|woff2?)$) +# Minimum Sass number precision required by bootstrap-sass +::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max +``` + +Replace Bootstrap `@import` statements in `application.scss` with: + +```scss +$icon-font-path: "bootstrap-sass/assets/fonts/bootstrap/"; +@import "bootstrap-sass/assets/stylesheets/bootstrap-sprockets"; +@import "bootstrap-sass/assets/stylesheets/bootstrap"; +``` + +Replace Bootstrap `require` directive in `application.js` with: + +```js +//= require bootstrap-sass/assets/javascripts/bootstrap-sprockets +``` + +#### Rails 4.x + +Please make sure `sprockets-rails` is at least v2.1.4. + +#### Rails 3.2.x + +bootstrap-sass is no longer compatible with Rails 3. The latest version of bootstrap-sass compatible with Rails 3.2 is v3.1.1.0. + +### b. Compass without Rails + +Install the gem: + +```console +$ gem install bootstrap-sass +``` + +If you have an existing Compass project: + +1. Require `bootstrap-sass` in `config.rb`: + + ```ruby + require 'bootstrap-sass' + ``` + +2. Install Bootstrap with: + + ```console + $ bundle exec compass install bootstrap -r bootstrap-sass + ``` + +If you are creating a new Compass project, you can generate it with bootstrap-sass support: + +```console +$ bundle exec compass create my-new-project -r bootstrap-sass --using bootstrap +``` + +or, alternatively, if you're not using a Gemfile for your dependencies: + +```console +$ compass create my-new-project -r bootstrap-sass --using bootstrap +``` + +This will create a new Compass project with the following files in it: + +* [styles.sass](/templates/project/styles.sass) - main project Sass file, imports Bootstrap and variables. +* [_bootstrap-variables.sass](/templates/project/_bootstrap-variables.sass) - all of Bootstrap variables, override them here. + +Some bootstrap-sass mixins may conflict with the Compass ones. +If this happens, change the import order so that Compass mixins are loaded later. + +### c. Bower + +bootstrap-sass Bower package is compatible with node-sass 3.2.0+. You can install it with: + +```console +$ bower install bootstrap-sass +``` + +Sass, JS, and all other assets are located at [assets](/assets). + +By default, `bower.json` main field list only the main `_bootstrap.scss` and all the static assets (fonts and JS). +This is compatible by default with asset managers such as [wiredep](https://github.com/taptapship/wiredep). + +#### Node.js Mincer + +If you use [mincer][mincer] with node-sass, import Bootstrap like so: + +In `application.css.ejs.scss` (NB **.css.ejs.scss**): + +```scss +// Import mincer asset paths helper integration +@import "bootstrap-mincer"; +@import "bootstrap"; +``` + +In `application.js`: + +```js +//= require bootstrap-sprockets +``` + +See also this [example manifest.js](/test/dummy_node_mincer/manifest.js) for mincer. + +### d. npm / Node.js +```console +$ npm install bootstrap-sass +``` + + +## Configuration + +### Sass + +By default all of Bootstrap is imported. + +You can also import components explicitly. To start with a full list of modules copy +[`_bootstrap.scss`](assets/stylesheets/_bootstrap.scss) file into your assets as `_bootstrap-custom.scss`. +Then comment out components you do not want from `_bootstrap-custom`. +In the application Sass file, replace `@import 'bootstrap'` with: + +```scss +@import 'bootstrap-custom'; +``` + +### Sass: Number Precision + +bootstrap-sass [requires](https://github.com/twbs/bootstrap-sass/issues/409) minimum [Sass number precision][sass-precision] of 8 (default is 5). + +Precision is set for Rails and Compass automatically. +When using Ruby Sass compiler standalone or with the Bower version you can set it with: + +```ruby +::Sass::Script::Value::Number.precision = [8, ::Sass::Script::Value::Number.precision].max +``` + +### Sass: Autoprefixer + +Bootstrap requires the use of [Autoprefixer][autoprefixer]. +[Autoprefixer][autoprefixer] adds vendor prefixes to CSS rules using values from [Can I Use](http://caniuse.com/). + +To match [upstream Bootstrap's level of browser compatibility](http://getbootstrap.com/getting-started/#support), set Autoprefixer's `browsers` option to: +```json +[ + "Android 2.3", + "Android >= 4", + "Chrome >= 20", + "Firefox >= 24", + "Explorer >= 8", + "iOS >= 6", + "Opera >= 12", + "Safari >= 6" +] +``` + +### JavaScript + +[`assets/javascripts/bootstrap.js`](/assets/javascripts/bootstrap.js) contains all of Bootstrap's JavaScript, +concatenated in the [correct order](/assets/javascripts/bootstrap-sprockets.js). + + +#### JavaScript with Sprockets or Mincer + +If you use Sprockets or Mincer, you can require `bootstrap-sprockets` instead to load the individual modules: + +```js +// Load all Bootstrap JavaScript +//= require bootstrap-sprockets +``` + +You can also load individual modules, provided you also require any dependencies. +You can check dependencies in the [Bootstrap JS documentation][jsdocs]. + +```js +//= require bootstrap/scrollspy +//= require bootstrap/modal +//= require bootstrap/dropdown +``` + +### Fonts + +The fonts are referenced as: + +```scss +"#{$icon-font-path}#{$icon-font-name}.eot" +``` + +`$icon-font-path` defaults to `bootstrap/` if asset path helpers are used, and `../fonts/bootstrap/` otherwise. + +When using bootstrap-sass with Compass, Sprockets, or Mincer, you **must** import the relevant path helpers before Bootstrap itself, for example: + +```scss +@import "bootstrap-compass"; +@import "bootstrap"; +``` + +## Usage + +### Sass + +Import Bootstrap into a Sass file (for example, `application.scss`) to get all of Bootstrap's styles, mixins and variables! + +```scss +@import "bootstrap"; +``` + +You can also include optional Bootstrap theme: + +```scss +@import "bootstrap/theme"; +``` + +The full list of Bootstrap variables can be found [here](http://getbootstrap.com/customize/#less-variables). You can override these by simply redefining the variable before the `@import` directive, e.g.: + +```scss +$navbar-default-bg: #312312; +$light-orange: #ff8c00; +$navbar-default-color: $light-orange; + +@import "bootstrap"; +``` + +### Eyeglass + +Bootstrap is available as an [Eyeglass](https://github.com/sass-eyeglass/eyeglass) module. After installing Bootstrap via NPM you can import the Bootstrap library via: + +```scss +@import "bootstrap-sass/bootstrap" +``` + +or import only the parts of Bootstrap you need: + +```scss +@import "bootstrap-sass/bootstrap/variables"; +@import "bootstrap-sass/bootstrap/mixins"; +@import "bootstrap-sass/bootstrap/carousel"; +``` + +## Version + +Bootstrap for Sass version may differ from the upstream version in the last number, known as +[PATCH](http://semver.org/spec/v2.0.0.html). The patch version may be ahead of the corresponding upstream minor. +This happens when we need to release Sass-specific changes. + +Before v3.3.2, Bootstrap for Sass version used to reflect the upstream version, with an additional number for +Sass-specific changes. This was changed due to Bower and npm compatibility issues. + +The upstream versions vs the Bootstrap for Sass versions are: + +| Upstream | Sass | +|---------:|--------:| +| 3.3.4+ | same | +| 3.3.2 | 3.3.3 | +| <= 3.3.1 | 3.3.1.x | + +Always refer to [CHANGELOG.md](/CHANGELOG.md) when upgrading. + +--- + +## Development and Contributing + +If you'd like to help with the development of bootstrap-sass itself, read this section. + +### Upstream Converter + +Keeping bootstrap-sass in sync with upstream changes from Bootstrap used to be an error prone and time consuming manual process. With Bootstrap 3 we have introduced a converter that automates this. + +**Note: if you're just looking to *use* Bootstrap 3, see the [installation](#installation) section above.** + +Upstream changes to the Bootstrap project can now be pulled in using the `convert` rake task. + +Here's an example run that would pull down the master branch from the main [twbs/bootstrap](https://github.com/twbs/bootstrap) repo: + + rake convert + +This will convert the latest LESS to Sass and update to the latest JS. +To convert a specific branch or version, pass the branch name or the commit hash as the first task argument: + + rake convert[e8a1df5f060bf7e6631554648e0abde150aedbe4] + +The latest converter script is located [here][converter] and does the following: + +* Converts upstream Bootstrap LESS files to its matching SCSS file. +* Copies all upstream JavaScript into `assets/javascripts/bootstrap`, a Sprockets manifest at `assets/javascripts/bootstrap-sprockets.js`, and a concatenation at `assets/javascripts/bootstrap.js`. +* Copies all upstream font files into `assets/fonts/bootstrap`. +* Sets `Bootstrap::BOOTSTRAP_SHA` in [version.rb][version] to the branch sha. + +This converter fully converts original LESS to SCSS. Conversion is automatic but requires instructions for certain transformations (see converter output). +Please submit GitHub issues tagged with `conversion`. + +## Credits + +bootstrap-sass has a number of major contributors: + + +* [Thomas McDonald](https://twitter.com/thomasmcdonald_) +* [Tristan Harward](http://www.trisweb.com) +* Peter Gumeson +* [Gleb Mazovetskiy](https://github.com/glebm) + +and a [significant number of other contributors][contrib]. + +## You're in good company +bootstrap-sass is used to build some awesome projects all over the web, including +[Diaspora](https://diasporafoundation.org/), [rails_admin](https://github.com/sferik/rails_admin), +Michael Hartl's [Rails Tutorial](https://www.railstutorial.org/), [gitlabhq](http://gitlabhq.com/) and +[kandan](http://getkandan.com/). + +[converter]: https://github.com/twbs/bootstrap-sass/blob/master/tasks/converter/less_conversion.rb +[version]: https://github.com/twbs/bootstrap-sass/blob/master/lib/bootstrap-sass/version.rb +[contrib]: https://github.com/twbs/bootstrap-sass/graphs/contributors +[antirequire]: https://github.com/twbs/bootstrap-sass/issues/79#issuecomment-4428595 +[jsdocs]: http://getbootstrap.com/javascript/#transitions +[sass-precision]: http://sass-lang.com/documentation/Sass/Script/Value/Number.html#precision%3D-class_method +[mincer]: https://github.com/nodeca/mincer +[autoprefixer]: https://github.com/postcss/autoprefixer diff --git a/app/vendor/bootstrap/Rakefile b/app/vendor/bootstrap/Rakefile new file mode 100644 index 0000000..3e88526 --- /dev/null +++ b/app/vendor/bootstrap/Rakefile @@ -0,0 +1,94 @@ +lib_path = File.join(File.dirname(__FILE__), 'lib') +$:.unshift(lib_path) unless $:.include?(lib_path) + +load './tasks/bower.rake' + +require 'rake/testtask' +Rake::TestTask.new do |t| + t.libs << 'test' + t.test_files = FileList['test/**/*_test.rb'] + t.verbose = true +end + +desc 'Test all Gemfiles from test/*.gemfile' +task :test_all_gemfiles do + require 'term/ansicolor' + require 'pty' + require 'shellwords' + cmd = 'bundle install --quiet && bundle exec rake --trace' + statuses = Dir.glob('./test/gemfiles/*{[!.lock]}').map do |gemfile| + env = {'BUNDLE_GEMFILE' => gemfile} + cmd_with_env = " (#{env.map { |k, v| "export #{k}=#{Shellwords.escape v}" } * ' '}; #{cmd})" + $stderr.puts Term::ANSIColor.cyan("Testing\n#{cmd_with_env}") + PTY.spawn(env, cmd) do |r, _w, pid| + begin + r.each_line { |l| puts l } + rescue Errno::EIO + # Errno:EIO error means that the process has finished giving output. + ensure + ::Process.wait pid + end + end + [$? && $?.exitstatus == 0, cmd_with_env] + end + failed_cmds = statuses.reject(&:first).map { |(_status, cmd_with_env)| cmd_with_env } + if failed_cmds.empty? + $stderr.puts Term::ANSIColor.green('Tests pass with all gemfiles') + else + $stderr.puts Term::ANSIColor.red("Failing (#{failed_cmds.size} / #{statuses.size})\n#{failed_cmds * "\n"}") + exit 1 + end +end + +desc 'Dumps output to a CSS file for testing' +task :debug do + require 'sass' + path = Bootstrap.stylesheets_path + %w(bootstrap).each do |file| + engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path]) + File.open("./#{file}.css", 'w') { |f| f.write(engine.render) } + end +end + +desc 'Convert bootstrap to bootstrap-sass' +task :convert, :branch do |t, args| + require './tasks/converter' + Converter.new(branch: args[:branch]).process_bootstrap +end + +desc 'LESS to stdin -> Sass to stdout' +task :less_to_scss, :branch do |t, args| + require './tasks/converter' + puts Converter.new(branch: args[:branch]).convert_less(STDIN.read) +end + +desc 'Compile bootstrap-sass to tmp/ (or first arg)' +task :compile, :css_path do |t, args| + require 'sass' + require 'term/ansicolor' + + path = 'assets/stylesheets' + css_path = args.with_defaults(css_path: 'tmp')[:css_path] + puts Term::ANSIColor.bold "Compiling SCSS in #{path}" + Dir.mkdir(css_path) unless File.directory?(css_path) + %w(_bootstrap bootstrap/_theme).each do |file| + save_path = "#{css_path}/#{file.sub(/(^|\/)?_+/, '\1').sub('/', '-')}.css" + puts Term::ANSIColor.cyan(" #{save_path}") + '...' + engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path]) + css = engine.render + File.open(save_path, 'w') { |f| f.write css } + end +end + +desc 'Start a dummy (test) Rails app server' +task :dummy_rails do + require 'rack' + require 'term/ansicolor' + port = ENV['PORT'] || 9292 + puts %Q(Starting on #{Term::ANSIColor.cyan "http://localhost:#{port}"}) + Rack::Server.start( + config: 'test/dummy_rails/config.ru', + Port: port) +end + +task default: :test diff --git a/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.eot differ diff --git a/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.svg b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf differ diff --git a/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff differ diff --git a/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/app/vendor/bootstrap/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 differ diff --git a/app/vendor/bootstrap/assets/images/.keep b/app/vendor/bootstrap/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap-sprockets.js b/app/vendor/bootstrap/assets/javascripts/bootstrap-sprockets.js new file mode 100644 index 0000000..fb01d63 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap-sprockets.js @@ -0,0 +1,12 @@ +//= require ./bootstrap/transition +//= require ./bootstrap/alert +//= require ./bootstrap/button +//= require ./bootstrap/carousel +//= require ./bootstrap/collapse +//= require ./bootstrap/dropdown +//= require ./bootstrap/modal +//= require ./bootstrap/tab +//= require ./bootstrap/affix +//= require ./bootstrap/scrollspy +//= require ./bootstrap/tooltip +//= require ./bootstrap/popover diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap.js b/app/vendor/bootstrap/assets/javascripts/bootstrap.js new file mode 100644 index 0000000..8a2e99a --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap.js @@ -0,0 +1,2377 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 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 + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 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.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + 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 === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(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) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.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.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 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.VERSION = '3.3.7' + + 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 += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, 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')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(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) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.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).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 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 = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + 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.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + 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 || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(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() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + 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 activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + 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('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[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 in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(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 && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.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) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 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.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + 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 + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .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, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // 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') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap.min.js b/app/vendor/bootstrap/assets/javascripts/bootstrap.min.js new file mode 100644 index 0000000..9bcd2fc --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(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("bsTransitionEnd",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(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.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")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.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},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.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 in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(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()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.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").children().detach().end()[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()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.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)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(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]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).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(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/affix.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/affix.js new file mode 100644 index 0000000..7f65168 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/affix.js @@ -0,0 +1,162 @@ +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/alert.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/alert.js new file mode 100644 index 0000000..db97f3b --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/alert.js @@ -0,0 +1,94 @@ +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 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.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + 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 === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(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) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.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); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/button.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/button.js new file mode 100644 index 0000000..843b39c --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/button.js @@ -0,0 +1,125 @@ +/* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 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.VERSION = '3.3.7' + + 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 += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, 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')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(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) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.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).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/carousel.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/carousel.js new file mode 100644 index 0000000..6ff954c --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/carousel.js @@ -0,0 +1,237 @@ +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 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 = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + 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.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + 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 || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(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() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/collapse.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/collapse.js new file mode 100644 index 0000000..1203869 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/collapse.js @@ -0,0 +1,212 @@ +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + 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 activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + 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('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[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 in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(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 && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.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) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/dropdown.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/dropdown.js new file mode 100644 index 0000000..04e9c2d --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/dropdown.js @@ -0,0 +1,165 @@ +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 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.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + 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 + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .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, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/modal.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/modal.js new file mode 100644 index 0000000..f84142d --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/modal.js @@ -0,0 +1,339 @@ +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/popover.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/popover.js new file mode 100644 index 0000000..efe1956 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/popover.js @@ -0,0 +1,108 @@ +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // 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') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/scrollspy.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/scrollspy.js new file mode 100644 index 0000000..fe19809 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/scrollspy.js @@ -0,0 +1,172 @@ +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/tab.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/tab.js new file mode 100644 index 0000000..c4a8635 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/tab.js @@ -0,0 +1,155 @@ +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/tooltip.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/tooltip.js new file mode 100644 index 0000000..e35d9c7 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/tooltip.js @@ -0,0 +1,520 @@ +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/javascripts/bootstrap/transition.js b/app/vendor/bootstrap/assets/javascripts/bootstrap/transition.js new file mode 100644 index 0000000..db76596 --- /dev/null +++ b/app/vendor/bootstrap/assets/javascripts/bootstrap/transition.js @@ -0,0 +1,59 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 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 + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); diff --git a/app/vendor/bootstrap/assets/stylesheets/_bootstrap-compass.scss b/app/vendor/bootstrap/assets/stylesheets/_bootstrap-compass.scss new file mode 100644 index 0000000..8fbc3cd --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/_bootstrap-compass.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-url($path, true); +} + +@function twbs-image-path($path) { + @return image-url($path, true); +} + +$bootstrap-sass-asset-helper: true; diff --git a/app/vendor/bootstrap/assets/stylesheets/_bootstrap-mincer.scss b/app/vendor/bootstrap/assets/stylesheets/_bootstrap-mincer.scss new file mode 100644 index 0000000..0c4655e --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/_bootstrap-mincer.scss @@ -0,0 +1,19 @@ +// Mincer asset helper functions +// +// This must be imported into a .css.ejs.scss file. +// Then, <% %>-interpolations will be parsed as strings by Sass, and evaluated by EJS after Sass compilation. + + +@function twbs-font-path($path) { + // do something like following + // from "path/to/font.ext#suffix" to "<%- asset_path(path/to/font.ext)) + #suffix %>" + // from "path/to/font.ext?#suffix" to "<%- asset_path(path/to/font.ext)) + ?#suffix %>" + // or from "path/to/font.ext" just "<%- asset_path(path/to/font.ext)) %>" + @return "<%- asset_path("#{$path}".replace(/[#?].*$/, '')) + "#{$path}".replace(/(^[^#?]*)([#?]?.*$)/, '$2') %>"; +} + +@function twbs-image-path($file) { + @return "<%- asset_path("#{$file}") %>"; +} + +$bootstrap-sass-asset-helper: true; diff --git a/app/vendor/bootstrap/assets/stylesheets/_bootstrap-sprockets.scss b/app/vendor/bootstrap/assets/stylesheets/_bootstrap-sprockets.scss new file mode 100644 index 0000000..9fffc1e --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/_bootstrap-sprockets.scss @@ -0,0 +1,9 @@ +@function twbs-font-path($path) { + @return font-path($path); +} + +@function twbs-image-path($path) { + @return image-path($path); +} + +$bootstrap-sass-asset-helper: true; diff --git a/app/vendor/bootstrap/assets/stylesheets/_bootstrap.scss b/app/vendor/bootstrap/assets/stylesheets/_bootstrap.scss new file mode 100644 index 0000000..e72d1de --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/_bootstrap.scss @@ -0,0 +1,56 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_alerts.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_alerts.scss new file mode 100644 index 0000000..7d1e1fd --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_alerts.scss @@ -0,0 +1,73 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: $alert-padding; + margin-bottom: $line-height-computed; + border: 1px solid transparent; + border-radius: $alert-border-radius; + + // Headings for larger alerts + h4 { + margin-top: 0; + // Specified for the h4 to prevent conflicts of changing $headings-color + color: inherit; + } + + // Provide class for links that match alerts + .alert-link { + font-weight: $alert-link-font-weight; + } + + // Improve alignment and spacing of inner content + > p, + > ul { + margin-bottom: 0; + } + + > p + p { + margin-top: 5px; + } +} + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0. +.alert-dismissible { + padding-right: ($alert-padding + 20); + + // Adjust close link position + .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; + } +} + +// Alternate styles +// +// Generate contextual modifier classes for colorizing the alert. + +.alert-success { + @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text); +} + +.alert-info { + @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text); +} + +.alert-warning { + @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text); +} + +.alert-danger { + @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text); +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_badges.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_badges.scss new file mode 100644 index 0000000..70002e0 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_badges.scss @@ -0,0 +1,68 @@ +// +// Badges +// -------------------------------------------------- + + +// Base class +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: $font-size-small; + font-weight: $badge-font-weight; + color: $badge-color; + line-height: $badge-line-height; + vertical-align: middle; + white-space: nowrap; + text-align: center; + background-color: $badge-bg; + border-radius: $badge-border-radius; + + // Empty badges collapse automatically (not available in IE8) + &:empty { + display: none; + } + + // Quick fix for badges in buttons + .btn & { + position: relative; + top: -1px; + } + + .btn-xs &, + .btn-group-xs > .btn & { + top: 0; + padding: 1px 5px; + } + + // [converter] extracted a& to a.badge + + // Account for badges in navs + .list-group-item.active > &, + .nav-pills > .active > a > & { + color: $badge-active-color; + background-color: $badge-active-bg; + } + + .list-group-item > & { + float: right; + } + + .list-group-item > & + & { + margin-right: 5px; + } + + .nav-pills > li > a > & { + margin-left: 3px; + } +} + +// Hover state, but only for links +a.badge { + &:hover, + &:focus { + color: $badge-link-hover-color; + text-decoration: none; + cursor: pointer; + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_breadcrumbs.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_breadcrumbs.scss new file mode 100644 index 0000000..b61f0c7 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_breadcrumbs.scss @@ -0,0 +1,28 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal; + margin-bottom: $line-height-computed; + list-style: none; + background-color: $breadcrumb-bg; + border-radius: $border-radius-base; + + > li { + display: inline-block; + + + li:before { + // [converter] Workaround for https://github.com/sass/libsass/issues/1115 + $nbsp: "\00a0"; + content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space + padding: 0 5px; + color: $breadcrumb-color; + } + } + + > .active { + color: $breadcrumb-active-color; + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_button-groups.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_button-groups.scss new file mode 100644 index 0000000..4b385f5 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_button-groups.scss @@ -0,0 +1,244 @@ +// +// Button groups +// -------------------------------------------------- + +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; // match .btn alignment given font-size hack above + > .btn { + position: relative; + float: left; + // Bring the "active" button to the front + &:hover, + &:focus, + &:active, + &.active { + z-index: 2; + } + } +} + +// Prevent double borders when buttons are next to each other +.btn-group { + .btn + .btn, + .btn + .btn-group, + .btn-group + .btn, + .btn-group + .btn-group { + margin-left: -1px; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + margin-left: -5px; // Offset the first child's margin + @include clearfix; + + .btn, + .btn-group, + .input-group { + float: left; + } + > .btn, + > .btn-group, + > .input-group { + margin-left: 5px; + } +} + +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} + +// 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 +.btn-group > .btn:first-child { + margin-left: 0; + &:not(:last-child):not(.dropdown-toggle) { + @include border-right-radius(0); + } +} +// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + @include border-left-radius(0); +} + +// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group) +.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:not(:last-child) { + > .btn:last-child, + > .dropdown-toggle { + @include border-right-radius(0); + } +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-left-radius(0); +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-xs > .btn { @extend .btn-xs; } +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; +} + +// The clickable button for toggling the menu +// Remove the gradient and set the same inset shadow as the :active state +.btn-group.open .dropdown-toggle { + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// Reposition the caret +.btn .caret { + margin-left: 0; +} +// Carets in other button sizes +.btn-lg .caret { + border-width: $caret-width-large $caret-width-large 0; + border-bottom-width: 0; +} +// Upside down carets for .dropup +.dropup .btn-lg .caret { + border-width: 0 $caret-width-large $caret-width-large; +} + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + > .btn, + > .btn-group, + > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; + } + + // Clear floats so dropdown menus can be properly placed + > .btn-group { + @include clearfix; + > .btn { + float: none; + } + } + + > .btn + .btn, + > .btn + .btn-group, + > .btn-group + .btn, + > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; + } +} + +.btn-group-vertical > .btn { + &:not(:first-child):not(:last-child) { + border-radius: 0; + } + &:first-child:not(:last-child) { + @include border-top-radius($btn-border-radius-base); + @include border-bottom-radius(0); + } + &:last-child:not(:first-child) { + @include border-top-radius(0); + @include border-bottom-radius($btn-border-radius-base); + } +} +.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, + > .dropdown-toggle { + @include border-bottom-radius(0); + } +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + @include border-top-radius(0); +} + + +// Justified button groups +// ---------------------- + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; + > .btn, + > .btn-group { + float: none; + display: table-cell; + width: 1%; + } + > .btn-group .btn { + width: 100%; + } + + > .btn-group .dropdown-menu { + left: auto; + } +} + + +// Checkbox and radio options +// +// In order to support the browser's form validation feedback, powered by the +// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use +// `display: none;` or `visibility: hidden;` as that also hides the popover. +// Simply visually hiding the inputs via `opacity` would leave them clickable in +// certain cases which is prevented by using `clip` and `pointer-events`. +// This way, we ensure a DOM element is visible to position the popover from. +// +// See https://github.com/twbs/bootstrap/pull/12794 and +// https://github.com/twbs/bootstrap/pull/14559 for more information. + +[data-toggle="buttons"] { + > .btn, + > .btn-group > .btn { + input[type="radio"], + input[type="checkbox"] { + position: absolute; + clip: rect(0,0,0,0); + pointer-events: none; + } + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_buttons.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_buttons.scss new file mode 100644 index 0000000..6452b70 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_buttons.scss @@ -0,0 +1,168 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +.btn { + display: inline-block; + margin-bottom: 0; // For input.btn + font-weight: $btn-font-weight; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid transparent; + white-space: nowrap; + @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base); + @include user-select(none); + + &, + &:active, + &.active { + &:focus, + &.focus { + @include tab-focus; + } + } + + &:hover, + &:focus, + &.focus { + color: $btn-default-color; + text-decoration: none; + } + + &:active, + &.active { + outline: 0; + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + } + + &.disabled, + &[disabled], + fieldset[disabled] & { + cursor: $cursor-disabled; + @include opacity(.65); + @include box-shadow(none); + } + + // [converter] extracted a& to a.btn +} + +a.btn { + &.disabled, + fieldset[disabled] & { + pointer-events: none; // Future-proof disabling of clicks on `` elements + } +} + + +// Alternate buttons +// -------------------------------------------------- + +.btn-default { + @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border); +} +.btn-primary { + @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border); +} +// Success appears as green +.btn-success { + @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border); +} +// Info appears as blue-green +.btn-info { + @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border); +} +// Warning appears as orange +.btn-warning { + @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border); +} +// Danger and error appear as red +.btn-danger { + @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); +} + + +// Link buttons +// ------------------------- + +// Make a button look and behave like a link +.btn-link { + color: $link-color; + font-weight: normal; + border-radius: 0; + + &, + &:active, + &.active, + &[disabled], + fieldset[disabled] & { + background-color: transparent; + @include box-shadow(none); + } + &, + &:hover, + &:focus, + &:active { + border-color: transparent; + } + &:hover, + &:focus { + color: $link-hover-color; + text-decoration: $link-hover-decoration; + background-color: transparent; + } + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus { + color: $btn-link-disabled-color; + text-decoration: none; + } + } +} + + +// Button Sizes +// -------------------------------------------------- + +.btn-lg { + // line-height: ensure even-numbered height of button next to large input + @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large); +} +.btn-sm { + // line-height: ensure proper height of button next to small input + @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} +.btn-xs { + @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small); +} + + +// Block button +// -------------------------------------------------- + +.btn-block { + display: block; + width: 100%; +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_carousel.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_carousel.scss new file mode 100644 index 0000000..753d881 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_carousel.scss @@ -0,0 +1,270 @@ +// +// Carousel +// -------------------------------------------------- + + +// Wrapper for the slide container and indicators +.carousel { + position: relative; +} + +.carousel-inner { + position: relative; + overflow: hidden; + width: 100%; + + > .item { + display: none; + position: relative; + @include transition(.6s ease-in-out left); + + // Account for jankitude on images + > img, + > a > img { + @include img-responsive; + line-height: 1; + } + + // WebKit CSS3 transforms for supported devices + @media all and (transform-3d), (-webkit-transform-3d) { + @include transition-transform(0.6s ease-in-out); + @include backface-visibility(hidden); + @include perspective(1000px); + + &.next, + &.active.right { + @include translate3d(100%, 0, 0); + left: 0; + } + &.prev, + &.active.left { + @include translate3d(-100%, 0, 0); + left: 0; + } + &.next.left, + &.prev.right, + &.active { + @include translate3d(0, 0, 0); + left: 0; + } + } + } + + > .active, + > .next, + > .prev { + display: block; + } + + > .active { + left: 0; + } + + > .next, + > .prev { + position: absolute; + top: 0; + width: 100%; + } + + > .next { + left: 100%; + } + > .prev { + left: -100%; + } + > .next.left, + > .prev.right { + left: 0; + } + + > .active.left { + left: -100%; + } + > .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: $carousel-control-width; + @include opacity($carousel-control-opacity); + font-size: $carousel-control-font-size; + color: $carousel-control-color; + text-align: center; + text-shadow: $carousel-text-shadow; + background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug + // We can't have this transition here because WebKit cancels the carousel + // animation if you trip this while in the middle of another animation. + + // Set gradients for backgrounds + &.left { + @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001)); + } + &.right { + left: auto; + right: 0; + @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5)); + } + + // Hover/focus state + &:hover, + &:focus { + outline: 0; + color: $carousel-control-color; + text-decoration: none; + @include opacity(.9); + } + + // Toggles + .icon-prev, + .icon-next, + .glyphicon-chevron-left, + .glyphicon-chevron-right { + position: absolute; + top: 50%; + margin-top: -10px; + z-index: 5; + display: inline-block; + } + .icon-prev, + .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; + } + .icon-next, + .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; + } + .icon-prev, + .icon-next { + width: 20px; + height: 20px; + line-height: 1; + font-family: serif; + } + + + .icon-prev { + &:before { + content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039) + } + } + .icon-next { + &:before { + content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A) + } + } +} + +// Optional indicator pips +// +// Add an unordered list with the following class and add a list item for each +// slide your carousel holds. + +.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; + + li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + border: 1px solid $carousel-indicator-border-color; + border-radius: 10px; + cursor: pointer; + + // IE8-9 hack for event handling + // + // Internet Explorer 8-9 does not support clicks on elements without a set + // `background-color`. We cannot use `filter` since that's not viewed as a + // background color by the browser. Thus, a hack is needed. + // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer + // + // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we + // set alpha transparency for the best results possible. + background-color: #000 \9; // IE8 + background-color: rgba(0,0,0,0); // IE9 + } + .active { + margin: 0; + width: 12px; + height: 12px; + background-color: $carousel-indicator-active-bg; + } +} + +// Optional captions +// ----------------------------- +// Hidden by default for smaller viewports +.carousel-caption { + position: absolute; + left: 15%; + right: 15%; + bottom: 20px; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: $carousel-caption-color; + text-align: center; + text-shadow: $carousel-text-shadow; + & .btn { + text-shadow: none; // No shadow for button elements in carousel-caption + } +} + + +// Scale up controls for tablets and up +@media screen and (min-width: $screen-sm-min) { + + // Scale up the controls a smidge + .carousel-control { + .glyphicon-chevron-left, + .glyphicon-chevron-right, + .icon-prev, + .icon-next { + width: ($carousel-control-font-size * 1.5); + height: ($carousel-control-font-size * 1.5); + margin-top: ($carousel-control-font-size / -2); + font-size: ($carousel-control-font-size * 1.5); + } + .glyphicon-chevron-left, + .icon-prev { + margin-left: ($carousel-control-font-size / -2); + } + .glyphicon-chevron-right, + .icon-next { + margin-right: ($carousel-control-font-size / -2); + } + } + + // Show and left align the captions + .carousel-caption { + left: 20%; + right: 20%; + padding-bottom: 30px; + } + + // Move up the indicators + .carousel-indicators { + bottom: 20px; + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_close.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_close.scss new file mode 100644 index 0000000..3b74d8a --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_close.scss @@ -0,0 +1,36 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: ($font-size-base * 1.5); + font-weight: $close-font-weight; + line-height: 1; + color: $close-color; + text-shadow: $close-text-shadow; + @include opacity(.2); + + &:hover, + &:focus { + color: $close-color; + text-decoration: none; + cursor: pointer; + @include opacity(.5); + } + + // [converter] extracted button& to button.close +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_code.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_code.scss new file mode 100644 index 0000000..caa5f06 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_code.scss @@ -0,0 +1,69 @@ +// +// Code (inline and block) +// -------------------------------------------------- + + +// Inline and block code styles +code, +kbd, +pre, +samp { + font-family: $font-family-monospace; +} + +// Inline code +code { + padding: 2px 4px; + font-size: 90%; + color: $code-color; + background-color: $code-bg; + border-radius: $border-radius-base; +} + +// User input typically entered via keyboard +kbd { + padding: 2px 4px; + font-size: 90%; + color: $kbd-color; + background-color: $kbd-bg; + border-radius: $border-radius-small; + box-shadow: inset 0 -1px 0 rgba(0,0,0,.25); + + kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + box-shadow: none; + } +} + +// Blocks of code +pre { + display: block; + padding: (($line-height-computed - 1) / 2); + margin: 0 0 ($line-height-computed / 2); + font-size: ($font-size-base - 1); // 14px to 13px + line-height: $line-height-base; + word-break: break-all; + word-wrap: break-word; + color: $pre-color; + background-color: $pre-bg; + border: 1px solid $pre-border-color; + border-radius: $border-radius-base; + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: $pre-scrollable-max-height; + overflow-y: scroll; +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_component-animations.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_component-animations.scss new file mode 100644 index 0000000..ca3b43c --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_component-animations.scss @@ -0,0 +1,37 @@ +// +// Component animations +// -------------------------------------------------- + +// Heads up! +// +// We don't use the `.opacity()` mixin here since it causes a bug with text +// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552. + +.fade { + opacity: 0; + @include transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + display: none; + + &.in { display: block; } + // [converter] extracted tr&.in to tr.collapse.in + // [converter] extracted tbody&.in to tbody.collapse.in +} + +tr.collapse.in { display: table-row; } + +tbody.collapse.in { display: table-row-group; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + @include transition-property(height, visibility); + @include transition-duration(.35s); + @include transition-timing-function(ease); +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_dropdowns.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_dropdowns.scss new file mode 100644 index 0000000..aac8459 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_dropdowns.scss @@ -0,0 +1,216 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Dropdown arrow/caret +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: $caret-width-base dashed; + border-top: $caret-width-base solid \9; // IE8 + border-right: $caret-width-base solid transparent; + border-left: $caret-width-base solid transparent; +} + +// The dropdown wrapper (div) +.dropup, +.dropdown { + position: relative; +} + +// Prevent the focus on the dropdown toggle when closing dropdowns +.dropdown-toggle:focus { + outline: 0; +} + +// The dropdown menu (ul) +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: $zindex-dropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + font-size: $font-size-base; + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + background-color: $dropdown-bg; + border: 1px solid $dropdown-fallback-border; // IE8 fallback + border: 1px solid $dropdown-border; + border-radius: $border-radius-base; + @include box-shadow(0 6px 12px rgba(0,0,0,.175)); + background-clip: padding-box; + + // Aligns the dropdown menu to right + // + // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]` + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + @include nav-divider($dropdown-divider-bg); + } + + // Links within the dropdown menu + > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: $line-height-base; + color: $dropdown-link-color; + white-space: nowrap; // prevent links from randomly breaking onto new lines + } +} + +// Hover/Focus state +.dropdown-menu > li > a { + &:hover, + &:focus { + text-decoration: none; + color: $dropdown-link-hover-color; + background-color: $dropdown-link-hover-bg; + } +} + +// Active state +.dropdown-menu > .active > a { + &, + &:hover, + &:focus { + color: $dropdown-link-active-color; + text-decoration: none; + outline: 0; + background-color: $dropdown-link-active-bg; + } +} + +// Disabled state +// +// Gray out text and ensure the hover/focus state remains gray + +.dropdown-menu > .disabled > a { + &, + &:hover, + &:focus { + color: $dropdown-link-disabled-color; + } + + // Nuke hover/focus effects + &:hover, + &:focus { + text-decoration: none; + background-color: transparent; + background-image: none; // Remove CSS gradient + @include reset-filter; + cursor: $cursor-disabled; + } +} + +// Open state for the dropdown +.open { + // Show the menu + > .dropdown-menu { + display: block; + } + + // Remove the outline when :focus is triggered + > a { + outline: 0; + } +} + +// Menu positioning +// +// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown +// menu with the parent. +.dropdown-menu-right { + left: auto; // Reset the default from `.dropdown-menu` + right: 0; +} +// With v3, we enabled auto-flipping if you have a dropdown within a right +// aligned nav component. To enable the undoing of that, we provide an override +// to restore the default dropdown menu alignment. +// +// This is only for left-aligning a dropdown menu within a `.navbar-right` or +// `.pull-right` nav component. +.dropdown-menu-left { + left: 0; + right: auto; +} + +// Dropdown section headers +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: $font-size-small; + line-height: $line-height-base; + color: $dropdown-header-color; + white-space: nowrap; // as with > li > a +} + +// Backdrop to catch body clicks on mobile, etc. +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: ($zindex-dropdown - 10); +} + +// Right aligned dropdowns +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? + +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: $caret-width-base dashed; + border-bottom: $caret-width-base solid \9; // IE8 + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; + } +} + + +// Component alignment +// +// Reiterate per navbar.less and the modified component alignment there. + +@media (min-width: $grid-float-breakpoint) { + .navbar-right { + .dropdown-menu { + right: 0; left: auto; + } + // Necessary for overrides of the default right aligned menu. + // Will remove come v4 in all likelihood. + .dropdown-menu-left { + left: 0; right: auto; + } + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_forms.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_forms.scss new file mode 100644 index 0000000..ac26a6a --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_forms.scss @@ -0,0 +1,617 @@ +// +// Forms +// -------------------------------------------------- + + +// Normalize non-controls +// +// Restyle and baseline non-control form elements. + +fieldset { + padding: 0; + margin: 0; + border: 0; + // Chrome and Firefox set a `min-width: min-content;` on fieldsets, + // so we reset that to ensure it behaves more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359. + min-width: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: $line-height-computed; + font-size: ($font-size-base * 1.5); + line-height: inherit; + color: $legend-color; + border: 0; + border-bottom: 1px solid $legend-border-color; +} + +label { + display: inline-block; + max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141) + margin-bottom: 5px; + font-weight: bold; +} + + +// Normalize form controls +// +// While most of our form styles require extra classes, some basic normalization +// is required to ensure optimum display with or without those classes to better +// address browser inconsistencies. + +// Override content-box in Normalize (* isn't specific enough) +input[type="search"] { + @include box-sizing(border-box); +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; // IE8-9 + line-height: normal; +} + +input[type="file"] { + display: block; +} + +// Make range inputs behave like textual form controls +input[type="range"] { + display: block; + width: 100%; +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for file, radio, and checkbox +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + @include tab-focus; +} + +// Adjust output element +output { + display: block; + padding-top: ($padding-base-vertical + 1); + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; +} + + +// Common form controls +// +// Shared size and type resets for form controls. Apply `.form-control` to any +// of the following form controls: +// +// select +// textarea +// input[type="text"] +// input[type="password"] +// input[type="datetime"] +// input[type="datetime-local"] +// input[type="date"] +// input[type="month"] +// input[type="time"] +// input[type="week"] +// input[type="number"] +// input[type="email"] +// input[type="url"] +// input[type="search"] +// input[type="tel"] +// input[type="color"] + +.form-control { + display: block; + width: 100%; + height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border) + padding: $padding-base-vertical $padding-base-horizontal; + font-size: $font-size-base; + line-height: $line-height-base; + color: $input-color; + background-color: $input-bg; + background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 + border: 1px solid $input-border; + border-radius: $input-border-radius; // Note: This has no effect on s in CSS. + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); + + // Customize the `:focus` state to imitate native WebKit styles. + @include form-control-focus; + + // Placeholder + @include placeholder; + + // Unstyle the caret on `` background color +$input-bg: #fff !default; +//** `` background color +$input-bg-disabled: $gray-lighter !default; + +//** Text color for ``s +$input-color: $gray !default; +//** `` border color +$input-border: #ccc !default; + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +$input-border-radius: $border-radius-base !default; +//** Large `.form-control` border radius +$input-border-radius-large: $border-radius-large !default; +//** Small `.form-control` border radius +$input-border-radius-small: $border-radius-small !default; + +//** Border color for inputs on focus +$input-border-focus: #66afe9 !default; + +//** Placeholder text color +$input-color-placeholder: #999 !default; + +//** Default `.form-control` height +$input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default; +//** Large `.form-control` height +$input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default; +//** Small `.form-control` height +$input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default; + +//** `.form-group` margin +$form-group-margin-bottom: 15px !default; + +$legend-color: $gray-dark !default; +$legend-border-color: #e5e5e5 !default; + +//** Background color for textual input addons +$input-group-addon-bg: $gray-lighter !default; +//** Border color for textual input addons +$input-group-addon-border-color: $input-border !default; + +//** Disabled cursor for form controls and buttons. +$cursor-disabled: not-allowed !default; + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +$dropdown-bg: #fff !default; +//** Dropdown menu `border-color`. +$dropdown-border: rgba(0,0,0,.15) !default; +//** Dropdown menu `border-color` **for IE8**. +$dropdown-fallback-border: #ccc !default; +//** Divider color for between dropdown items. +$dropdown-divider-bg: #e5e5e5 !default; + +//** Dropdown link text color. +$dropdown-link-color: $gray-dark !default; +//** Hover color for dropdown links. +$dropdown-link-hover-color: darken($gray-dark, 5%) !default; +//** Hover background for dropdown links. +$dropdown-link-hover-bg: #f5f5f5 !default; + +//** Active dropdown menu item text color. +$dropdown-link-active-color: $component-active-color !default; +//** Active dropdown menu item background color. +$dropdown-link-active-bg: $component-active-bg !default; + +//** Disabled dropdown menu item background color. +$dropdown-link-disabled-color: $gray-light !default; + +//** Text color for headers within dropdown menus. +$dropdown-header-color: $gray-light !default; + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +$dropdown-caret-color: #000 !default; + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +$zindex-navbar: 1000 !default; +$zindex-dropdown: 1000 !default; +$zindex-popover: 1060 !default; +$zindex-tooltip: 1070 !default; +$zindex-navbar-fixed: 1030 !default; +$zindex-modal-background: 1040 !default; +$zindex-modal: 1050 !default; + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +$screen-xs: 480px !default; +//** Deprecated `$screen-xs-min` as of v3.2.0 +$screen-xs-min: $screen-xs !default; +//** Deprecated `$screen-phone` as of v3.0.1 +$screen-phone: $screen-xs-min !default; + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +$screen-sm: 768px !default; +$screen-sm-min: $screen-sm !default; +//** Deprecated `$screen-tablet` as of v3.0.1 +$screen-tablet: $screen-sm-min !default; + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +$screen-md: 992px !default; +$screen-md-min: $screen-md !default; +//** Deprecated `$screen-desktop` as of v3.0.1 +$screen-desktop: $screen-md-min !default; + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +$screen-lg: 1200px !default; +$screen-lg-min: $screen-lg !default; +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +$screen-lg-desktop: $screen-lg-min !default; + +// So media queries don't overlap when required, provide a maximum +$screen-xs-max: ($screen-sm-min - 1) !default; +$screen-sm-max: ($screen-md-min - 1) !default; +$screen-md-max: ($screen-lg-min - 1) !default; + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +$grid-columns: 12 !default; +//** Padding between columns. Gets divided in half for the left and right. +$grid-gutter-width: 30px !default; +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +$grid-float-breakpoint: $screen-sm-min !default; +//** Point at which the navbar begins collapsing. +$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default; + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +$container-tablet: (720px + $grid-gutter-width) !default; +//** For `$screen-sm-min` and up. +$container-sm: $container-tablet !default; + +// Medium screen / desktop +$container-desktop: (940px + $grid-gutter-width) !default; +//** For `$screen-md-min` and up. +$container-md: $container-desktop !default; + +// Large screen / wide desktop +$container-large-desktop: (1140px + $grid-gutter-width) !default; +//** For `$screen-lg-min` and up. +$container-lg: $container-large-desktop !default; + + +//== Navbar +// +//## + +// Basics of a navbar +$navbar-height: 50px !default; +$navbar-margin-bottom: $line-height-computed !default; +$navbar-border-radius: $border-radius-base !default; +$navbar-padding-horizontal: floor(($grid-gutter-width / 2)) !default; +$navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default; +$navbar-collapse-max-height: 340px !default; + +$navbar-default-color: #777 !default; +$navbar-default-bg: #f8f8f8 !default; +$navbar-default-border: darken($navbar-default-bg, 6.5%) !default; + +// Navbar links +$navbar-default-link-color: #777 !default; +$navbar-default-link-hover-color: #333 !default; +$navbar-default-link-hover-bg: transparent !default; +$navbar-default-link-active-color: #555 !default; +$navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default; +$navbar-default-link-disabled-color: #ccc !default; +$navbar-default-link-disabled-bg: transparent !default; + +// Navbar brand label +$navbar-default-brand-color: $navbar-default-link-color !default; +$navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) !default; +$navbar-default-brand-hover-bg: transparent !default; + +// Navbar toggle +$navbar-default-toggle-hover-bg: #ddd !default; +$navbar-default-toggle-icon-bar-bg: #888 !default; +$navbar-default-toggle-border-color: #ddd !default; + + +//=== Inverted navbar +// Reset inverted navbar basics +$navbar-inverse-color: lighten($gray-light, 15%) !default; +$navbar-inverse-bg: #222 !default; +$navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default; + +// Inverted navbar links +$navbar-inverse-link-color: lighten($gray-light, 15%) !default; +$navbar-inverse-link-hover-color: #fff !default; +$navbar-inverse-link-hover-bg: transparent !default; +$navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default; +$navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default; +$navbar-inverse-link-disabled-color: #444 !default; +$navbar-inverse-link-disabled-bg: transparent !default; + +// Inverted navbar brand label +$navbar-inverse-brand-color: $navbar-inverse-link-color !default; +$navbar-inverse-brand-hover-color: #fff !default; +$navbar-inverse-brand-hover-bg: transparent !default; + +// Inverted navbar toggle +$navbar-inverse-toggle-hover-bg: #333 !default; +$navbar-inverse-toggle-icon-bar-bg: #fff !default; +$navbar-inverse-toggle-border-color: #333 !default; + + +//== Navs +// +//## + +//=== Shared nav styles +$nav-link-padding: 10px 15px !default; +$nav-link-hover-bg: $gray-lighter !default; + +$nav-disabled-link-color: $gray-light !default; +$nav-disabled-link-hover-color: $gray-light !default; + +//== Tabs +$nav-tabs-border-color: #ddd !default; + +$nav-tabs-link-hover-border-color: $gray-lighter !default; + +$nav-tabs-active-link-hover-bg: $body-bg !default; +$nav-tabs-active-link-hover-color: $gray !default; +$nav-tabs-active-link-hover-border-color: #ddd !default; + +$nav-tabs-justified-link-border-color: #ddd !default; +$nav-tabs-justified-active-link-border-color: $body-bg !default; + +//== Pills +$nav-pills-border-radius: $border-radius-base !default; +$nav-pills-active-link-hover-bg: $component-active-bg !default; +$nav-pills-active-link-hover-color: $component-active-color !default; + + +//== Pagination +// +//## + +$pagination-color: $link-color !default; +$pagination-bg: #fff !default; +$pagination-border: #ddd !default; + +$pagination-hover-color: $link-hover-color !default; +$pagination-hover-bg: $gray-lighter !default; +$pagination-hover-border: #ddd !default; + +$pagination-active-color: #fff !default; +$pagination-active-bg: $brand-primary !default; +$pagination-active-border: $brand-primary !default; + +$pagination-disabled-color: $gray-light !default; +$pagination-disabled-bg: #fff !default; +$pagination-disabled-border: #ddd !default; + + +//== Pager +// +//## + +$pager-bg: $pagination-bg !default; +$pager-border: $pagination-border !default; +$pager-border-radius: 15px !default; + +$pager-hover-bg: $pagination-hover-bg !default; + +$pager-active-bg: $pagination-active-bg !default; +$pager-active-color: $pagination-active-color !default; + +$pager-disabled-color: $pagination-disabled-color !default; + + +//== Jumbotron +// +//## + +$jumbotron-padding: 30px !default; +$jumbotron-color: inherit !default; +$jumbotron-bg: $gray-lighter !default; +$jumbotron-heading-color: inherit !default; +$jumbotron-font-size: ceil(($font-size-base * 1.5)) !default; +$jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) !default; + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +$state-success-text: #3c763d !default; +$state-success-bg: #dff0d8 !default; +$state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default; + +$state-info-text: #31708f !default; +$state-info-bg: #d9edf7 !default; +$state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default; + +$state-warning-text: #8a6d3b !default; +$state-warning-bg: #fcf8e3 !default; +$state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) !default; + +$state-danger-text: #a94442 !default; +$state-danger-bg: #f2dede !default; +$state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) !default; + + +//== Tooltips +// +//## + +//** Tooltip max width +$tooltip-max-width: 200px !default; +//** Tooltip text color +$tooltip-color: #fff !default; +//** Tooltip background color +$tooltip-bg: #000 !default; +$tooltip-opacity: .9 !default; + +//** Tooltip arrow width +$tooltip-arrow-width: 5px !default; +//** Tooltip arrow color +$tooltip-arrow-color: $tooltip-bg !default; + + +//== Popovers +// +//## + +//** Popover body background color +$popover-bg: #fff !default; +//** Popover maximum width +$popover-max-width: 276px !default; +//** Popover border color +$popover-border-color: rgba(0,0,0,.2) !default; +//** Popover fallback border color +$popover-fallback-border-color: #ccc !default; + +//** Popover title background color +$popover-title-bg: darken($popover-bg, 3%) !default; + +//** Popover arrow width +$popover-arrow-width: 10px !default; +//** Popover arrow color +$popover-arrow-color: $popover-bg !default; + +//** Popover outer arrow width +$popover-arrow-outer-width: ($popover-arrow-width + 1) !default; +//** Popover outer arrow color +$popover-arrow-outer-color: fade_in($popover-border-color, 0.05) !default; +//** Popover outer arrow fallback color +$popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) !default; + + +//== Labels +// +//## + +//** Default label background color +$label-default-bg: $gray-light !default; +//** Primary label background color +$label-primary-bg: $brand-primary !default; +//** Success label background color +$label-success-bg: $brand-success !default; +//** Info label background color +$label-info-bg: $brand-info !default; +//** Warning label background color +$label-warning-bg: $brand-warning !default; +//** Danger label background color +$label-danger-bg: $brand-danger !default; + +//** Default label text color +$label-color: #fff !default; +//** Default text color of a linked label +$label-link-hover-color: #fff !default; + + +//== Modals +// +//## + +//** Padding applied to the modal body +$modal-inner-padding: 15px !default; + +//** Padding applied to the modal title +$modal-title-padding: 15px !default; +//** Modal title line-height +$modal-title-line-height: $line-height-base !default; + +//** Background color of modal content area +$modal-content-bg: #fff !default; +//** Modal content border color +$modal-content-border-color: rgba(0,0,0,.2) !default; +//** Modal content border color **for IE8** +$modal-content-fallback-border-color: #999 !default; + +//** Modal backdrop background color +$modal-backdrop-bg: #000 !default; +//** Modal backdrop opacity +$modal-backdrop-opacity: .5 !default; +//** Modal header border color +$modal-header-border-color: #e5e5e5 !default; +//** Modal footer border color +$modal-footer-border-color: $modal-header-border-color !default; + +$modal-lg: 900px !default; +$modal-md: 600px !default; +$modal-sm: 300px !default; + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +$alert-padding: 15px !default; +$alert-border-radius: $border-radius-base !default; +$alert-link-font-weight: bold !default; + +$alert-success-bg: $state-success-bg !default; +$alert-success-text: $state-success-text !default; +$alert-success-border: $state-success-border !default; + +$alert-info-bg: $state-info-bg !default; +$alert-info-text: $state-info-text !default; +$alert-info-border: $state-info-border !default; + +$alert-warning-bg: $state-warning-bg !default; +$alert-warning-text: $state-warning-text !default; +$alert-warning-border: $state-warning-border !default; + +$alert-danger-bg: $state-danger-bg !default; +$alert-danger-text: $state-danger-text !default; +$alert-danger-border: $state-danger-border !default; + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +$progress-bg: #f5f5f5 !default; +//** Progress bar text color +$progress-bar-color: #fff !default; +//** Variable for setting rounded corners on progress bar. +$progress-border-radius: $border-radius-base !default; + +//** Default progress bar color +$progress-bar-bg: $brand-primary !default; +//** Success progress bar color +$progress-bar-success-bg: $brand-success !default; +//** Warning progress bar color +$progress-bar-warning-bg: $brand-warning !default; +//** Danger progress bar color +$progress-bar-danger-bg: $brand-danger !default; +//** Info progress bar color +$progress-bar-info-bg: $brand-info !default; + + +//== List group +// +//## + +//** Background color on `.list-group-item` +$list-group-bg: #fff !default; +//** `.list-group-item` border color +$list-group-border: #ddd !default; +//** List group border radius +$list-group-border-radius: $border-radius-base !default; + +//** Background color of single list items on hover +$list-group-hover-bg: #f5f5f5 !default; +//** Text color of active list items +$list-group-active-color: $component-active-color !default; +//** Background color of active list items +$list-group-active-bg: $component-active-bg !default; +//** Border color of active list elements +$list-group-active-border: $list-group-active-bg !default; +//** Text color for content within active list items +$list-group-active-text-color: lighten($list-group-active-bg, 40%) !default; + +//** Text color of disabled list items +$list-group-disabled-color: $gray-light !default; +//** Background color of disabled list items +$list-group-disabled-bg: $gray-lighter !default; +//** Text color for content within disabled list items +$list-group-disabled-text-color: $list-group-disabled-color !default; + +$list-group-link-color: #555 !default; +$list-group-link-hover-color: $list-group-link-color !default; +$list-group-link-heading-color: #333 !default; + + +//== Panels +// +//## + +$panel-bg: #fff !default; +$panel-body-padding: 15px !default; +$panel-heading-padding: 10px 15px !default; +$panel-footer-padding: $panel-heading-padding !default; +$panel-border-radius: $border-radius-base !default; + +//** Border color for elements within panels +$panel-inner-border: #ddd !default; +$panel-footer-bg: #f5f5f5 !default; + +$panel-default-text: $gray-dark !default; +$panel-default-border: #ddd !default; +$panel-default-heading-bg: #f5f5f5 !default; + +$panel-primary-text: #fff !default; +$panel-primary-border: $brand-primary !default; +$panel-primary-heading-bg: $brand-primary !default; + +$panel-success-text: $state-success-text !default; +$panel-success-border: $state-success-border !default; +$panel-success-heading-bg: $state-success-bg !default; + +$panel-info-text: $state-info-text !default; +$panel-info-border: $state-info-border !default; +$panel-info-heading-bg: $state-info-bg !default; + +$panel-warning-text: $state-warning-text !default; +$panel-warning-border: $state-warning-border !default; +$panel-warning-heading-bg: $state-warning-bg !default; + +$panel-danger-text: $state-danger-text !default; +$panel-danger-border: $state-danger-border !default; +$panel-danger-heading-bg: $state-danger-bg !default; + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +$thumbnail-padding: 4px !default; +//** Thumbnail background color +$thumbnail-bg: $body-bg !default; +//** Thumbnail border color +$thumbnail-border: #ddd !default; +//** Thumbnail border radius +$thumbnail-border-radius: $border-radius-base !default; + +//** Custom text color for thumbnail captions +$thumbnail-caption-color: $text-color !default; +//** Padding around the thumbnail caption +$thumbnail-caption-padding: 9px !default; + + +//== Wells +// +//## + +$well-bg: #f5f5f5 !default; +$well-border: darken($well-bg, 7%) !default; + + +//== Badges +// +//## + +$badge-color: #fff !default; +//** Linked badge text color on hover +$badge-link-hover-color: #fff !default; +$badge-bg: $gray-light !default; + +//** Badge text color in active nav link +$badge-active-color: $link-color !default; +//** Badge background color in active nav link +$badge-active-bg: #fff !default; + +$badge-font-weight: bold !default; +$badge-line-height: 1 !default; +$badge-border-radius: 10px !default; + + +//== Breadcrumbs +// +//## + +$breadcrumb-padding-vertical: 8px !default; +$breadcrumb-padding-horizontal: 15px !default; +//** Breadcrumb background color +$breadcrumb-bg: #f5f5f5 !default; +//** Breadcrumb text color +$breadcrumb-color: #ccc !default; +//** Text color of current page in the breadcrumb +$breadcrumb-active-color: $gray-light !default; +//** Textual separator for between breadcrumb elements +$breadcrumb-separator: "/" !default; + + +//== Carousel +// +//## + +$carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default; + +$carousel-control-color: #fff !default; +$carousel-control-width: 15% !default; +$carousel-control-opacity: .5 !default; +$carousel-control-font-size: 20px !default; + +$carousel-indicator-active-bg: #fff !default; +$carousel-indicator-border-color: #fff !default; + +$carousel-caption-color: #fff !default; + + +//== Close +// +//## + +$close-font-weight: bold !default; +$close-color: #000 !default; +$close-text-shadow: 0 1px 0 #fff !default; + + +//== Code +// +//## + +$code-color: #c7254e !default; +$code-bg: #f9f2f4 !default; + +$kbd-color: #fff !default; +$kbd-bg: #333 !default; + +$pre-bg: #f5f5f5 !default; +$pre-color: $gray-dark !default; +$pre-border-color: #ccc !default; +$pre-scrollable-max-height: 340px !default; + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +$component-offset-horizontal: 180px !default; +//** Text muted color +$text-muted: $gray-light !default; +//** Abbreviations and acronyms border color +$abbr-border-color: $gray-light !default; +//** Headings small color +$headings-small-color: $gray-light !default; +//** Blockquote small color +$blockquote-small-color: $gray-light !default; +//** Blockquote font size +$blockquote-font-size: ($font-size-base * 1.25) !default; +//** Blockquote border color +$blockquote-border-color: $gray-lighter !default; +//** Page header border color +$page-header-border-color: $gray-lighter !default; +//** Width of horizontal description list titles +$dl-horizontal-offset: $component-offset-horizontal !default; +//** Point at which .dl-horizontal becomes horizontal +$dl-horizontal-breakpoint: $grid-float-breakpoint !default; +//** Horizontal line color. +$hr-border: $gray-lighter !default; diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/_wells.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_wells.scss new file mode 100644 index 0000000..b865711 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/_wells.scss @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: $well-bg; + border: 1px solid $well-border; + border-radius: $border-radius-base; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-lg { + padding: 24px; + border-radius: $border-radius-large; +} +.well-sm { + padding: 9px; + border-radius: $border-radius-small; +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_alerts.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_alerts.scss new file mode 100644 index 0000000..3faf0b5 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_alerts.scss @@ -0,0 +1,14 @@ +// Alerts + +@mixin alert-variant($background, $border, $text-color) { + background-color: $background; + border-color: $border; + color: $text-color; + + hr { + border-top-color: darken($border, 5%); + } + .alert-link { + color: darken($text-color, 10%); + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_background-variant.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_background-variant.scss new file mode 100644 index 0000000..4c7769e --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_background-variant.scss @@ -0,0 +1,12 @@ +// Contextual backgrounds + +// [converter] $parent hack +@mixin bg-variant($parent, $color) { + #{$parent} { + background-color: $color; + } + a#{$parent}:hover, + a#{$parent}:focus { + background-color: darken($color, 10%); + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_border-radius.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_border-radius.scss new file mode 100644 index 0000000..ce19499 --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_border-radius.scss @@ -0,0 +1,18 @@ +// Single side border-radius + +@mixin border-top-radius($radius) { + border-top-right-radius: $radius; + border-top-left-radius: $radius; +} +@mixin border-right-radius($radius) { + border-bottom-right-radius: $radius; + border-top-right-radius: $radius; +} +@mixin border-bottom-radius($radius) { + border-bottom-right-radius: $radius; + border-bottom-left-radius: $radius; +} +@mixin border-left-radius($radius) { + border-bottom-left-radius: $radius; + border-top-left-radius: $radius; +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_buttons.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_buttons.scss new file mode 100644 index 0000000..b93f84b --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_buttons.scss @@ -0,0 +1,65 @@ +// Button variants +// +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons + +@mixin button-variant($color, $background, $border) { + color: $color; + background-color: $background; + border-color: $border; + + &:focus, + &.focus { + color: $color; + background-color: darken($background, 10%); + border-color: darken($border, 25%); + } + &:hover { + color: $color; + background-color: darken($background, 10%); + border-color: darken($border, 12%); + } + &:active, + &.active, + .open > &.dropdown-toggle { + color: $color; + background-color: darken($background, 10%); + border-color: darken($border, 12%); + + &:hover, + &:focus, + &.focus { + color: $color; + background-color: darken($background, 17%); + border-color: darken($border, 25%); + } + } + &:active, + &.active, + .open > &.dropdown-toggle { + background-image: none; + } + &.disabled, + &[disabled], + fieldset[disabled] & { + &:hover, + &:focus, + &.focus { + background-color: $background; + border-color: $border; + } + } + + .badge { + color: $background; + background-color: $color; + } +} + +// Button sizes +@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) { + padding: $padding-vertical $padding-horizontal; + font-size: $font-size; + line-height: $line-height; + border-radius: $border-radius; +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_center-block.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_center-block.scss new file mode 100644 index 0000000..e06fb5e --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_center-block.scss @@ -0,0 +1,7 @@ +// Center-align a block level element + +@mixin center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_clearfix.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_clearfix.scss new file mode 100644 index 0000000..dc3e2ab --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_clearfix.scss @@ -0,0 +1,22 @@ +// Clearfix +// +// For modern browsers +// 1. The space content is one way to avoid an Opera bug when the +// contenteditable attribute is included anywhere else in the document. +// Otherwise it causes space to appear at the top and bottom of elements +// that are clearfixed. +// 2. The use of `table` rather than `block` is only necessary if using +// `:before` to contain the top-margins of child elements. +// +// Source: http://nicolasgallagher.com/micro-clearfix-hack/ + +@mixin clearfix() { + &:before, + &:after { + content: " "; // 1 + display: table; // 2 + } + &:after { + clear: both; + } +} diff --git a/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_forms.scss b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_forms.scss new file mode 100644 index 0000000..277aa5f --- /dev/null +++ b/app/vendor/bootstrap/assets/stylesheets/bootstrap/mixins/_forms.scss @@ -0,0 +1,88 @@ +// Form validation states +// +// Used in forms.less to generate the form validation CSS for warnings, errors, +// and successes. + +@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) { + // Color the label and help text + .help-block, + .control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label { + color: $text-color; + } + // Set the border and box shadow on specific inputs to match + .form-control { + border-color: $border-color; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken($border-color, 10%); + $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%); + @include box-shadow($shadow); + } + } + // Set validation states also for addons + .input-group-addon { + color: $text-color; + border-color: $border-color; + background-color: $background-color; + } + // Optional feedback icon + .form-control-feedback { + color: $text-color; + } +} + + +// Form control focus state +// +// Generate a customized focus state and for any input with the specified color, +// which defaults to the `$input-border-focus` variable. +// +// We highly encourage you to not customize the default value, but instead use +// this to tweak colors on an as-needed basis. This aesthetic change is based on +// WebKit's default styles, but applicable to a wider range of browsers. Its +// usability and accessibility should be taken into account with any change. +// +// Example usage: change the default blue border and shadow to white for better +// contrast against a dark gray background. +@mixin form-control-focus($color: $input-border-focus) { + $color-rgba: rgba(red($color), green($color), blue($color), .6); + &:focus { + border-color: $color; + outline: 0; + @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba); + } +} + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `` background color +// $input-bg: #fff +//** `` background color +// $input-bg-disabled: $gray-lighter + +//** Text color for ``s +// $input-color: $gray +//** `` border color +// $input-border: #ccc + +// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4 +//** Default `.form-control` border radius +// This has no effect on ``s in CSS. +// $input-border-radius: $border-radius-base +//** Large `.form-control` border radius +// $input-border-radius-large: $border-radius-large +//** Small `.form-control` border radius +// $input-border-radius-small: $border-radius-small + +//** Border color for inputs on focus +// $input-border-focus: #66afe9 + +//** Placeholder text color +// $input-color-placeholder: #999 + +//** Default `.form-control` height +// $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) +//** Large `.form-control` height +// $input-height-large: (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) +//** Small `.form-control` height +// $input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) + +//** `.form-group` margin +// $form-group-margin-bottom: 15px + +// $legend-color: $gray-dark +// $legend-border-color: #e5e5e5 + +//** Background color for textual input addons +// $input-group-addon-bg: $gray-lighter +//** Border color for textual input addons +// $input-group-addon-border-color: $input-border + +//** Disabled cursor for form controls and buttons. +// $cursor-disabled: not-allowed + + +//== Dropdowns +// +//## Dropdown menu container and contents. + +//** Background for the dropdown menu. +// $dropdown-bg: #fff +//** Dropdown menu `border-color`. +// $dropdown-border: rgba(0,0,0,.15) +//** Dropdown menu `border-color` **for IE8**. +// $dropdown-fallback-border: #ccc +//** Divider color for between dropdown items. +// $dropdown-divider-bg: #e5e5e5 + +//** Dropdown link text color. +// $dropdown-link-color: $gray-dark +//** Hover color for dropdown links. +// $dropdown-link-hover-color: darken($gray-dark, 5%) +//** Hover background for dropdown links. +// $dropdown-link-hover-bg: #f5f5f5 + +//** Active dropdown menu item text color. +// $dropdown-link-active-color: $component-active-color +//** Active dropdown menu item background color. +// $dropdown-link-active-bg: $component-active-bg + +//** Disabled dropdown menu item background color. +// $dropdown-link-disabled-color: $gray-light + +//** Text color for headers within dropdown menus. +// $dropdown-header-color: $gray-light + +//** Deprecated `$dropdown-caret-color` as of v3.1.0 +// $dropdown-caret-color: #000 + + +//-- Z-index master list +// +// Warning: Avoid customizing these values. They're used for a bird's eye view +// of components dependent on the z-axis and are designed to all work together. +// +// Note: These variables are not generated into the Customizer. + +// $zindex-navbar: 1000 +// $zindex-dropdown: 1000 +// $zindex-popover: 1060 +// $zindex-tooltip: 1070 +// $zindex-navbar-fixed: 1030 +// $zindex-modal-background: 1040 +// $zindex-modal: 1050 + + +//== Media queries breakpoints +// +//## Define the breakpoints at which your layout will change, adapting to different screen sizes. + +// Extra small screen / phone +//** Deprecated `$screen-xs` as of v3.0.1 +// $screen-xs: 480px +//** Deprecated `$screen-xs-min` as of v3.2.0 +// $screen-xs-min: $screen-xs +//** Deprecated `$screen-phone` as of v3.0.1 +// $screen-phone: $screen-xs-min + +// Small screen / tablet +//** Deprecated `$screen-sm` as of v3.0.1 +// $screen-sm: 768px +// $screen-sm-min: $screen-sm +//** Deprecated `$screen-tablet` as of v3.0.1 +// $screen-tablet: $screen-sm-min + +// Medium screen / desktop +//** Deprecated `$screen-md` as of v3.0.1 +// $screen-md: 992px +// $screen-md-min: $screen-md +//** Deprecated `$screen-desktop` as of v3.0.1 +// $screen-desktop: $screen-md-min + +// Large screen / wide desktop +//** Deprecated `$screen-lg` as of v3.0.1 +// $screen-lg: 1200px +// $screen-lg-min: $screen-lg +//** Deprecated `$screen-lg-desktop` as of v3.0.1 +// $screen-lg-desktop: $screen-lg-min + +// So media queries don't overlap when required, provide a maximum +// $screen-xs-max: ($screen-sm-min - 1) +// $screen-sm-max: ($screen-md-min - 1) +// $screen-md-max: ($screen-lg-min - 1) + + +//== Grid system +// +//## Define your custom responsive grid. + +//** Number of columns in the grid. +// $grid-columns: 12 +//** Padding between columns. Gets divided in half for the left and right. +// $grid-gutter-width: 30px +// Navbar collapse +//** Point at which the navbar becomes uncollapsed. +// $grid-float-breakpoint: $screen-sm-min +//** Point at which the navbar begins collapsing. +// $grid-float-breakpoint-max: ($grid-float-breakpoint - 1) + + +//== Container sizes +// +//## Define the maximum width of `.container` for different screen sizes. + +// Small screen / tablet +// $container-tablet: (720px + $grid-gutter-width) +//** For `$screen-sm-min` and up. +// $container-sm: $container-tablet + +// Medium screen / desktop +// $container-desktop: (940px + $grid-gutter-width) +//** For `$screen-md-min` and up. +// $container-md: $container-desktop + +// Large screen / wide desktop +// $container-large-desktop: (1140px + $grid-gutter-width) +//** For `$screen-lg-min` and up. +// $container-lg: $container-large-desktop + + +//== Navbar +// +//## + +// Basics of a navbar +// $navbar-height: 50px +// $navbar-margin-bottom: $line-height-computed +// $navbar-border-radius: $border-radius-base +// $navbar-padding-horizontal: floor(($grid-gutter-width / 2)) +// $navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) +// $navbar-collapse-max-height: 340px + +// $navbar-default-color: #777 +// $navbar-default-bg: #f8f8f8 +// $navbar-default-border: darken($navbar-default-bg, 6.5%) + +// Navbar links +// $navbar-default-link-color: #777 +// $navbar-default-link-hover-color: #333 +// $navbar-default-link-hover-bg: transparent +// $navbar-default-link-active-color: #555 +// $navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) +// $navbar-default-link-disabled-color: #ccc +// $navbar-default-link-disabled-bg: transparent + +// Navbar brand label +// $navbar-default-brand-color: $navbar-default-link-color +// $navbar-default-brand-hover-color: darken($navbar-default-brand-color, 10%) +// $navbar-default-brand-hover-bg: transparent + +// Navbar toggle +// $navbar-default-toggle-hover-bg: #ddd +// $navbar-default-toggle-icon-bar-bg: #888 +// $navbar-default-toggle-border-color: #ddd + + +//=== Inverted navbar +// Reset inverted navbar basics +// $navbar-inverse-color: lighten($gray-light, 15%) +// $navbar-inverse-bg: #222 +// $navbar-inverse-border: darken($navbar-inverse-bg, 10%) + +// Inverted navbar links +// $navbar-inverse-link-color: lighten($gray-light, 15%) +// $navbar-inverse-link-hover-color: #fff +// $navbar-inverse-link-hover-bg: transparent +// $navbar-inverse-link-active-color: $navbar-inverse-link-hover-color +// $navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) +// $navbar-inverse-link-disabled-color: #444 +// $navbar-inverse-link-disabled-bg: transparent + +// Inverted navbar brand label +// $navbar-inverse-brand-color: $navbar-inverse-link-color +// $navbar-inverse-brand-hover-color: #fff +// $navbar-inverse-brand-hover-bg: transparent + +// Inverted navbar toggle +// $navbar-inverse-toggle-hover-bg: #333 +// $navbar-inverse-toggle-icon-bar-bg: #fff +// $navbar-inverse-toggle-border-color: #333 + + +//== Navs +// +//## + +//=== Shared nav styles +// $nav-link-padding: 10px 15px +// $nav-link-hover-bg: $gray-lighter + +// $nav-disabled-link-color: $gray-light +// $nav-disabled-link-hover-color: $gray-light + +//== Tabs +// $nav-tabs-border-color: #ddd + +// $nav-tabs-link-hover-border-color: $gray-lighter + +// $nav-tabs-active-link-hover-bg: $body-bg +// $nav-tabs-active-link-hover-color: $gray +// $nav-tabs-active-link-hover-border-color: #ddd + +// $nav-tabs-justified-link-border-color: #ddd +// $nav-tabs-justified-active-link-border-color: $body-bg + +//== Pills +// $nav-pills-border-radius: $border-radius-base +// $nav-pills-active-link-hover-bg: $component-active-bg +// $nav-pills-active-link-hover-color: $component-active-color + + +//== Pagination +// +//## + +// $pagination-color: $link-color +// $pagination-bg: #fff +// $pagination-border: #ddd + +// $pagination-hover-color: $link-hover-color +// $pagination-hover-bg: $gray-lighter +// $pagination-hover-border: #ddd + +// $pagination-active-color: #fff +// $pagination-active-bg: $brand-primary +// $pagination-active-border: $brand-primary + +// $pagination-disabled-color: $gray-light +// $pagination-disabled-bg: #fff +// $pagination-disabled-border: #ddd + + +//== Pager +// +//## + +// $pager-bg: $pagination-bg +// $pager-border: $pagination-border +// $pager-border-radius: 15px + +// $pager-hover-bg: $pagination-hover-bg + +// $pager-active-bg: $pagination-active-bg +// $pager-active-color: $pagination-active-color + +// $pager-disabled-color: $pagination-disabled-color + + +//== Jumbotron +// +//## + +// $jumbotron-padding: 30px +// $jumbotron-color: inherit +// $jumbotron-bg: $gray-lighter +// $jumbotron-heading-color: inherit +// $jumbotron-font-size: ceil(($font-size-base * 1.5)) +// $jumbotron-heading-font-size: ceil(($font-size-base * 4.5)) + + +//== Form states and alerts +// +//## Define colors for form feedback states and, by default, alerts. + +// $state-success-text: #3c763d +// $state-success-bg: #dff0d8 +// $state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) + +// $state-info-text: #31708f +// $state-info-bg: #d9edf7 +// $state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) + +// $state-warning-text: #8a6d3b +// $state-warning-bg: #fcf8e3 +// $state-warning-border: darken(adjust-hue($state-warning-bg, -10), 5%) + +// $state-danger-text: #a94442 +// $state-danger-bg: #f2dede +// $state-danger-border: darken(adjust-hue($state-danger-bg, -10), 5%) + + +//== Tooltips +// +//## + +//** Tooltip max width +// $tooltip-max-width: 200px +//** Tooltip text color +// $tooltip-color: #fff +//** Tooltip background color +// $tooltip-bg: #000 +// $tooltip-opacity: .9 + +//** Tooltip arrow width +// $tooltip-arrow-width: 5px +//** Tooltip arrow color +// $tooltip-arrow-color: $tooltip-bg + + +//== Popovers +// +//## + +//** Popover body background color +// $popover-bg: #fff +//** Popover maximum width +// $popover-max-width: 276px +//** Popover border color +// $popover-border-color: rgba(0,0,0,.2) +//** Popover fallback border color +// $popover-fallback-border-color: #ccc + +//** Popover title background color +// $popover-title-bg: darken($popover-bg, 3%) + +//** Popover arrow width +// $popover-arrow-width: 10px +//** Popover arrow color +// $popover-arrow-color: $popover-bg + +//** Popover outer arrow width +// $popover-arrow-outer-width: ($popover-arrow-width + 1) +//** Popover outer arrow color +// $popover-arrow-outer-color: fade_in($popover-border-color, 0.05) +//** Popover outer arrow fallback color +// $popover-arrow-outer-fallback-color: darken($popover-fallback-border-color, 20%) + + +//== Labels +// +//## + +//** Default label background color +// $label-default-bg: $gray-light +//** Primary label background color +// $label-primary-bg: $brand-primary +//** Success label background color +// $label-success-bg: $brand-success +//** Info label background color +// $label-info-bg: $brand-info +//** Warning label background color +// $label-warning-bg: $brand-warning +//** Danger label background color +// $label-danger-bg: $brand-danger + +//** Default label text color +// $label-color: #fff +//** Default text color of a linked label +// $label-link-hover-color: #fff + + +//== Modals +// +//## + +//** Padding applied to the modal body +// $modal-inner-padding: 15px + +//** Padding applied to the modal title +// $modal-title-padding: 15px +//** Modal title line-height +// $modal-title-line-height: $line-height-base + +//** Background color of modal content area +// $modal-content-bg: #fff +//** Modal content border color +// $modal-content-border-color: rgba(0,0,0,.2) +//** Modal content border color **for IE8** +// $modal-content-fallback-border-color: #999 + +//** Modal backdrop background color +// $modal-backdrop-bg: #000 +//** Modal backdrop opacity +// $modal-backdrop-opacity: .5 +//** Modal header border color +// $modal-header-border-color: #e5e5e5 +//** Modal footer border color +// $modal-footer-border-color: $modal-header-border-color + +// $modal-lg: 900px +// $modal-md: 600px +// $modal-sm: 300px + + +//== Alerts +// +//## Define alert colors, border radius, and padding. + +// $alert-padding: 15px +// $alert-border-radius: $border-radius-base +// $alert-link-font-weight: bold + +// $alert-success-bg: $state-success-bg +// $alert-success-text: $state-success-text +// $alert-success-border: $state-success-border + +// $alert-info-bg: $state-info-bg +// $alert-info-text: $state-info-text +// $alert-info-border: $state-info-border + +// $alert-warning-bg: $state-warning-bg +// $alert-warning-text: $state-warning-text +// $alert-warning-border: $state-warning-border + +// $alert-danger-bg: $state-danger-bg +// $alert-danger-text: $state-danger-text +// $alert-danger-border: $state-danger-border + + +//== Progress bars +// +//## + +//** Background color of the whole progress component +// $progress-bg: #f5f5f5 +//** Progress bar text color +// $progress-bar-color: #fff +//** Variable for setting rounded corners on progress bar. +// $progress-border-radius: $border-radius-base + +//** Default progress bar color +// $progress-bar-bg: $brand-primary +//** Success progress bar color +// $progress-bar-success-bg: $brand-success +//** Warning progress bar color +// $progress-bar-warning-bg: $brand-warning +//** Danger progress bar color +// $progress-bar-danger-bg: $brand-danger +//** Info progress bar color +// $progress-bar-info-bg: $brand-info + + +//== List group +// +//## + +//** Background color on `.list-group-item` +// $list-group-bg: #fff +//** `.list-group-item` border color +// $list-group-border: #ddd +//** List group border radius +// $list-group-border-radius: $border-radius-base + +//** Background color of single list items on hover +// $list-group-hover-bg: #f5f5f5 +//** Text color of active list items +// $list-group-active-color: $component-active-color +//** Background color of active list items +// $list-group-active-bg: $component-active-bg +//** Border color of active list elements +// $list-group-active-border: $list-group-active-bg +//** Text color for content within active list items +// $list-group-active-text-color: lighten($list-group-active-bg, 40%) + +//** Text color of disabled list items +// $list-group-disabled-color: $gray-light +//** Background color of disabled list items +// $list-group-disabled-bg: $gray-lighter +//** Text color for content within disabled list items +// $list-group-disabled-text-color: $list-group-disabled-color + +// $list-group-link-color: #555 +// $list-group-link-hover-color: $list-group-link-color +// $list-group-link-heading-color: #333 + + +//== Panels +// +//## + +// $panel-bg: #fff +// $panel-body-padding: 15px +// $panel-heading-padding: 10px 15px +// $panel-footer-padding: $panel-heading-padding +// $panel-border-radius: $border-radius-base + +//** Border color for elements within panels +// $panel-inner-border: #ddd +// $panel-footer-bg: #f5f5f5 + +// $panel-default-text: $gray-dark +// $panel-default-border: #ddd +// $panel-default-heading-bg: #f5f5f5 + +// $panel-primary-text: #fff +// $panel-primary-border: $brand-primary +// $panel-primary-heading-bg: $brand-primary + +// $panel-success-text: $state-success-text +// $panel-success-border: $state-success-border +// $panel-success-heading-bg: $state-success-bg + +// $panel-info-text: $state-info-text +// $panel-info-border: $state-info-border +// $panel-info-heading-bg: $state-info-bg + +// $panel-warning-text: $state-warning-text +// $panel-warning-border: $state-warning-border +// $panel-warning-heading-bg: $state-warning-bg + +// $panel-danger-text: $state-danger-text +// $panel-danger-border: $state-danger-border +// $panel-danger-heading-bg: $state-danger-bg + + +//== Thumbnails +// +//## + +//** Padding around the thumbnail image +// $thumbnail-padding: 4px +//** Thumbnail background color +// $thumbnail-bg: $body-bg +//** Thumbnail border color +// $thumbnail-border: #ddd +//** Thumbnail border radius +// $thumbnail-border-radius: $border-radius-base + +//** Custom text color for thumbnail captions +// $thumbnail-caption-color: $text-color +//** Padding around the thumbnail caption +// $thumbnail-caption-padding: 9px + + +//== Wells +// +//## + +// $well-bg: #f5f5f5 +// $well-border: darken($well-bg, 7%) + + +//== Badges +// +//## + +// $badge-color: #fff +//** Linked badge text color on hover +// $badge-link-hover-color: #fff +// $badge-bg: $gray-light + +//** Badge text color in active nav link +// $badge-active-color: $link-color +//** Badge background color in active nav link +// $badge-active-bg: #fff + +// $badge-font-weight: bold +// $badge-line-height: 1 +// $badge-border-radius: 10px + + +//== Breadcrumbs +// +//## + +// $breadcrumb-padding-vertical: 8px +// $breadcrumb-padding-horizontal: 15px +//** Breadcrumb background color +// $breadcrumb-bg: #f5f5f5 +//** Breadcrumb text color +// $breadcrumb-color: #ccc +//** Text color of current page in the breadcrumb +// $breadcrumb-active-color: $gray-light +//** Textual separator for between breadcrumb elements +// $breadcrumb-separator: "/" + + +//== Carousel +// +//## + +// $carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) + +// $carousel-control-color: #fff +// $carousel-control-width: 15% +// $carousel-control-opacity: .5 +// $carousel-control-font-size: 20px + +// $carousel-indicator-active-bg: #fff +// $carousel-indicator-border-color: #fff + +// $carousel-caption-color: #fff + + +//== Close +// +//## + +// $close-font-weight: bold +// $close-color: #000 +// $close-text-shadow: 0 1px 0 #fff + + +//== Code +// +//## + +// $code-color: #c7254e +// $code-bg: #f9f2f4 + +// $kbd-color: #fff +// $kbd-bg: #333 + +// $pre-bg: #f5f5f5 +// $pre-color: $gray-dark +// $pre-border-color: #ccc +// $pre-scrollable-max-height: 340px + + +//== Type +// +//## + +//** Horizontal offset for forms and lists. +// $component-offset-horizontal: 180px +//** Text muted color +// $text-muted: $gray-light +//** Abbreviations and acronyms border color +// $abbr-border-color: $gray-light +//** Headings small color +// $headings-small-color: $gray-light +//** Blockquote small color +// $blockquote-small-color: $gray-light +//** Blockquote font size +// $blockquote-font-size: ($font-size-base * 1.25) +//** Blockquote border color +// $blockquote-border-color: $gray-lighter +//** Page header border color +// $page-header-border-color: $gray-lighter +//** Width of horizontal description list titles +// $dl-horizontal-offset: $component-offset-horizontal +//** Point at which .dl-horizontal becomes horizontal +// $dl-horizontal-breakpoint: $grid-float-breakpoint +//** Horizontal line color. +// $hr-border: $gray-lighter \ No newline at end of file diff --git a/app/vendor/bootstrap/templates/project/manifest.rb b/app/vendor/bootstrap/templates/project/manifest.rb new file mode 100644 index 0000000..93b4fac --- /dev/null +++ b/app/vendor/bootstrap/templates/project/manifest.rb @@ -0,0 +1,20 @@ +description 'Bootstrap for Sass' + +# Stylesheet importing bootstrap +stylesheet 'styles.sass' + +# Bootstrap variable overrides file +stylesheet '_bootstrap-variables.sass', :to => '_bootstrap-variables.sass' + +# Copy JS and fonts +manifest = Pathname.new(File.dirname(__FILE__)) +assets = File.expand_path('../../assets', manifest) +{:javascript => 'javascripts', + :font => 'fonts' +}.each do |method, dir| + root = Pathname.new(assets).join(dir) + Dir.glob root.join('**', '*.*') do |path| + path = Pathname.new(path) + send method, path.relative_path_from(manifest).to_s, :to => path.relative_path_from(root).to_s + end +end diff --git a/app/vendor/bootstrap/templates/project/styles.sass b/app/vendor/bootstrap/templates/project/styles.sass new file mode 100644 index 0000000..fb4a2e9 --- /dev/null +++ b/app/vendor/bootstrap/templates/project/styles.sass @@ -0,0 +1,6 @@ +// Import Bootstrap Compass integration +@import "bootstrap-compass" +// Import custom Bootstrap variables +@import "bootstrap-variables" +// Import Bootstrap for Sass +@import "bootstrap" diff --git a/app/vendor/bootstrap/test/compass_test.rb b/app/vendor/bootstrap/test/compass_test.rb new file mode 100644 index 0000000..1811ca2 --- /dev/null +++ b/app/vendor/bootstrap/test/compass_test.rb @@ -0,0 +1,9 @@ +require 'test_helper' + +class CompassTest < Minitest::Test + def test_create_project + command = 'rm -rf tmp/new-compass-project; bundle exec compass create tmp/new-compass-project -r bootstrap-sass --using bootstrap --trace --force' + success = silence_stdout_if(!ENV['VERBOSE']) { system(command) } + assert success, 'Compass project creation failed!' + end +end diff --git a/app/vendor/bootstrap/test/compilation_test.rb b/app/vendor/bootstrap/test/compilation_test.rb new file mode 100644 index 0000000..6808813 --- /dev/null +++ b/app/vendor/bootstrap/test/compilation_test.rb @@ -0,0 +1,18 @@ +require 'test_helper' +require 'fileutils' +require 'sass' + +class CompilationTest < Minitest::Test + def test_compilation + path = 'assets/stylesheets' + %w(_bootstrap bootstrap/_theme).each do |file| + FileUtils.rm_rf('.sass-cache', secure: true) + engine = Sass::Engine.for_file("#{path}/#{file}.scss", syntax: :scss, load_paths: [path]) + FileUtils.mkdir_p("tmp/#{File.dirname(file)}") + File.open("tmp/#{file}.css", 'w') { |f| + f.write engine.render + } + assert true # nothing was raised + end + end +end diff --git a/app/vendor/bootstrap/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png b/app/vendor/bootstrap/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png new file mode 100644 index 0000000..622a865 Binary files /dev/null and b/app/vendor/bootstrap/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png differ diff --git a/app/vendor/bootstrap/test/dummy_node_mincer/application.css.ejs.scss b/app/vendor/bootstrap/test/dummy_node_mincer/application.css.ejs.scss new file mode 100644 index 0000000..4b1a0e0 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_node_mincer/application.css.ejs.scss @@ -0,0 +1,6 @@ +@import "bootstrap-mincer"; +@import "bootstrap"; + +#image-retina { + @include img-retina("apple-touch-icon-144-precomposed.png", "apple-touch-icon-144-precomposed.png", 72px, 72px); +} diff --git a/app/vendor/bootstrap/test/dummy_node_mincer/manifest.js b/app/vendor/bootstrap/test/dummy_node_mincer/manifest.js new file mode 100644 index 0000000..7935b97 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_node_mincer/manifest.js @@ -0,0 +1,87 @@ +'use strict'; + + +// Build script from https://github.com/nodeca/mincer/tree/master/examples + +// +// Require module +// + + +var Mincer = require('mincer'); + + +// +// Get Mincer environment +// + + +// +// Configure Mincers logger, by default, all +// messages are going to the middle of nowhere +// + + +Mincer.logger.use(console); + + +// +// Create and export environment +// + + +var environment = new Mincer.Environment(process.cwd()); + + +// +// Configure environment load paths (where to find ssets) +// + +// Include bootstrap scss load path +var bootstrapPath = '../../'; +environment.appendPath(bootstrapPath + 'assets/stylesheets'); + +// Include fonts load path +environment.appendPath(bootstrapPath + 'assets/fonts'); + +// Include dir with assets, root just for test +environment.appendPath('./'); + + +// +// Define environment essential *_path helper that will be available in the +// processed assets. See `assets/stylesheets/app.css.ejs` for example. +// + + +environment.ContextClass.defineAssetPath(function (pathname, options) { + var asset = this.environment.findAsset(pathname, options); + + if (!asset) { + throw new Error("File " + pathname + " not found"); + } + + return '/assets/' + asset.digestPath; +}); + + +// +// Create and compile Manifest +// + +var manifest_path = process.argv[2] || __dirname + '/assets'; + +var manifest = new Mincer.Manifest(environment, manifest_path); + + +manifest.compile(['application.css'], function (err, assetsData) { + if (err) { + console.error("Failed compile assets: " + (err.message || err.toString())); + process.exit(128); + } + + console.info('\n\nAssets were successfully compiled.\n' + + 'Manifest data (a proper JSON) was written to:\n' + + manifest.path + '\n\n'); + console.dir(assetsData); +}); diff --git a/app/vendor/bootstrap/test/dummy_rails/README.rdoc b/app/vendor/bootstrap/test/dummy_rails/README.rdoc new file mode 100644 index 0000000..5604f2d --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/README.rdoc @@ -0,0 +1,3 @@ +== README + +This is a minimal Rails app for testing diff --git a/app/vendor/bootstrap/test/dummy_rails/Rakefile b/app/vendor/bootstrap/test/dummy_rails/Rakefile new file mode 100644 index 0000000..4135d7a --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +Dummy::Application.load_tasks diff --git a/app/vendor/bootstrap/test/dummy_rails/app/assets/images/.keep b/app/vendor/bootstrap/test/dummy_rails/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/vendor/bootstrap/test/dummy_rails/app/assets/javascripts/application.js b/app/vendor/bootstrap/test/dummy_rails/app/assets/javascripts/application.js new file mode 100644 index 0000000..8021374 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/assets/javascripts/application.js @@ -0,0 +1,2 @@ +//= require jquery +//= require bootstrap-sprockets diff --git a/app/vendor/bootstrap/test/dummy_rails/app/assets/stylesheets/application.sass b/app/vendor/bootstrap/test/dummy_rails/app/assets/stylesheets/application.sass new file mode 100644 index 0000000..838dc90 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/assets/stylesheets/application.sass @@ -0,0 +1,2 @@ +@import 'bootstrap-sprockets' +@import 'bootstrap' diff --git a/app/vendor/bootstrap/test/dummy_rails/app/controllers/application_controller.rb b/app/vendor/bootstrap/test/dummy_rails/app/controllers/application_controller.rb new file mode 100644 index 0000000..d83690e --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/controllers/application_controller.rb @@ -0,0 +1,5 @@ +class ApplicationController < ActionController::Base + # Prevent CSRF attacks by raising an exception. + # For APIs, you may want to use :null_session instead. + protect_from_forgery with: :exception +end diff --git a/app/vendor/bootstrap/test/dummy_rails/app/controllers/pages_controller.rb b/app/vendor/bootstrap/test/dummy_rails/app/controllers/pages_controller.rb new file mode 100644 index 0000000..b279851 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/controllers/pages_controller.rb @@ -0,0 +1,4 @@ +class PagesController < ApplicationController + def root + end +end \ No newline at end of file diff --git a/app/vendor/bootstrap/test/dummy_rails/app/helpers/application_helper.rb b/app/vendor/bootstrap/test/dummy_rails/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/vendor/bootstrap/test/dummy_rails/app/views/layouts/application.html.erb b/app/vendor/bootstrap/test/dummy_rails/app/views/layouts/application.html.erb new file mode 100644 index 0000000..7ce6339 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + bootstrap-sass Dummy App + <%= stylesheet_link_tag 'application', media: "all", 'data-turbolinks-track' => true %> + <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/app/vendor/bootstrap/test/dummy_rails/app/views/pages/root.html.slim b/app/vendor/bootstrap/test/dummy_rails/app/views/pages/root.html.slim new file mode 100644 index 0000000..84fd1e2 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/app/views/pages/root.html.slim @@ -0,0 +1,84 @@ +.navbar.navbar-inverse: .container-fluid + .navbar-header + button.navbar-toggle.collapsed type="button" data-toggle="collapse" data-target="#c1" + span.sr-only Toggle navigation + span.icon-bar + span.icon-bar + span.icon-bar + a.navbar-brand href="#" Bootstrap for Sass Test Rails App + .collapse.navbar-collapse#c1 + ul.nav.navbar-nav + li.active: a href="#" + ' Home + span.sr-only (current) + li: a href="#" Link + li.dropdown + a.dropdown-toggle href="#" data-toggle="dropdown" role="button" aria-expanded="false" + ' Dropdown + span.caret + ul.dropdown-menu role="menu" + li: a href="#" Action + li: a href="#" Another action + li: a href="#" Something else here + li.divider + li: a href="#" Separated link + li.divider + li: a href="#" One more separated link + form.navbar-form.navbar-left role="search" + .input-group + input.form-control type="search" placeholder="Search..." + .input-group-btn: button.btn.btn-primary type="submit" Go + ul.nav.navbar-nav.navbar-right + li: a href="#" Link + li.dropdown + a.dropdown-toggle href="#" data-toggle="dropdown" role="button" aria-expanded="false" + ' Dropdown + span.caret + ul.dropdown-menu role="menu" + li: a href="#" Action + li: a href="#" Another action + li: a href="#" Something else here + li.divider + li: a href="#" Separated link + +.container + .panel.panel-primary + .panel-heading: h1 Dummy App + .panel-body: .row + .col-sm-3 + h2 3 columns + ul.list-group + li.list-group-item: a href='#one' One + li.list-group-item: a href='#two' Two + li.list-group-item: a href='#three' Three + .col-sm-3 + h2 3 columns + .btn-group + button.btn.btn-primary type='button' Button + button.btn.btn-primary type='button' Button + h2 Icons + ul.list-inline + li: i.glyphicon.glyphicon-user + li: i.glyphicon.glyphicon-bullhorn + li: i.glyphicon.glyphicon-tint + table.table + caption Table + tr + td.danger Danger! + td.success Success! + .col-sm-6 + h2 6 columns + .panel.panel-primary: .panel-body + .row + .col-xs-4.col-xs-push-4 + .panel.panel-default: h3 This is col-xs-4 col-xs-push-4 + + form.form-inline + .form-group + label.sr-only for="exampleInputEmail2" Email address + input.form-control#exampleInputEmail2 type="email" placeholder="Enter email" + .checkbox + label + input type="checkbox" + | Remember me + button.btn.btn-default type="submit" Sign in diff --git a/app/vendor/bootstrap/test/dummy_rails/config.ru b/app/vendor/bootstrap/test/dummy_rails/config.ru new file mode 100644 index 0000000..5bc2a61 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config.ru @@ -0,0 +1,4 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Rails.application diff --git a/app/vendor/bootstrap/test/dummy_rails/config/application.rb b/app/vendor/bootstrap/test/dummy_rails/config/application.rb new file mode 100644 index 0000000..be70636 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/application.rb @@ -0,0 +1,30 @@ +require File.expand_path('../boot', __FILE__) + +require 'rails' + +%w( + action_controller + action_view + sprockets +).each do |framework| + require "#{framework}/railtie" +end + +require 'slim-rails' +require 'jquery-rails' +require 'bootstrap-sass' +require 'uglifier' + +module Dummy + class Application < Rails::Application + config.assets.enabled = true if config.assets.respond_to?(:enabled) + config.assets.precompile += %w( application.css application.js ) + config.to_prepare do + if ENV['VERBOSE'] + STDERR.puts "Loaded Rails #{Rails::VERSION::STRING}, Sprockets #{Sprockets::VERSION}", + "Asset paths: #{Rails.application.config.assets.paths}" + end + end + end +end + diff --git a/app/vendor/bootstrap/test/dummy_rails/config/boot.rb b/app/vendor/bootstrap/test/dummy_rails/config/boot.rb new file mode 100644 index 0000000..ef36047 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/boot.rb @@ -0,0 +1,5 @@ +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../../Gemfile', __FILE__) + +require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) +$LOAD_PATH.unshift File.expand_path('../../../../lib', __FILE__) diff --git a/app/vendor/bootstrap/test/dummy_rails/config/environment.rb b/app/vendor/bootstrap/test/dummy_rails/config/environment.rb new file mode 100644 index 0000000..10e0cad --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require File.expand_path('../application', __FILE__) + +# Initialize the Rails application. +Dummy::Application.initialize! diff --git a/app/vendor/bootstrap/test/dummy_rails/config/environments/development.rb b/app/vendor/bootstrap/test/dummy_rails/config/environments/development.rb new file mode 100644 index 0000000..d613bf1 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/environments/development.rb @@ -0,0 +1,23 @@ +Dummy::Application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true +end diff --git a/app/vendor/bootstrap/test/dummy_rails/config/environments/production.rb b/app/vendor/bootstrap/test/dummy_rails/config/environments/production.rb new file mode 100644 index 0000000..af89f2a --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/environments/production.rb @@ -0,0 +1,82 @@ +Dummy::Application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both thread web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Enable Rack::Cache to put a simple HTTP cache in front of your application + # Add `rack-cache` to your Gemfile before enabling this. + # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. + # config.action_dispatch.rack_cache = true + + # Disable Rails's static asset server (Apache or nginx will already do this). + if config.respond_to?(:serve_static_files) + # rails >= 4.2 + config.serve_static_files = true + elsif config.respond_to?(:serve_static_assets) + # rails < 4.2 + config.serve_static_assets = true + end + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Generate digests for assets URLs. + config.assets.digest = true + + # Version of your assets, change this if you want to expire all your assets. + config.assets.version = '1.0' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Set to :debug to see everything in the log. + config.log_level = :info + + # Prepend all log lines with the following tags. + # config.log_tags = [ :subdomain, :uuid ] + + # Use a different logger for distributed setups. + # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = "http://assets.example.com" + + # Precompile additional assets. + # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. + # config.assets.precompile += %w( search.js ) + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation can not be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Disable automatic flushing of the log to improve performance. + # config.autoflush_log = false + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new +end diff --git a/app/vendor/bootstrap/test/dummy_rails/config/environments/test.rb b/app/vendor/bootstrap/test/dummy_rails/config/environments/test.rb new file mode 100644 index 0000000..acb2a7e --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/environments/test.rb @@ -0,0 +1,38 @@ +Dummy::Application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure static asset server for tests with Cache-Control for performance. + if config.respond_to?(:serve_static_files) + # rails >= 4.2 + config.serve_static_files = true + elsif config.respond_to?(:serve_static_assets) + # rails < 4.2 + config.serve_static_assets = true + end + config.static_cache_control = "public, max-age=3600" + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + config.active_support.test_order = :random + + config.active_support.deprecation = :stderr +end diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/backtrace_silencers.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/filter_parameter_logging.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/inflections.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/mime_types.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/mime_types.rb new file mode 100644 index 0000000..72aca7e --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/mime_types.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf +# Mime::Type.register_alias "text/html", :iphone diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/secret_token.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/secret_token.rb new file mode 100644 index 0000000..6398946 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/secret_token.rb @@ -0,0 +1,18 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rake secret` to generate a secure secret key. + +# Make sure your secret_key_base is kept private +# if you're sharing your code publicly. +token = '4380f36fda304251bf48f12ad4474b6d11447f1f959bd5b77a5d56c92b97f4c403ee0ae13d31a85ed88058ff8795bf31ec17e70e5c229b3707a77a2ee7e81cc' + +if Dummy::Application.config.respond_to?(:secret_key_base=) + Dummy::Application.config.secret_key_base = token +else + Dummy::Application.config.secret_token = token +end \ No newline at end of file diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/session_store.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/session_store.rb new file mode 100644 index 0000000..155f7b0 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Dummy::Application.config.session_store :cookie_store, key: '_dummy_session' diff --git a/app/vendor/bootstrap/test/dummy_rails/config/initializers/wrap_parameters.rb b/app/vendor/bootstrap/test/dummy_rails/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..33725e9 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] if respond_to?(:wrap_parameters) +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/app/vendor/bootstrap/test/dummy_rails/config/locales/en.yml b/app/vendor/bootstrap/test/dummy_rails/config/locales/en.yml new file mode 100644 index 0000000..6d3974f --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/locales/en.yml @@ -0,0 +1,3 @@ +en: + dummy: + hello: Hello diff --git a/app/vendor/bootstrap/test/dummy_rails/config/locales/es.yml b/app/vendor/bootstrap/test/dummy_rails/config/locales/es.yml new file mode 100644 index 0000000..be28479 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/locales/es.yml @@ -0,0 +1,3 @@ +es: + dummy: + hello: Hola \ No newline at end of file diff --git a/app/vendor/bootstrap/test/dummy_rails/config/routes.rb b/app/vendor/bootstrap/test/dummy_rails/config/routes.rb new file mode 100644 index 0000000..f843265 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_rails/config/routes.rb @@ -0,0 +1,3 @@ +Dummy::Application.routes.draw do + root to: 'pages#root' +end diff --git a/app/vendor/bootstrap/test/dummy_rails/log/.keep b/app/vendor/bootstrap/test/dummy_rails/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/vendor/bootstrap/test/dummy_sass_only/Gemfile b/app/vendor/bootstrap/test/dummy_sass_only/Gemfile new file mode 100644 index 0000000..bfde6fa --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_sass_only/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'sass', '~> 3.3' +gem 'bootstrap-sass', path: '../..' diff --git a/app/vendor/bootstrap/test/dummy_sass_only/compile.rb b/app/vendor/bootstrap/test/dummy_sass_only/compile.rb new file mode 100644 index 0000000..09e6785 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_sass_only/compile.rb @@ -0,0 +1,13 @@ +require 'sass' +require 'bootstrap-sass' +require 'fileutils' + +scss_path = File.expand_path('./import_all.sass', File.dirname(__FILE__)) +css = Sass.compile File.read(scss_path), syntax: 'sass' + +if ARGV[0] + FileUtils.mkdir_p File.dirname(ARGV[0]) + File.open(ARGV[0], 'w') { |f| f.write css } +else + puts css +end diff --git a/app/vendor/bootstrap/test/dummy_sass_only/import_all.sass b/app/vendor/bootstrap/test/dummy_sass_only/import_all.sass new file mode 100644 index 0000000..a44a6e3 --- /dev/null +++ b/app/vendor/bootstrap/test/dummy_sass_only/import_all.sass @@ -0,0 +1,2 @@ +@import 'bootstrap' +@import 'bootstrap/theme' \ No newline at end of file diff --git a/app/vendor/bootstrap/test/gemfiles/rails_head.gemfile b/app/vendor/bootstrap/test/gemfiles/rails_head.gemfile new file mode 100644 index 0000000..72f908e --- /dev/null +++ b/app/vendor/bootstrap/test/gemfiles/rails_head.gemfile @@ -0,0 +1,17 @@ +source "https://rubygems.org" + +gem 'actionpack', github: 'rails/rails' +gem 'activesupport', github: 'rails/rails' + +# Required git dependencies as per https://github.com/rails/rails/blob/51211a94bd7a34d80f2412a7f94fefe7366647a5/Gemfile: +gem 'rack', github: 'rack/rack' +gem 'sprockets', github: 'rails/sprockets' +gem 'sprockets-rails', github: 'rails/sprockets-rails' +gem 'sass-rails', github: 'rails/sass-rails', branch: 'master' + +gem 'autoprefixer-rails', github: 'ai/autoprefixer-rails' + +gem 'compass', '~> 1.0.1', require: false + +gemspec path: '../../' + diff --git a/app/vendor/bootstrap/test/gemfiles/sass_3_3.gemfile b/app/vendor/bootstrap/test/gemfiles/sass_3_3.gemfile new file mode 100644 index 0000000..9504cf2 --- /dev/null +++ b/app/vendor/bootstrap/test/gemfiles/sass_3_3.gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +gem 'sass', '~> 3.3.14' +gem 'compass', '~> 1.0.1', require: false + +# See https://github.com/sass/sass/pull/2015 +gem 'rake', '~> 10.5.0' + +gemspec path: '../../' diff --git a/app/vendor/bootstrap/test/gemfiles/sass_3_4.gemfile b/app/vendor/bootstrap/test/gemfiles/sass_3_4.gemfile new file mode 100644 index 0000000..fd89fa7 --- /dev/null +++ b/app/vendor/bootstrap/test/gemfiles/sass_3_4.gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem 'sass', '~> 3.4.1' +gem 'compass', '~> 1.0.1', require: false + +gemspec path: '../../' + diff --git a/app/vendor/bootstrap/test/gemfiles/sass_head.gemfile b/app/vendor/bootstrap/test/gemfiles/sass_head.gemfile new file mode 100644 index 0000000..0cfe4f4 --- /dev/null +++ b/app/vendor/bootstrap/test/gemfiles/sass_head.gemfile @@ -0,0 +1,6 @@ +source "https://rubygems.org" + +gem 'sass', git: 'https://github.com/nex3/sass', branch: 'stable' # master is not compatible with Compass master +gem 'compass', git: 'https://github.com/chriseppstein/compass', branch: 'master', require: false + +gemspec path: '../../' diff --git a/app/vendor/bootstrap/test/node_mincer_test.rb b/app/vendor/bootstrap/test/node_mincer_test.rb new file mode 100644 index 0000000..28aacab --- /dev/null +++ b/app/vendor/bootstrap/test/node_mincer_test.rb @@ -0,0 +1,35 @@ +require 'test_helper' +require 'json' + +class NodeMincerTest < Minitest::Test + DUMMY_PATH = 'test/dummy_node_mincer' + + def test_font_helper_without_suffix + assert_match %r(url\(['"]?/assets/.*eot['"]?\)), @css + end + + def test_font_helper_with_suffix_sharp + assert_match %r(url\(['"]?/assets/.*svg#.+['"]?\)), @css + end + + def test_font_helper_with_suffix_question + assert_match %r(url\(['"]?/assets/.*eot\?.*['"]?\)), @css + end + + def test_image_helper + assert_match %r(url\(['"]?/assets/apple-touch-icon-144-precomposed.*png['"]?\)), @css + end + + def setup + tmp_dir = File.join GEM_PATH, 'tmp/node-mincer' + success = Dir.chdir DUMMY_PATH do + silence_stdout_if !ENV['VERBOSE'] do + system 'node', 'manifest.js', tmp_dir + end + end + assert success, 'Node.js Mincer compilation failed' + manifest = JSON.parse(File.read("#{tmp_dir}/manifest.json")) + css_name = manifest['assets']['application.css'] + @css = File.read("#{tmp_dir}/#{css_name}") + end +end diff --git a/app/vendor/bootstrap/test/node_sass_compile_test.sh b/app/vendor/bootstrap/test/node_sass_compile_test.sh new file mode 100755 index 0000000..6c8a369 --- /dev/null +++ b/app/vendor/bootstrap/test/node_sass_compile_test.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# Test compilation with node-sass binary + +mkdir -p tmp/node-sass +node-sass assets/stylesheets/_bootstrap.scss -o tmp/node-sass/bootstrap.css && \ +node-sass assets/stylesheets/bootstrap/_theme.scss -o tmp/node-sass/bootstrap-theme.css || \ +(echo "node-sass compilation failed" && exit 1) diff --git a/app/vendor/bootstrap/test/pages_test.rb b/app/vendor/bootstrap/test/pages_test.rb new file mode 100644 index 0000000..b86c7ed --- /dev/null +++ b/app/vendor/bootstrap/test/pages_test.rb @@ -0,0 +1,14 @@ +require 'test_helper_rails' + +class PagesTest < ActionDispatch::IntegrationTest + include ::DummyRailsIntegration + + def test_visit_root + visit root_path + # ^ will raise on JS errors + + assert_equal 200, page.status_code + + screenshot! + end +end diff --git a/app/vendor/bootstrap/test/sass_test.rb b/app/vendor/bootstrap/test/sass_test.rb new file mode 100644 index 0000000..fc54c77 --- /dev/null +++ b/app/vendor/bootstrap/test/sass_test.rb @@ -0,0 +1,26 @@ +require 'test_helper' +require 'shellwords' + +class SassTest < Minitest::Test + DUMMY_PATH = 'test/dummy_sass_only' + + def test_font_helper + assert_match %r(url\(['"]?.*eot['"]?\)), @css + end + + def setup + Dir.chdir DUMMY_PATH do + %x[rm -rf .sass-cache/] + %x[bundle] + end + css_path = File.join GEM_PATH, 'tmp/bootstrap-sass-only.css' + command = "bundle exec ruby compile.rb #{Shellwords.escape css_path}" + success = Dir.chdir DUMMY_PATH do + silence_stdout_if !ENV['VERBOSE'] do + system(command) + end + end + assert success, 'Sass-only compilation failed' + @css = File.read(css_path) + end +end diff --git a/app/vendor/bootstrap/test/sprockets_rails_test.rb b/app/vendor/bootstrap/test/sprockets_rails_test.rb new file mode 100644 index 0000000..38707ca --- /dev/null +++ b/app/vendor/bootstrap/test/sprockets_rails_test.rb @@ -0,0 +1,27 @@ +require 'test_helper' +require 'fileutils' +require 'find' +require 'shellwords' + +class SprocketsRailsTest < Minitest::Test + + def test_sprockets_digest_asset_refs + root = 'test/dummy_rails' + command = "bundle exec rake assets:precompile GEMFILE=#{GEM_PATH}/Gemfile RAILS_ENV=production" + compiled = Dir.chdir root do + silence_stderr_if !ENV['VERBOSE'] do + system(command) + end + end + assert compiled, 'Could not precompile assets' + Dir.glob(File.join(root, 'public', 'assets', 'app*.{css,js}')) do |path| + File.open(path, 'r') do |f| + f.read.scan /url\("?[^"]+\.(?:jpg|png|eot|woff2?|ttf|svg)[^"]*"?\)/ do |m| + assert_match /-[0-9a-f]{12,}\./, m + end + end + end + ensure + FileUtils.rm_rf %W(#{root}/public/assets/ #{root}/tmp/cache/), secure: true + end +end diff --git a/app/vendor/bootstrap/test/support/dummy_rails_integration.rb b/app/vendor/bootstrap/test/support/dummy_rails_integration.rb new file mode 100644 index 0000000..1f8dea4 --- /dev/null +++ b/app/vendor/bootstrap/test/support/dummy_rails_integration.rb @@ -0,0 +1,22 @@ +require 'capybara/dsl' +require 'fileutils' +module DummyRailsIntegration + include Capybara::DSL + + def setup + super + FileUtils.rm_rf('test/dummy_rails/tmp/cache', secure: true) + end + + def teardown + super + Capybara.reset_sessions! + Capybara.use_default_driver + end + + def screenshot! + path = "tmp/#{name}.png" + page.driver.render(File.join(GEM_PATH, path), full: true) + STDERR.puts "Screenshot saved to #{path}" + end +end diff --git a/app/vendor/bootstrap/test/support/reporting.rb b/app/vendor/bootstrap/test/support/reporting.rb new file mode 100644 index 0000000..efaf836 --- /dev/null +++ b/app/vendor/bootstrap/test/support/reporting.rb @@ -0,0 +1,27 @@ +module Kernel + def silence_stdout_if(cond, &run) + silence_stream_if(cond, STDOUT, &run) + end + + def silence_stderr_if(cond, &run) + silence_stream_if(cond, STDERR, &run) + end + + def silence_stream_if(cond, stream, &run) + if cond + silence_stream(stream, &run) + else + run.call + end + end + + def silence_stream(stream) + old_stream = stream.dup + stream.reopen(File::NULL) + stream.sync = true + yield + ensure + stream.reopen(old_stream) + old_stream.close + end unless method_defined?(:silence_stream) +end diff --git a/app/vendor/bootstrap/test/test_helper.rb b/app/vendor/bootstrap/test/test_helper.rb new file mode 100644 index 0000000..304b2e0 --- /dev/null +++ b/app/vendor/bootstrap/test/test_helper.rb @@ -0,0 +1,35 @@ +require 'minitest/autorun' +require 'minitest/reporters' +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new + +require 'active_support/core_ext/kernel/reporting' + +Dir['test/support/**/*.rb'].each do |file| + # strip ^test/ and .rb$ + file = file[5..-4] + require_relative File.join('.', file) +end + +GEM_PATH = File.expand_path('../', File.dirname(__FILE__)) + +#= Capybara + Poltergeist +require 'capybara/poltergeist' + +Capybara.register_driver :poltergeist do |app| + Capybara::Poltergeist::Driver.new( + app, + # inspector: '/Applications/Chromium.app/Contents/MacOS/Chromium', # open in inspector: page.driver.debug + window_size: [1280, 1024], + timeout: 90, + js_errors: true + ) +end + +Capybara.configure do |config| + config.app_host = 'http://localhost:7000' + config.default_driver = :poltergeist + config.javascript_driver = :poltergeist + config.server_port = 7000 + config.default_max_wait_time = 10 +end + diff --git a/app/vendor/bootstrap/test/test_helper_rails.rb b/app/vendor/bootstrap/test/test_helper_rails.rb new file mode 100644 index 0000000..2dd877a --- /dev/null +++ b/app/vendor/bootstrap/test/test_helper_rails.rb @@ -0,0 +1,6 @@ +ENV['RAILS_ENV'] = ENV['RACK_ENV'] = 'test' + +require 'test_helper' +require 'dummy_rails/config/environment' +require 'rails/test_help' +require 'capybara/rails' diff --git a/app/vendor/datatables/css/dataTables.bootstrap.css b/app/vendor/datatables/css/dataTables.bootstrap.css new file mode 100644 index 0000000..6a9e753 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.bootstrap.css @@ -0,0 +1,187 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; + /* sort */ +} +table.dataTable thead .sorting_asc:after { + content: "\e155"; + /* sort-by-attributes */ +} +table.dataTable thead .sorting_desc:after { + content: "\e156"; + /* sort-by-attributes-alt */ +} +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody > table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody > table > thead .sorting:after, +div.dataTables_scrollBody > table > thead .sorting_asc:after, +div.dataTables_scrollBody > table > thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody > table > tbody > tr:first-child > th, +div.dataTables_scrollBody > table > tbody > tr:first-child > td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-condensed > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-condensed .sorting:after, +table.dataTable.table-condensed .sorting_asc:after, +table.dataTable.table-condensed .sorting_desc:after { + top: 6px; + right: 6px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/app/vendor/datatables/css/dataTables.bootstrap.min.css b/app/vendor/datatables/css/dataTables.bootstrap.min.css new file mode 100644 index 0000000..af6ecfe --- /dev/null +++ b/app/vendor/datatables/css/dataTables.bootstrap.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody>table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody>table>thead .sorting:after,div.dataTables_scrollBody>table>thead .sorting_asc:after,div.dataTables_scrollBody>table>thead .sorting_desc:after{display:none}div.dataTables_scrollBody>table>tbody>tr:first-child>th,div.dataTables_scrollBody>table>tbody>tr:first-child>td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/app/vendor/datatables/css/dataTables.bootstrap4.css b/app/vendor/datatables/css/dataTables.bootstrap4.css new file mode 100644 index 0000000..56ea4f4 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.bootstrap4.css @@ -0,0 +1,202 @@ +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 0.85em; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; + justify-content: flex-end; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:before, table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 0.9em; + display: block; + opacity: 0.3; +} +table.dataTable thead .sorting:before, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc_disabled:before { + right: 1em; + content: "\2191"; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + right: 0.5em; + content: "\2193"; +} +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_desc:after { + opacity: 1; +} +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc_disabled:after { + opacity: 0; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody table thead .sorting:after, +div.dataTables_scrollBody table thead .sorting_asc:after, +div.dataTables_scrollBody table thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-sm > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-sm .sorting:before, +table.dataTable.table-sm .sorting_asc:before, +table.dataTable.table-sm .sorting_desc:before { + top: 5px; + right: 0.85em; +} +table.dataTable.table-sm .sorting:after, +table.dataTable.table-sm .sorting_asc:after, +table.dataTable.table-sm .sorting_desc:after { + top: 5px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} diff --git a/app/vendor/datatables/css/dataTables.bootstrap4.min.css b/app/vendor/datatables/css/dataTables.bootstrap4.min.css new file mode 100644 index 0000000..48b76ed --- /dev/null +++ b/app/vendor/datatables/css/dataTables.bootstrap4.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} diff --git a/app/vendor/datatables/css/dataTables.foundation.css b/app/vendor/datatables/css/dataTables.foundation.css new file mode 100644 index 0000000..79848c9 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.foundation.css @@ -0,0 +1,118 @@ +table.dataTable { + clear: both; + margin: 0.5em 0 !important; + max-width: none !important; + width: 100%; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper { + position: relative; +} +div.dataTables_wrapper div.dataTables_length label { + float: left; + text-align: left; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_filter label { + float: right; + margin-bottom: 0; +} +div.dataTables_wrapper div.dataTables_filter input { + display: inline-block !important; + width: auto !important; + margin-bottom: 0; + margin-left: 0.5em; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 2px; +} +div.dataTables_wrapper div.dataTables_paginate { + float: right; + margin: 0; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1rem 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 1.5rem; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + background-image: url("../images/sort_both.png"); +} +table.dataTable thead .sorting_asc { + background-image: url("../images/sort_asc.png"); +} +table.dataTable thead .sorting_desc { + background-image: url("../images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("../images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("../images/sort_desc_disabled.png"); +} + +div.dataTables_scrollHead table { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody table tbody tr:first-child th, +div.dataTables_scrollBody table tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} diff --git a/app/vendor/datatables/css/dataTables.foundation.min.css b/app/vendor/datatables/css/dataTables.foundation.min.css new file mode 100644 index 0000000..73af41e --- /dev/null +++ b/app/vendor/datatables/css/dataTables.foundation.min.css @@ -0,0 +1 @@ +table.dataTable{clear:both;margin:0.5em 0 !important;max-width:none !important;width:100%}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper{position:relative}div.dataTables_wrapper div.dataTables_length label{float:left;text-align:left;margin-bottom:0}div.dataTables_wrapper div.dataTables_length select{width:75px;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter label{float:right;margin-bottom:0}div.dataTables_wrapper div.dataTables_filter input{display:inline-block !important;width:auto !important;margin-bottom:0;margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:2px}div.dataTables_wrapper div.dataTables_paginate{float:right;margin:0}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1rem 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:1.5rem}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}div.dataTables_scrollHead table{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none} diff --git a/app/vendor/datatables/css/dataTables.jqueryui.css b/app/vendor/datatables/css/dataTables.jqueryui.css new file mode 100644 index 0000000..5070b04 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.jqueryui.css @@ -0,0 +1,481 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} +table.dataTable thead th div.DataTables_sort_wrapper { + position: relative; +} +table.dataTable thead th div.DataTables_sort_wrapper span { + position: absolute; + top: 50%; + margin-top: -8px; + right: -18px; +} +table.dataTable thead th.ui-state-default, +table.dataTable tfoot th.ui-state-default { + border-left-width: 0; +} +table.dataTable thead th.ui-state-default:first-child, +table.dataTable tfoot th.ui-state-default:first-child { + border-left-width: 1px; +} + +/* + * Control feature layout + */ +.dataTables_wrapper .dataTables_paginate .fg-button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + border: 1px solid transparent; +} +.dataTables_wrapper .dataTables_paginate .fg-button:active { + outline: none; +} +.dataTables_wrapper .dataTables_paginate .fg-button:first-child { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.dataTables_wrapper .dataTables_paginate .fg-button:last-child { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.dataTables_wrapper .ui-widget-header { + font-weight: normal; +} +.dataTables_wrapper .ui-toolbar { + padding: 8px; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: none; +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: inherit; +} diff --git a/app/vendor/datatables/css/dataTables.jqueryui.min.css b/app/vendor/datatables/css/dataTables.jqueryui.min.css new file mode 100644 index 0000000..4e99c26 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.jqueryui.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable thead th.ui-state-default,table.dataTable tfoot th.ui-state-default{border-left-width:0}table.dataTable thead th.ui-state-default:first-child,table.dataTable tfoot th.ui-state-default:first-child{border-left-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:active{outline:none}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:normal}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:inherit} diff --git a/app/vendor/datatables/css/dataTables.semanticui.css b/app/vendor/datatables/css/dataTables.semanticui.css new file mode 100644 index 0000000..2583842 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.semanticui.css @@ -0,0 +1,102 @@ +/* + * Styling for DataTables with Semantic UI + */ +table.dataTable.table { + margin: 0; +} +table.dataTable.table thead th, +table.dataTable.table thead td { + position: relative; +} +table.dataTable.table thead th.sorting, table.dataTable.table thead th.sorting_asc, table.dataTable.table thead th.sorting_desc, +table.dataTable.table thead td.sorting, +table.dataTable.table thead td.sorting_asc, +table.dataTable.table thead td.sorting_desc { + padding-right: 20px; +} +table.dataTable.table thead th.sorting:after, table.dataTable.table thead th.sorting_asc:after, table.dataTable.table thead th.sorting_desc:after, +table.dataTable.table thead td.sorting:after, +table.dataTable.table thead td.sorting_asc:after, +table.dataTable.table thead td.sorting_desc:after { + position: absolute; + top: 12px; + right: 8px; + display: block; + font-family: Icons; +} +table.dataTable.table thead th.sorting:after, +table.dataTable.table thead td.sorting:after { + content: "\f0dc"; + color: #ddd; + font-size: 0.8em; +} +table.dataTable.table thead th.sorting_asc:after, +table.dataTable.table thead td.sorting_asc:after { + content: "\f0de"; +} +table.dataTable.table thead th.sorting_desc:after, +table.dataTable.table thead td.sorting_desc:after { + content: "\f0dd"; +} +table.dataTable.table td, +table.dataTable.table th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable.table td.dataTables_empty, +table.dataTable.table th.dataTables_empty { + text-align: center; +} +table.dataTable.table.nowrap th, +table.dataTable.table.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length select { + vertical-align: middle; + min-height: 2.7142em; +} +div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown { + min-width: 0; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 13px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + text-align: center; +} +div.dataTables_wrapper div.row.dt-table { + padding: 0; +} +div.dataTables_wrapper div.dataTables_scrollHead table.dataTable { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + border-bottom: none; +} +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after, +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after, +div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after { + display: none; +} +div.dataTables_wrapper div.dataTables_scrollBody table.dataTable { + border-radius: 0; + border-top: none; + border-bottom-width: 0; +} +div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer { + border-bottom-width: 1px; +} +div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable { + border-top-right-radius: 0; + border-top-left-radius: 0; + border-top: none; +} diff --git a/app/vendor/datatables/css/dataTables.semanticui.min.css b/app/vendor/datatables/css/dataTables.semanticui.min.css new file mode 100644 index 0000000..c192a34 --- /dev/null +++ b/app/vendor/datatables/css/dataTables.semanticui.min.css @@ -0,0 +1 @@ +table.dataTable.table{margin:0}table.dataTable.table thead th,table.dataTable.table thead td{position:relative}table.dataTable.table thead th.sorting,table.dataTable.table thead th.sorting_asc,table.dataTable.table thead th.sorting_desc,table.dataTable.table thead td.sorting,table.dataTable.table thead td.sorting_asc,table.dataTable.table thead td.sorting_desc{padding-right:20px}table.dataTable.table thead th.sorting:after,table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting:after,table.dataTable.table thead td.sorting_asc:after,table.dataTable.table thead td.sorting_desc:after{position:absolute;top:12px;right:8px;display:block;font-family:Icons}table.dataTable.table thead th.sorting:after,table.dataTable.table thead td.sorting:after{content:"\f0dc";color:#ddd;font-size:0.8em}table.dataTable.table thead th.sorting_asc:after,table.dataTable.table thead td.sorting_asc:after{content:"\f0de"}table.dataTable.table thead th.sorting_desc:after,table.dataTable.table thead td.sorting_desc:after{content:"\f0dd"}table.dataTable.table td,table.dataTable.table th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable.table td.dataTables_empty,table.dataTable.table th.dataTables_empty{text-align:center}table.dataTable.table.nowrap th,table.dataTable.table.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{vertical-align:middle;min-height:2.7142em}div.dataTables_wrapper div.dataTables_length .ui.selection.dropdown{min-width:0}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em}div.dataTables_wrapper div.dataTables_info{padding-top:13px;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;text-align:center}div.dataTables_wrapper div.row.dt-table{padding:0}div.dataTables_wrapper div.dataTables_scrollHead table.dataTable{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none}div.dataTables_wrapper div.dataTables_scrollBody thead .sorting:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_asc:after,div.dataTables_wrapper div.dataTables_scrollBody thead .sorting_desc:after{display:none}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable{border-radius:0;border-top:none;border-bottom-width:0}div.dataTables_wrapper div.dataTables_scrollBody table.dataTable.no-footer{border-bottom-width:1px}div.dataTables_wrapper div.dataTables_scrollFoot table.dataTable{border-top-right-radius:0;border-top-left-radius:0;border-top:none} diff --git a/app/vendor/datatables/css/jquery.dataTables.css b/app/vendor/datatables/css/jquery.dataTables.css new file mode 100644 index 0000000..760eccb --- /dev/null +++ b/app/vendor/datatables/css/jquery.dataTables.css @@ -0,0 +1,448 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 10px 18px; + border-bottom: 1px solid #111; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 10px 18px 6px 18px; + border-top: 1px solid #111; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + *cursor: hand; + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting { + background-image: url("../images/sort_both.png"); +} +table.dataTable thead .sorting_asc { + background-image: url("../images/sort_asc.png"); +} +table.dataTable thead .sorting_desc { + background-image: url("../images/sort_desc.png"); +} +table.dataTable thead .sorting_asc_disabled { + background-image: url("../images/sort_asc_disabled.png"); +} +table.dataTable thead .sorting_desc_disabled { + background-image: url("../images/sort_desc_disabled.png"); +} +table.dataTable tbody tr { + background-color: #ffffff; +} +table.dataTable tbody tr.selected { + background-color: #B0BED9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 8px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #ddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #ddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #acbad4; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; +} +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #fafafa; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b4cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a8b5cf; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b7d1; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #fafafa; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fcfcfc; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fefefe; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad5; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #aebcd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; +} +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 4px 17px 4px 4px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 4px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.5em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333 !important; + border: 1px solid transparent; + border-radius: 2px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #333 !important; + border: 1px solid #979797; + background-color: white; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666 !important; + border: 1px solid transparent; + background: transparent; + box-shadow: none; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + color: white !important; + border: 1px solid #111; + background-color: #585858; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #585858 0%, #111 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #585858 0%, #111 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #585858 0%, #111 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #585858 0%, #111 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; + background-color: #2b2b2b; + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%); + /* W3C */ + box-shadow: inset 0 0 3px #111; +} +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td { + vertical-align: middle; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > thead > tr > td > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody > table > tbody > tr > td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #111; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable, +.dataTables_wrapper.no-footer div.dataTables_scrollBody > table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} diff --git a/app/vendor/datatables/css/jquery.dataTables.min.css b/app/vendor/datatables/css/jquery.dataTables.min.css new file mode 100644 index 0000000..6565b40 --- /dev/null +++ b/app/vendor/datatables/css/jquery.dataTables.min.css @@ -0,0 +1 @@ +table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#ffffff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:0.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:0.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:0.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:-o-linear-gradient(top, #fff 0%, #dcdcdc 100%);background:linear-gradient(to bottom, #fff 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255,255,255,0)), color-stop(25%, rgba(255,255,255,0.9)), color-stop(75%, rgba(255,255,255,0.9)), color-stop(100%, rgba(255,255,255,0)));background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:-o-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 25%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:0.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:0.5em}} diff --git a/app/vendor/datatables/datatables.css b/app/vendor/datatables/datatables.css new file mode 100644 index 0000000..7946f1c --- /dev/null +++ b/app/vendor/datatables/datatables.css @@ -0,0 +1,201 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs/dt-1.10.16 + * + * Included libraries: + * DataTables 1.10.16 + */ + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; + border-collapse: separate !important; +} +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + box-sizing: content-box; +} +table.dataTable td.dataTables_empty, +table.dataTable th.dataTables_empty { + text-align: center; +} +table.dataTable.nowrap th, +table.dataTable.nowrap td { + white-space: nowrap; +} + +div.dataTables_wrapper div.dataTables_length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_length select { + width: 75px; + display: inline-block; +} +div.dataTables_wrapper div.dataTables_filter { + text-align: right; +} +div.dataTables_wrapper div.dataTables_filter label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dataTables_wrapper div.dataTables_filter input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dataTables_wrapper div.dataTables_info { + padding-top: 8px; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_paginate { + margin: 0; + white-space: nowrap; + text-align: right; +} +div.dataTables_wrapper div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} +div.dataTables_wrapper div.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -26px; + text-align: center; + padding: 1em 0; +} + +table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting, +table.dataTable thead > tr > td.sorting_asc, +table.dataTable thead > tr > td.sorting_desc, +table.dataTable thead > tr > td.sorting { + padding-right: 30px; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; + position: relative; +} +table.dataTable thead .sorting:after, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + position: absolute; + bottom: 8px; + right: 8px; + display: block; + font-family: 'Glyphicons Halflings'; + opacity: 0.5; +} +table.dataTable thead .sorting:after { + opacity: 0.2; + content: "\e150"; + /* sort */ +} +table.dataTable thead .sorting_asc:after { + content: "\e155"; + /* sort-by-attributes */ +} +table.dataTable thead .sorting_desc:after { + content: "\e156"; + /* sort-by-attributes-alt */ +} +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_desc_disabled:after { + color: #eee; +} + +div.dataTables_scrollHead table.dataTable { + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody > table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dataTables_scrollBody > table > thead .sorting:after, +div.dataTables_scrollBody > table > thead .sorting_asc:after, +div.dataTables_scrollBody > table > thead .sorting_desc:after { + display: none; +} +div.dataTables_scrollBody > table > tbody > tr:first-child > th, +div.dataTables_scrollBody > table > tbody > tr:first-child > td { + border-top: none; +} + +div.dataTables_scrollFoot > .dataTables_scrollFootInner { + box-sizing: content-box; +} +div.dataTables_scrollFoot > .dataTables_scrollFootInner > table { + margin-top: 0 !important; + border-top: none; +} + +@media screen and (max-width: 767px) { + div.dataTables_wrapper div.dataTables_length, + div.dataTables_wrapper div.dataTables_filter, + div.dataTables_wrapper div.dataTables_info, + div.dataTables_wrapper div.dataTables_paginate { + text-align: center; + } +} +table.dataTable.table-condensed > thead > tr > th { + padding-right: 20px; +} +table.dataTable.table-condensed .sorting:after, +table.dataTable.table-condensed .sorting_asc:after, +table.dataTable.table-condensed .sorting_desc:after { + top: 6px; + right: 6px; +} + +table.table-bordered.dataTable th, +table.table-bordered.dataTable td { + border-left-width: 0; +} +table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child, +table.table-bordered.dataTable td:last-child, +table.table-bordered.dataTable td:last-child { + border-right-width: 0; +} +table.table-bordered.dataTable tbody th, +table.table-bordered.dataTable tbody td { + border-bottom-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dataTables_wrapper > div.row { + margin: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child { + padding-left: 0; +} +div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child { + padding-right: 0; +} + + diff --git a/app/vendor/datatables/datatables.js b/app/vendor/datatables/datatables.js new file mode 100644 index 0000000..0bac3e1 --- /dev/null +++ b/app/vendor/datatables/datatables.js @@ -0,0 +1,15441 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs/dt-1.10.16 + * + * Included libraries: + * DataTables 1.10.16 + */ + +/*! DataTables 1.10.16 + * ©2008-2017 SpryMedia Ltd - datatables.net/license + */ + +/** + * @summary DataTables + * @description Paginate, search and order HTML tables + * @version 1.10.16 + * @file jquery.dataTables.js + * @author SpryMedia Ltd + * @contact www.datatables.net + * @copyright Copyright 2008-2017 SpryMedia Ltd. + * + * This source file is free software, available under the following license: + * MIT license - http://datatables.net/license + * + * This source file is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details. + * + * For details please refer to: http://www.datatables.net + */ + +/*jslint evil: true, undef: true, browser: true */ +/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ + +(function( factory ) { + "use strict"; + + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + // CommonJS environments without a window global must pass a + // root. This will give an error otherwise + root = window; + } + + if ( ! $ ) { + $ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window + require('jquery') : + require('jquery')( root ); + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +} +(function( $, window, document, undefined ) { + "use strict"; + + /** + * DataTables is a plug-in for the jQuery Javascript library. It is a highly + * flexible tool, based upon the foundations of progressive enhancement, + * which will add advanced interaction controls to any HTML table. For a + * full list of features please refer to + * [DataTables.net](href="http://datatables.net). + * + * Note that the `DataTable` object is not a global variable but is aliased + * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may + * be accessed. + * + * @class + * @param {object} [init={}] Configuration object for DataTables. Options + * are defined by {@link DataTable.defaults} + * @requires jQuery 1.7+ + * + * @example + * // Basic initialisation + * $(document).ready( function { + * $('#example').dataTable(); + * } ); + * + * @example + * // Initialisation with configuration options - in this case, disable + * // pagination and sorting. + * $(document).ready( function { + * $('#example').dataTable( { + * "paginate": false, + * "sort": false + * } ); + * } ); + */ + var DataTable = function ( options ) + { + /** + * Perform a jQuery selector action on the table's TR elements (from the tbody) and + * return the resulting jQuery object. + * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on + * @param {object} [oOpts] Optional parameters for modifying the rows to be included + * @param {string} [oOpts.filter=none] Select TR elements that meet the current filter + * criterion ("applied") or all TR elements (i.e. no filter). + * @param {string} [oOpts.order=current] Order of the TR elements in the processed array. + * Can be either 'current', whereby the current sorting of the table is used, or + * 'original' whereby the original order the data was read into the table is used. + * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page + * ("current") or not ("all"). If 'current' is given, then order is assumed to be + * 'current' and filter is 'applied', regardless of what they might be given as. + * @returns {object} jQuery object, filtered by the given selector. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Highlight every second row + * oTable.$('tr:odd').css('backgroundColor', 'blue'); + * } ); + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Filter to rows with 'Webkit' in them, add a background colour and then + * // remove the filter, thus highlighting the 'Webkit' rows only. + * oTable.fnFilter('Webkit'); + * oTable.$('tr', {"search": "applied"}).css('backgroundColor', 'blue'); + * oTable.fnFilter(''); + * } ); + */ + this.$ = function ( sSelector, oOpts ) + { + return this.api(true).$( sSelector, oOpts ); + }; + + + /** + * Almost identical to $ in operation, but in this case returns the data for the matched + * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes + * rather than any descendants, so the data can be obtained for the row/cell. If matching + * rows are found, the data returned is the original data array/object that was used to + * create the row (or a generated array if from a DOM source). + * + * This method is often useful in-combination with $ where both functions are given the + * same parameters and the array indexes will match identically. + * @param {string|node|jQuery} sSelector jQuery selector or node collection to act on + * @param {object} [oOpts] Optional parameters for modifying the rows to be included + * @param {string} [oOpts.filter=none] Select elements that meet the current filter + * criterion ("applied") or all elements (i.e. no filter). + * @param {string} [oOpts.order=current] Order of the data in the processed array. + * Can be either 'current', whereby the current sorting of the table is used, or + * 'original' whereby the original order the data was read into the table is used. + * @param {string} [oOpts.page=all] Limit the selection to the currently displayed page + * ("current") or not ("all"). If 'current' is given, then order is assumed to be + * 'current' and filter is 'applied', regardless of what they might be given as. + * @returns {array} Data for the matched elements. If any elements, as a result of the + * selector, were not TR, TD or TH elements in the DataTable, they will have a null + * entry in the array. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Get the data from the first row in the table + * var data = oTable._('tr:first'); + * + * // Do something useful with the data + * alert( "First cell is: "+data[0] ); + * } ); + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Filter to 'Webkit' and get all data for + * oTable.fnFilter('Webkit'); + * var data = oTable._('tr', {"search": "applied"}); + * + * // Do something with the data + * alert( data.length+" rows matched the search" ); + * } ); + */ + this._ = function ( sSelector, oOpts ) + { + return this.api(true).rows( sSelector, oOpts ).data(); + }; + + + /** + * Create a DataTables Api instance, with the currently selected tables for + * the Api's context. + * @param {boolean} [traditional=false] Set the API instance's context to be + * only the table referred to by the `DataTable.ext.iApiIndex` option, as was + * used in the API presented by DataTables 1.9- (i.e. the traditional mode), + * or if all tables captured in the jQuery object should be used. + * @return {DataTables.Api} + */ + this.api = function ( traditional ) + { + return traditional ? + new _Api( + _fnSettingsFromNode( this[ _ext.iApiIndex ] ) + ) : + new _Api( this ); + }; + + + /** + * Add a single new row or multiple rows of data to the table. Please note + * that this is suitable for client-side processing only - if you are using + * server-side processing (i.e. "bServerSide": true), then to add data, you + * must add it to the data source, i.e. the server-side, through an Ajax call. + * @param {array|object} data The data to be added to the table. This can be: + *
    + *
  • 1D array of data - add a single row with the data provided
  • + *
  • 2D array of arrays - add multiple rows in a single call
  • + *
  • object - data object when using mData
  • + *
  • array of objects - multiple data objects when using mData
  • + *
+ * @param {bool} [redraw=true] redraw the table or not + * @returns {array} An array of integers, representing the list of indexes in + * aoData ({@link DataTable.models.oSettings}) that have been added to + * the table. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * // Global var for counter + * var giCount = 2; + * + * $(document).ready(function() { + * $('#example').dataTable(); + * } ); + * + * function fnClickAddRow() { + * $('#example').dataTable().fnAddData( [ + * giCount+".1", + * giCount+".2", + * giCount+".3", + * giCount+".4" ] + * ); + * + * giCount++; + * } + */ + this.fnAddData = function( data, redraw ) + { + var api = this.api( true ); + + /* Check if we want to add multiple rows or not */ + var rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ? + api.rows.add( data ) : + api.row.add( data ); + + if ( redraw === undefined || redraw ) { + api.draw(); + } + + return rows.flatten().toArray(); + }; + + + /** + * This function will make DataTables recalculate the column sizes, based on the data + * contained in the table and the sizes applied to the columns (in the DOM, CSS or + * through the sWidth parameter). This can be useful when the width of the table's + * parent element changes (for example a window resize). + * @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable( { + * "sScrollY": "200px", + * "bPaginate": false + * } ); + * + * $(window).on('resize', function () { + * oTable.fnAdjustColumnSizing(); + * } ); + * } ); + */ + this.fnAdjustColumnSizing = function ( bRedraw ) + { + var api = this.api( true ).columns.adjust(); + var settings = api.settings()[0]; + var scroll = settings.oScroll; + + if ( bRedraw === undefined || bRedraw ) { + api.draw( false ); + } + else if ( scroll.sX !== "" || scroll.sY !== "" ) { + /* If not redrawing, but scrolling, we want to apply the new column sizes anyway */ + _fnScrollDraw( settings ); + } + }; + + + /** + * Quickly and simply clear a table + * @param {bool} [bRedraw=true] redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...) + * oTable.fnClearTable(); + * } ); + */ + this.fnClearTable = function( bRedraw ) + { + var api = this.api( true ).clear(); + + if ( bRedraw === undefined || bRedraw ) { + api.draw(); + } + }; + + + /** + * The exact opposite of 'opening' a row, this function will close any rows which + * are currently 'open'. + * @param {node} nTr the table row to 'close' + * @returns {int} 0 on success, or 1 if failed (can't find the row) + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnClose = function( nTr ) + { + this.api( true ).row( nTr ).child.hide(); + }; + + + /** + * Remove a row for the table + * @param {mixed} target The index of the row from aoData to be deleted, or + * the TR element you want to delete + * @param {function|null} [callBack] Callback function + * @param {bool} [redraw=true] Redraw the table or not + * @returns {array} The row that was deleted + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Immediately remove the first row + * oTable.fnDeleteRow( 0 ); + * } ); + */ + this.fnDeleteRow = function( target, callback, redraw ) + { + var api = this.api( true ); + var rows = api.rows( target ); + var settings = rows.settings()[0]; + var data = settings.aoData[ rows[0][0] ]; + + rows.remove(); + + if ( callback ) { + callback.call( this, settings, data ); + } + + if ( redraw === undefined || redraw ) { + api.draw(); + } + + return data; + }; + + + /** + * Restore the table to it's original state in the DOM by removing all of DataTables + * enhancements, alterations to the DOM structure of the table and event listeners. + * @param {boolean} [remove=false] Completely remove the table from the DOM + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * // This example is fairly pointless in reality, but shows how fnDestroy can be used + * var oTable = $('#example').dataTable(); + * oTable.fnDestroy(); + * } ); + */ + this.fnDestroy = function ( remove ) + { + this.api( true ).destroy( remove ); + }; + + + /** + * Redraw the table + * @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Re-draw the table - you wouldn't want to do it here, but it's an example :-) + * oTable.fnDraw(); + * } ); + */ + this.fnDraw = function( complete ) + { + // Note that this isn't an exact match to the old call to _fnDraw - it takes + // into account the new data, but can hold position. + this.api( true ).draw( complete ); + }; + + + /** + * Filter the input based on data + * @param {string} sInput String to filter the table on + * @param {int|null} [iColumn] Column to limit filtering to + * @param {bool} [bRegex=false] Treat as regular expression or not + * @param {bool} [bSmart=true] Perform smart filtering or not + * @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es) + * @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false) + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sometime later - filter... + * oTable.fnFilter( 'test string' ); + * } ); + */ + this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive ) + { + var api = this.api( true ); + + if ( iColumn === null || iColumn === undefined ) { + api.search( sInput, bRegex, bSmart, bCaseInsensitive ); + } + else { + api.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive ); + } + + api.draw(); + }; + + + /** + * Get the data for the whole table, an individual row or an individual cell based on the + * provided parameters. + * @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as + * a TR node then the data source for the whole row will be returned. If given as a + * TD/TH cell node then iCol will be automatically calculated and the data for the + * cell returned. If given as an integer, then this is treated as the aoData internal + * data index for the row (see fnGetPosition) and the data for that row used. + * @param {int} [col] Optional column index that you want the data of. + * @returns {array|object|string} If mRow is undefined, then the data for all rows is + * returned. If mRow is defined, just data for that row, and is iCol is + * defined, only data for the designated cell is returned. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * // Row data + * $(document).ready(function() { + * oTable = $('#example').dataTable(); + * + * oTable.$('tr').click( function () { + * var data = oTable.fnGetData( this ); + * // ... do something with the array / object of data for the row + * } ); + * } ); + * + * @example + * // Individual cell data + * $(document).ready(function() { + * oTable = $('#example').dataTable(); + * + * oTable.$('td').click( function () { + * var sData = oTable.fnGetData( this ); + * alert( 'The cell clicked on had the value of '+sData ); + * } ); + * } ); + */ + this.fnGetData = function( src, col ) + { + var api = this.api( true ); + + if ( src !== undefined ) { + var type = src.nodeName ? src.nodeName.toLowerCase() : ''; + + return col !== undefined || type == 'td' || type == 'th' ? + api.cell( src, col ).data() : + api.row( src ).data() || null; + } + + return api.data().toArray(); + }; + + + /** + * Get an array of the TR nodes that are used in the table's body. Note that you will + * typically want to use the '$' API method in preference to this as it is more + * flexible. + * @param {int} [iRow] Optional row index for the TR element you want + * @returns {array|node} If iRow is undefined, returns an array of all TR elements + * in the table's body, or iRow is defined, just the TR element requested. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Get the nodes from the table + * var nNodes = oTable.fnGetNodes( ); + * } ); + */ + this.fnGetNodes = function( iRow ) + { + var api = this.api( true ); + + return iRow !== undefined ? + api.row( iRow ).node() : + api.rows().nodes().flatten().toArray(); + }; + + + /** + * Get the array indexes of a particular cell from it's DOM element + * and column index including hidden columns + * @param {node} node this can either be a TR, TD or TH in the table's body + * @returns {int} If nNode is given as a TR, then a single index is returned, or + * if given as a cell, an array of [row index, column index (visible), + * column index (all)] is given. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * $('#example tbody td').click( function () { + * // Get the position of the current data from the node + * var aPos = oTable.fnGetPosition( this ); + * + * // Get the data array for this row + * var aData = oTable.fnGetData( aPos[0] ); + * + * // Update the data array and return the value + * aData[ aPos[1] ] = 'clicked'; + * this.innerHTML = 'clicked'; + * } ); + * + * // Init DataTables + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnGetPosition = function( node ) + { + var api = this.api( true ); + var nodeName = node.nodeName.toUpperCase(); + + if ( nodeName == 'TR' ) { + return api.row( node ).index(); + } + else if ( nodeName == 'TD' || nodeName == 'TH' ) { + var cell = api.cell( node ).index(); + + return [ + cell.row, + cell.columnVisible, + cell.column + ]; + } + return null; + }; + + + /** + * Check to see if a row is 'open' or not. + * @param {node} nTr the table row to check + * @returns {boolean} true if the row is currently open, false otherwise + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnIsOpen = function( nTr ) + { + return this.api( true ).row( nTr ).child.isShown(); + }; + + + /** + * This function will place a new row directly after a row which is currently + * on display on the page, with the HTML contents that is passed into the + * function. This can be used, for example, to ask for confirmation that a + * particular record should be deleted. + * @param {node} nTr The table row to 'open' + * @param {string|node|jQuery} mHtml The HTML to put into the row + * @param {string} sClass Class to give the new TD cell + * @returns {node} The row opened. Note that if the table row passed in as the + * first parameter, is not found in the table, this method will silently + * return. + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable; + * + * // 'open' an information row when a row is clicked on + * $('#example tbody tr').click( function () { + * if ( oTable.fnIsOpen(this) ) { + * oTable.fnClose( this ); + * } else { + * oTable.fnOpen( this, "Temporary row opened", "info_row" ); + * } + * } ); + * + * oTable = $('#example').dataTable(); + * } ); + */ + this.fnOpen = function( nTr, mHtml, sClass ) + { + return this.api( true ) + .row( nTr ) + .child( mHtml, sClass ) + .show() + .child()[0]; + }; + + + /** + * Change the pagination - provides the internal logic for pagination in a simple API + * function. With this function you can have a DataTables table go to the next, + * previous, first or last pages. + * @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last" + * or page number to jump to (integer), note that page 0 is the first page. + * @param {bool} [bRedraw=true] Redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * oTable.fnPageChange( 'next' ); + * } ); + */ + this.fnPageChange = function ( mAction, bRedraw ) + { + var api = this.api( true ).page( mAction ); + + if ( bRedraw === undefined || bRedraw ) { + api.draw(false); + } + }; + + + /** + * Show a particular column + * @param {int} iCol The column whose display should be changed + * @param {bool} bShow Show (true) or hide (false) the column + * @param {bool} [bRedraw=true] Redraw the table or not + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Hide the second column after initialisation + * oTable.fnSetColumnVis( 1, false ); + * } ); + */ + this.fnSetColumnVis = function ( iCol, bShow, bRedraw ) + { + var api = this.api( true ).column( iCol ).visible( bShow ); + + if ( bRedraw === undefined || bRedraw ) { + api.columns.adjust().draw(); + } + }; + + + /** + * Get the settings for a particular table for external manipulation + * @returns {object} DataTables settings object. See + * {@link DataTable.models.oSettings} + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * var oSettings = oTable.fnSettings(); + * + * // Show an example parameter from the settings + * alert( oSettings._iDisplayStart ); + * } ); + */ + this.fnSettings = function() + { + return _fnSettingsFromNode( this[_ext.iApiIndex] ); + }; + + + /** + * Sort the table by a particular column + * @param {int} iCol the data index to sort on. Note that this will not match the + * 'display index' if you have hidden data entries + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sort immediately with columns 0 and 1 + * oTable.fnSort( [ [0,'asc'], [1,'asc'] ] ); + * } ); + */ + this.fnSort = function( aaSort ) + { + this.api( true ).order( aaSort ).draw(); + }; + + + /** + * Attach a sort listener to an element for a given column + * @param {node} nNode the element to attach the sort listener to + * @param {int} iColumn the column that a click on this node will sort on + * @param {function} [fnCallback] callback function when sort is run + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * + * // Sort on column 1, when 'sorter' is clicked on + * oTable.fnSortListener( document.getElementById('sorter'), 1 ); + * } ); + */ + this.fnSortListener = function( nNode, iColumn, fnCallback ) + { + this.api( true ).order.listener( nNode, iColumn, fnCallback ); + }; + + + /** + * Update a table cell or row - this method will accept either a single value to + * update the cell with, an array of values with one element for each column or + * an object in the same format as the original data source. The function is + * self-referencing in order to make the multi column updates easier. + * @param {object|array|string} mData Data to update the cell/row with + * @param {node|int} mRow TR element you want to update or the aoData index + * @param {int} [iColumn] The column to update, give as null or undefined to + * update a whole row. + * @param {bool} [bRedraw=true] Redraw the table or not + * @param {bool} [bAction=true] Perform pre-draw actions or not + * @returns {int} 0 on success, 1 on error + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell + * oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row + * } ); + */ + this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction ) + { + var api = this.api( true ); + + if ( iColumn === undefined || iColumn === null ) { + api.row( mRow ).data( mData ); + } + else { + api.cell( mRow, iColumn ).data( mData ); + } + + if ( bAction === undefined || bAction ) { + api.columns.adjust(); + } + + if ( bRedraw === undefined || bRedraw ) { + api.draw(); + } + return 0; + }; + + + /** + * Provide a common method for plug-ins to check the version of DataTables being used, in order + * to ensure compatibility. + * @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the + * formats "X" and "X.Y" are also acceptable. + * @returns {boolean} true if this version of DataTables is greater or equal to the required + * version, or false if this version of DataTales is not suitable + * @method + * @dtopt API + * @deprecated Since v1.10 + * + * @example + * $(document).ready(function() { + * var oTable = $('#example').dataTable(); + * alert( oTable.fnVersionCheck( '1.9.0' ) ); + * } ); + */ + this.fnVersionCheck = _ext.fnVersionCheck; + + + var _that = this; + var emptyInit = options === undefined; + var len = this.length; + + if ( emptyInit ) { + options = {}; + } + + this.oApi = this.internal = _ext.internal; + + // Extend with old style plug-in API methods + for ( var fn in DataTable.ext.internal ) { + if ( fn ) { + this[fn] = _fnExternApiFunc(fn); + } + } + + this.each(function() { + // For each initialisation we want to give it a clean initialisation + // object that can be bashed around + var o = {}; + var oInit = len > 1 ? // optimisation for single table case + _fnExtend( o, options, true ) : + options; + + /*global oInit,_that,emptyInit*/ + var i=0, iLen, j, jLen, k, kLen; + var sId = this.getAttribute( 'id' ); + var bInitHandedOff = false; + var defaults = DataTable.defaults; + var $this = $(this); + + + /* Sanity check */ + if ( this.nodeName.toLowerCase() != 'table' ) + { + _fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 ); + return; + } + + /* Backwards compatibility for the defaults */ + _fnCompatOpts( defaults ); + _fnCompatCols( defaults.column ); + + /* Convert the camel-case defaults to Hungarian */ + _fnCamelToHungarian( defaults, defaults, true ); + _fnCamelToHungarian( defaults.column, defaults.column, true ); + + /* Setting up the initialisation object */ + _fnCamelToHungarian( defaults, $.extend( oInit, $this.data() ) ); + + + + /* Check to see if we are re-initialising a table */ + var allSettings = DataTable.settings; + for ( i=0, iLen=allSettings.length ; i').appendTo($this); + } + oSettings.nTHead = thead[0]; + + var tbody = $this.children('tbody'); + if ( tbody.length === 0 ) { + tbody = $('').appendTo($this); + } + oSettings.nTBody = tbody[0]; + + var tfoot = $this.children('tfoot'); + if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) { + // If we are a scrolling table, and no footer has been given, then we need to create + // a tfoot element for the caption element to be appended to + tfoot = $('').appendTo($this); + } + + if ( tfoot.length === 0 || tfoot.children().length === 0 ) { + $this.addClass( oClasses.sNoFooter ); + } + else if ( tfoot.length > 0 ) { + oSettings.nTFoot = tfoot[0]; + _fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot ); + } + + /* Check if there is data passing into the constructor */ + if ( oInit.aaData ) { + for ( i=0 ; i/g; + + // This is not strict ISO8601 - Date.parse() is quite lax, although + // implementations differ between browsers. + var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/; + + // Escape regular expression special characters + var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); + + // http://en.wikipedia.org/wiki/Foreign_exchange_market + // - \u20BD - Russian ruble. + // - \u20a9 - South Korean Won + // - \u20BA - Turkish Lira + // - \u20B9 - Indian Rupee + // - R - Brazil (R$) and South Africa + // - fr - Swiss Franc + // - kr - Swedish krona, Norwegian krone and Danish krone + // - \u2009 is thin space and \u202F is narrow no-break space, both used in many + // standards as thousands separators. + var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; + + + var _empty = function ( d ) { + return !d || d === true || d === '-' ? true : false; + }; + + + var _intVal = function ( s ) { + var integer = parseInt( s, 10 ); + return !isNaN(integer) && isFinite(s) ? integer : null; + }; + + // Convert from a formatted number with characters other than `.` as the + // decimal place, to a Javascript number + var _numToDecimal = function ( num, decimalPoint ) { + // Cache created regular expressions for speed as this function is called often + if ( ! _re_dic[ decimalPoint ] ) { + _re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' ); + } + return typeof num === 'string' && decimalPoint !== '.' ? + num.replace( /\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) : + num; + }; + + + var _isNumber = function ( d, decimalPoint, formatted ) { + var strType = typeof d === 'string'; + + // If empty return immediately so there must be a number if it is a + // formatted string (this stops the string "k", or "kr", etc being detected + // as a formatted number for currency + if ( _empty( d ) ) { + return true; + } + + if ( decimalPoint && strType ) { + d = _numToDecimal( d, decimalPoint ); + } + + if ( formatted && strType ) { + d = d.replace( _re_formatted_numeric, '' ); + } + + return !isNaN( parseFloat(d) ) && isFinite( d ); + }; + + + // A string without HTML in it can be considered to be HTML still + var _isHtml = function ( d ) { + return _empty( d ) || typeof d === 'string'; + }; + + + var _htmlNumeric = function ( d, decimalPoint, formatted ) { + if ( _empty( d ) ) { + return true; + } + + var html = _isHtml( d ); + return ! html ? + null : + _isNumber( _stripHtml( d ), decimalPoint, formatted ) ? + true : + null; + }; + + + var _pluck = function ( a, prop, prop2 ) { + var out = []; + var i=0, ien=a.length; + + // Could have the test in the loop for slightly smaller code, but speed + // is essential here + if ( prop2 !== undefined ) { + for ( ; i') + .css( { + position: 'fixed', + top: 0, + left: $(window).scrollLeft()*-1, // allow for scrolling + height: 1, + width: 1, + overflow: 'hidden' + } ) + .append( + $('
') + .css( { + position: 'absolute', + top: 1, + left: 1, + width: 100, + overflow: 'scroll' + } ) + .append( + $('
') + .css( { + width: '100%', + height: 10 + } ) + ) + ) + .appendTo( 'body' ); + + var outer = n.children(); + var inner = outer.children(); + + // Numbers below, in order, are: + // inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth + // + // IE6 XP: 100 100 100 83 + // IE7 Vista: 100 100 100 83 + // IE 8+ Windows: 83 83 100 83 + // Evergreen Windows: 83 83 100 83 + // Evergreen Mac with scrollbars: 85 85 100 85 + // Evergreen Mac without scrollbars: 100 100 100 100 + + // Get scrollbar width + browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth; + + // IE6/7 will oversize a width 100% element inside a scrolling element, to + // include the width of the scrollbar, while other browsers ensure the inner + // element is contained without forcing scrolling + browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100; + + // In rtl text layout, some browsers (most, but not all) will place the + // scrollbar on the left, rather than the right. + browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1; + + // IE8- don't provide height and width for getBoundingClientRect + browser.bBounding = n[0].getBoundingClientRect().width ? true : false; + + n.remove(); + } + + $.extend( settings.oBrowser, DataTable.__browser ); + settings.oScroll.iBarWidth = DataTable.__browser.barWidth; + } + + + /** + * Array.prototype reduce[Right] method, used for browsers which don't support + * JS 1.6. Done this way to reduce code size, since we iterate either way + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnReduce ( that, fn, init, start, end, inc ) + { + var + i = start, + value, + isSet = false; + + if ( init !== undefined ) { + value = init; + isSet = true; + } + + while ( i !== end ) { + if ( ! that.hasOwnProperty(i) ) { + continue; + } + + value = isSet ? + fn( value, that[i], i, that ) : + that[i]; + + isSet = true; + i += inc; + } + + return value; + } + + /** + * Add a column to the list used for the table with default values + * @param {object} oSettings dataTables settings object + * @param {node} nTh The th element for this column + * @memberof DataTable#oApi + */ + function _fnAddColumn( oSettings, nTh ) + { + // Add column to aoColumns array + var oDefaults = DataTable.defaults.column; + var iCol = oSettings.aoColumns.length; + var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { + "nTh": nTh ? nTh : document.createElement('th'), + "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', + "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], + "mData": oDefaults.mData ? oDefaults.mData : iCol, + idx: iCol + } ); + oSettings.aoColumns.push( oCol ); + + // Add search object for column specific search. Note that the `searchCols[ iCol ]` + // passed into extend can be undefined. This allows the user to give a default + // with only some of the parameters defined, and also not give a default + var searchCols = oSettings.aoPreSearchCols; + searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); + + // Use the default column options function to initialise classes etc + _fnColumnOptions( oSettings, iCol, $(nTh).data() ); + } + + + /** + * Apply options for a column + * @param {object} oSettings dataTables settings object + * @param {int} iCol column index to consider + * @param {object} oOptions object with sType, bVisible and bSearchable etc + * @memberof DataTable#oApi + */ + function _fnColumnOptions( oSettings, iCol, oOptions ) + { + var oCol = oSettings.aoColumns[ iCol ]; + var oClasses = oSettings.oClasses; + var th = $(oCol.nTh); + + // Try to get width information from the DOM. We can't get it from CSS + // as we'd need to parse the CSS stylesheet. `width` option can override + if ( ! oCol.sWidthOrig ) { + // Width attribute + oCol.sWidthOrig = th.attr('width') || null; + + // Style attribute + var t = (th.attr('style') || '').match(/width:\s*(\d+[pxem%]+)/); + if ( t ) { + oCol.sWidthOrig = t[1]; + } + } + + /* User specified column options */ + if ( oOptions !== undefined && oOptions !== null ) + { + // Backwards compatibility + _fnCompatCols( oOptions ); + + // Map camel case parameters to their Hungarian counterparts + _fnCamelToHungarian( DataTable.defaults.column, oOptions ); + + /* Backwards compatibility for mDataProp */ + if ( oOptions.mDataProp !== undefined && !oOptions.mData ) + { + oOptions.mData = oOptions.mDataProp; + } + + if ( oOptions.sType ) + { + oCol._sManualType = oOptions.sType; + } + + // `class` is a reserved word in Javascript, so we need to provide + // the ability to use a valid name for the camel case input + if ( oOptions.className && ! oOptions.sClass ) + { + oOptions.sClass = oOptions.className; + } + if ( oOptions.sClass ) { + th.addClass( oOptions.sClass ); + } + + $.extend( oCol, oOptions ); + _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); + + /* iDataSort to be applied (backwards compatibility), but aDataSort will take + * priority if defined + */ + if ( oOptions.iDataSort !== undefined ) + { + oCol.aDataSort = [ oOptions.iDataSort ]; + } + _fnMap( oCol, oOptions, "aDataSort" ); + } + + /* Cache the data get and set functions for speed */ + var mDataSrc = oCol.mData; + var mData = _fnGetObjectDataFn( mDataSrc ); + var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; + + var attrTest = function( src ) { + return typeof src === 'string' && src.indexOf('@') !== -1; + }; + oCol._bAttrSrc = $.isPlainObject( mDataSrc ) && ( + attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter) + ); + oCol._setter = null; + + oCol.fnGetData = function (rowData, type, meta) { + var innerData = mData( rowData, type, undefined, meta ); + + return mRender && type ? + mRender( innerData, type, rowData, meta ) : + innerData; + }; + oCol.fnSetData = function ( rowData, val, meta ) { + return _fnSetObjectDataFn( mDataSrc )( rowData, val, meta ); + }; + + // Indicate if DataTables should read DOM data as an object or array + // Used in _fnGetRowElements + if ( typeof mDataSrc !== 'number' ) { + oSettings._rowReadObject = true; + } + + /* Feature sorting overrides column specific when off */ + if ( !oSettings.oFeatures.bSort ) + { + oCol.bSortable = false; + th.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called + } + + /* Check that the class assignment is correct for sorting */ + var bAsc = $.inArray('asc', oCol.asSorting) !== -1; + var bDesc = $.inArray('desc', oCol.asSorting) !== -1; + if ( !oCol.bSortable || (!bAsc && !bDesc) ) + { + oCol.sSortingClass = oClasses.sSortableNone; + oCol.sSortingClassJUI = ""; + } + else if ( bAsc && !bDesc ) + { + oCol.sSortingClass = oClasses.sSortableAsc; + oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; + } + else if ( !bAsc && bDesc ) + { + oCol.sSortingClass = oClasses.sSortableDesc; + oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; + } + else + { + oCol.sSortingClass = oClasses.sSortable; + oCol.sSortingClassJUI = oClasses.sSortJUI; + } + } + + + /** + * Adjust the table column widths for new data. Note: you would probably want to + * do a redraw after calling this function! + * @param {object} settings dataTables settings object + * @memberof DataTable#oApi + */ + function _fnAdjustColumnSizing ( settings ) + { + /* Not interested in doing column width calculation if auto-width is disabled */ + if ( settings.oFeatures.bAutoWidth !== false ) + { + var columns = settings.aoColumns; + + _fnCalculateColumnWidths( settings ); + for ( var i=0 , iLen=columns.length ; i